Quantcast
Channel: Microsoft Dynamics AX
Viewing all 131213 articles
Browse latest View live

Blog Post: AX 2012 R2 for Retail - Setting up discount coupons with bar codes for scanning into POS

$
0
0

The release of R2 for AX 2012 has added 2 new fields (discount code and bar code) to the Discounts form in the Retail module.  This now gives us the ability to scan or type in a coupon/discount barcode directly into POS.  The steps below are performed on the general Discounts, but the same steps would apply for Mix and Match Discounts and Quantity Discounts.  The only difference would be how the items are configured for discounts in the Lines sections of each setup.  

1.  Set up the bar code masking:  Retail > Setup > Bar codes and labels > Bar code mask setup (Example setup)

     a. Mask ID = DiscCode

     b. Description = Discount Code Bar Code

     c. In the Type field, select Discount Code

     d. Set up the Masking configurations (Example configuration below)

         i. Barcode standard = Code 39

         ii. Mask Prefix = 44

         iii. Bar code mask segment

               1. Type = Discount Code

               2. Length = 10

               3. Character = T

         NOTE: When this barcode is scanned into POS, it uses this prefix and segment to identify the entry as a discount. 

2. Set up a specific discount/coupon:  Retail > Common > Pricing and Discounts > Discounts

     a. Fill in the Discount and Name fields.

     b. Enter currency: USD

     c. Select a Price Group, or create a new one. (SP 01)

     c. Enter a Discount Code (MITT2013)

     d. This auto-creates the barcode based on our discount code bar code in step 1 (4400MITT2013)

     c. Under Lines click Add

          i. Add a product (0017 - Youth Catchers Mitt)

          ii. Select a Discount Method = Discount percentage

          iii. Enter the amount in the corresponding field. (Discount percentage = 10)

     d. Lastly, change the Status to Enabled

     e. Close out of the discounts form

 

3. Add the Price Group to your store:  Retail > Common > Retail Channels > Retail Stores

     a. Select your store (S0001)

     b. Click Price Groups

     c. Click New

     d. Select the price group used in Step 2.c from the dropdown menu. (SP 01)

4. Sync over your changes:  Retail > Periodic > Data Distribution > Distribution Schedule

     a. Run the N-1020 (Discount) to sync over the discounts

     b. If Step 3 was performed to add the Price Group to the store, then run the N-1070 (Stores and tenders)

5. Log into POS

6. Add item 0017

7. Scan or type in the discount barcode (4400MITT2013)

8. You will see the discount (MITT2013) applied to the line item associated with that discount.

 

 


Blog Post: AX 2012 R2 for Retail - Setting up discount coupons with bar codes for scanning into POS

$
0
0

The release of R2 for AX 2012 has added 2 new fields (discount code and bar code) to the Discounts form in the Retail module.  This now gives us the ability to scan or type in a coupon/discount barcode directly into POS.  The steps below are performed on the general Discounts, but the same steps would apply for Mix and Match Discounts and Quantity Discounts.  The only difference would be how the items are configured for discounts in the Lines sections of each setup.  

1.  Set up the bar code masking:  Retail > Setup > Bar codes and labels > Bar code mask setup (Example setup)

     a. Mask ID = DiscCode

     b. Description = Discount Code Bar Code

     c. In the Type field, select Discount Code

     d. Set up the Masking configurations (Example configuration below)

         i. Barcode standard = Code 39

         ii. Mask Prefix = 44

         iii. Bar code mask segment

               1. Type = Discount Code

               2. Length = 10

               3. Character = T

         NOTE: When this barcode is scanned into POS, it uses this prefix and segment to identify the entry as a discount. 

2. Set up a specific discount/coupon:  Retail > Common > Pricing and Discounts > Discounts

     a. Fill in the Discount and Name fields.

     b. Enter currency: USD

     c. Select a Price Group, or create a new one. (SP 01)

     c. Enter a Discount Code (MITT2013)

     d. This auto-creates the barcode based on our discount code bar code in step 1 (4400MITT2013)

     c. Under Lines click Add

          i. Add a product (0017 - Youth Catchers Mitt)

          ii. Select a Discount Method = Discount percentage

          iii. Enter the amount in the corresponding field. (Discount percentage = 10)

     d. Lastly, change the Status to Enabled

     e. Close out of the discounts form

 

3. Add the Price Group to your store:  Retail > Common > Retail Channels > Retail Stores

     a. Select your store (S0001)

     b. Click Price Groups

     c. Click New

     d. Select the price group used in Step 2.c from the dropdown menu. (SP 01)

4. Sync over your changes:  Retail > Periodic > Data Distribution > Distribution Schedule

     a. Run the N-1020 (Discount) to sync over the discounts

     b. If Step 3 was performed to add the Price Group to the store, then run the N-1070 (Stores and tenders)

5. Log into POS

6. Add item 0017

7. Scan or type in the discount barcode (4400MITT2013)

8. You will see the discount (MITT2013) applied to the line item associated with that discount.

 

 

Blog Post: Manufacturing Companies Relying on Dynamics AX to Allow Employees to Devote More Time to Strategic Work

$
0
0

Nearly a year ago, I wrote a blog in response to reading McGladrey’s Manufacturing and Distribution Monitor, Microsoft Dynamics AX Activity Reaffirms Positive News on the Economy, that focused on the parallels between McGladrey’s survey of mid-market executives and my personal observations in the ERP Marketplace. I was reading this morning’s press release of the McGladrey Manufacturing & Distribution Monitor Update and I once again began drawing lines between the responses executives gave on questions regarding market outlook and the ways our Microsoft Dynamics AX professionals are being asked to help our clients.

Much of the press release on the report focused on the unfavorable comparisons between the survey responses from the Spring of 2012 and the newest release. For sure, executives of mid-market manufacturing and distribution companies have a much less optimistic outlook than they did less than a year ago. However, being that I focus on how this would affect how our clients might want to utilize their Microsoft Dynamics AX2012 ERP system, I keyed in on two of the overriding themes in the report:

  1. Low Expectations for Adding New Employees
  2. Although with Lowered Expectations, Still Projecting Increases in Sales

Coupled together, those two trends mean that the same number of employees will be asked to accomplish more in a market that is still struggling to get back to prosperity. When executives consider this situation, the smart move is to shift the focus of your best people to spend more time on strategic endeavors and automate the more repetitive, non-value-added tasks. It only makes sense that if you do not have the ability to increase headcount, but do want to put more effort into growth, you need to replace some of the more time consuming activities with programmatic processes.

Considering that McGladrey’s Microsoft Dynamics AX team is continuously and increasingly, being counted on to deliver solutions related to this scenario, the findings of the new report come as no surprise. Here are some examples of work we have done in the last few months alone for our valued clients:

  1. Replaced a manual Travel and Expense Reimbursement System with Microsoft Dynamics AX2012 Expense Module. Utilizing the web-based employee portal for report entry, expense rules, and workflow for approval, we have eliminated the paper trail, reduced manual checks, and automated the payment process.
  2. Implemented a Purchase Order Approval system integrated with workflow and company e-mail. This allows all purchase requests to, based on limits and department, be automated to the proper approver and be approved with the click of a mouse.
  3. Replaced a manual asset tracking system with Dynamics AX’s Fixed Asset Module. Previously, firm had worked offline with a 3rd party accounting firm to provide direction on depreciation values each month. Implementing the module with the proper data and rules turned running depreciation into an instant process each month.
  4. Set-Up Multi-National Consolidated Reporting in AX2012. Previously overseas entities had been consolidated offline in Excel. By adding the additional legal entities into AX and uploading a monthly trial balance, the consolidation was automatic.

The overriding theme of all of these improvements and many other projects we have done is replacing a repetitive daily, weekly, or monthly task with an automated system. These simple process changes have freed up numerous employees to focus on what their executives need them to: strategy and growth.

By: John Hannan, McGladrey – New York Microsoft Dynamics AX Partner

Blog Post: Manufacturing Companies Relying on Dynamics AX to Allow Employees to Devote More Time to Strategic Work

$
0
0

Nearly a year ago, I wrote a blog in response to reading McGladrey’s Manufacturing and Distribution Monitor, Microsoft Dynamics AX Activity Reaffirms Positive News on the Economy, that focused on the parallels between McGladrey’s survey of mid-market executives and my personal observations in the ERP Marketplace. I was reading this morning’s press release of the McGladrey Manufacturing & Distribution Monitor Update and I once again began drawing lines between the responses executives gave on questions regarding market outlook and the ways our Microsoft Dynamics AX professionals are being asked to help our clients.

Much of the press release on the report focused on the unfavorable comparisons between the survey responses from the Spring of 2012 and the newest release. For sure, executives of mid-market manufacturing and distribution companies have a much less optimistic outlook than they did less than a year ago. However, being that I focus on how this would affect how our clients might want to utilize their Microsoft Dynamics AX2012 ERP system, I keyed in on two of the overriding themes in the report:

  1. Low Expectations for Adding New Employees
  2. Although with Lowered Expectations, Still Projecting Increases in Sales

Coupled together, those two trends mean that the same number of employees will be asked to accomplish more in a market that is still struggling to get back to prosperity. When executives consider this situation, the smart move is to shift the focus of your best people to spend more time on strategic endeavors and automate the more repetitive, non-value-added tasks. It only makes sense that if you do not have the ability to increase headcount, but do want to put more effort into growth, you need to replace some of the more time consuming activities with programmatic processes.

Considering that McGladrey’s Microsoft Dynamics AX team is continuously and increasingly, being counted on to deliver solutions related to this scenario, the findings of the new report come as no surprise. Here are some examples of work we have done in the last few months alone for our valued clients:

  1. Replaced a manual Travel and Expense Reimbursement System with Microsoft Dynamics AX2012 Expense Module. Utilizing the web-based employee portal for report entry, expense rules, and workflow for approval, we have eliminated the paper trail, reduced manual checks, and automated the payment process.
  2. Implemented a Purchase Order Approval system integrated with workflow and company e-mail. This allows all purchase requests to, based on limits and department, be automated to the proper approver and be approved with the click of a mouse.
  3. Replaced a manual asset tracking system with Dynamics AX’s Fixed Asset Module. Previously, firm had worked offline with a 3rd party accounting firm to provide direction on depreciation values each month. Implementing the module with the proper data and rules turned running depreciation into an instant process each month.
  4. Set-Up Multi-National Consolidated Reporting in AX2012. Previously overseas entities had been consolidated offline in Excel. By adding the additional legal entities into AX and uploading a monthly trial balance, the consolidation was automatic.

The overriding theme of all of these improvements and many other projects we have done is replacing a repetitive daily, weekly, or monthly task with an automated system. These simple process changes have freed up numerous employees to focus on what their executives need them to: strategy and growth.

By: John Hannan, McGladrey – New York Microsoft Dynamics AX Partner

Forum Post: Change access level at runtime/XDS AX 2012

$
0
0

Requirement:

Per user define access lever to Customer accounts by customer group.

Example:

User01 has read access to CustGroup A & B, updateaccess to groups C & D and no access to groups E & F.   A new table stores the association between UserId, CustGroupId, and AccessLevel.

I understand how the security policy can prevent the user form CRUD for groups E & F.  I don't see a mechanism for changing/assigning access level.

Thanks for your help and/or advice! 

Forum Post: Affordable Care Act - how do you implement it?

$
0
0

Hello I work for an Italian company manufacturing biomedical devides. Our US subsidiary is telling us they need the "Obamacae" (Affordable Care Act) tax line. 

ANyone has made a nice solution for this?

Thanks

Forum Post: Error 32769 when running P job in dynamics ax 2012 FP

$
0
0

When i run the P-job, i get the following error at the event viewr of the AXserver:

"[11:14:40] asitha indrajith: 2013.1.26 13:12:51:200 (9796) [1] CCommMgr::HandleException: Target request handler failed to process target request header: Microsoft.Dynamics.Retail.StoreConnect.Request.SQLHandler.SCSqlRequestHandlerException: SQL target request handler failed to process request: SQL operation failure. ---> System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'RECID', table 'AX_hmp_2012.dbo.RETAILTRANSACTIONINFOCODETRANS'; column does not allow nulls. INSERT fails.

The statement has been terminated.

   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)

   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)

   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()

   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)

   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)

   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

   at Microsoft.Dynamics.Retail.StoreConnect.Request.SQLHandler.SCSqlWriteRequestRunner.Run(SqlConnection connection, SqlTransaction transaction)

   at Microsoft.Dynamics.Retail.StoreConnect.Request.SQLHandler.SCSqlTargetRequestHandler.ProcessWriteRequest(SqlConnection connection, SqlTransaction transaction)

   at Microsoft.Dynamics.Retail.StoreConnect.Request.SQLHandler.SCSqlTargetRequestHandler.ProcessTargetRequestHeader(ISCTargetRequestHeader targetRequestHeader)

   --- End of inner exception stack trace ---

   at Microsoft.Dynamics.Retail.StoreConnect.Request.SQLHandler.SCSqlTargetRequestHandler.ProcessTargetRequestHeader(ISCTargetRequestHeader targetRequestHeader)

   at CCommMgr.ProcessTargetRequest(CCommMgr* , basic_string<wchar_t\,std::char_traits<wchar_t>\,std::allocator<wchar_t> >* r_file_path, SCRequestHandlerManager scRequestHandlerManager) "

 

N-Jobs,A-Jobs are running properly.

 

Thank you

 

Blog Post: The Problems with SSRS

$
0
0

SSRS is a great (and most importantly free) reporting writing tool and its inclusion into the Dynamics framework is an obvious and natural progression for Microsoft.

 

** However **

 

When it comes to things like creating data-merged documents for “print-publishing”; SSRS has its serious limitations. The developer faces numerous challenges when attempting to replicate “professional” customer-facing documentation. Things like “duplex-printing” (for terms and conditions on reverse) or “page-sequence-masters” (for interspersed cover letters) or even changing the “page-orientation” in the middle of a print run (for portrait to landscape pagination) are almost impossible to achieve in SSRS.

 

Q: “Why would you want to do all those crazy things in a report-writer?”

 

A: Well, customer-facing documentation often needs to utilise use of “all-of-the-above” in order to produce professional documentation to send to the customer. The standard out-of-the-box report offerings for things like packing slips, credit control letters or even invoices often do not meet the high-standards required for most firms. Inevitably most of these processes are “farmed-out” to 3rd party print providers.

 

·         For example, when you receive your utility-bill you will often open a nice cover letter requesting payment, followed by an invoice and remittance advice. Each of the pages may be oriented differently (e.g. cover letter being portrait and remaining pages landscape). There maybe contractual terms and conditions printed on the reverse-side of the invoice, and the invoice may spill over several pages. You may even receive a remittance advice offering you different ways to pay along with a tear off bank-giro slip for your convenience.

 

All of this is extremely hard to do in SSRS, especially if it has to be done in “one-print-run”.

 

As an X++ developer there are some workarounds and you can now do some pretty clever stuff, but you can’t do everything required to replicate a true desktop-publishing application. The conventional approach would be to output an SSRS genared PDF page for every unit of data within your print-run and then collate these pages with any that need to print in duplex and sequence them with any associated “inserts”… complicate stuff!

 

The fundamental problem with this approach is that you can’t control page overflow. As soon as SSRS hits the print limit boundary it will initiate overflow-handling and attempt to finalise the print according to the way that spillover pages have been defined. There is nothing that can be done to tell the SSRS engine that it needs to stop printing the current PDF and start a new one (to allow for "page-inserts").

 

Even considering the alternative of using Dynamics Office Integration doesn't work as dynamic data merging cannot take place into documents that must retain their fixed format. At the moment the "out-of-the-box" merge functions are not clever enough to reformat the overflow page when data exceeds its print boundaries (merge regions simply re-size dynamically). This means that a table will simply extend onto a new page instead of re-initialising the page and flowing into the original print region (defined on its predecessor).

 

What I hope to do in my next post is to show how we can overcome these problems using WPF. The work to create a WPF "fixed-format-document" is more extensive, but its not complex and it means we can overcome all of the obstacles identified in this article.

 

Until next post…

 

REGARDS

 

 

 

 


Forum Post: Re: AX2012 Report appearing empty

$
0
0

Hey Marc, were you able to sort out the empty report issue at your end. I am getting some of the reports like PSAPurchaseOrder, VendInvoiceDocument as empty while other reports are giving data.

I have tried everything mentioned in this thread but it did not work. Please help.

Blog Post: Avoid LightSwitch URI Casing Issue Using the URL Rewrite Module

$
0
0

Late last year, some customers on the LightSwitch forums started reporting an issue that certain situations would cause an error with the message:

“The context is already tracking a different entity with the same resource Uri.”

or

“An error occurred while processing this request.” 

One of the ways that this could repro was if the user changed a value on the first page of records on an editable grid form, went to the next page (without saving first) then paged back to the previous page.  When this happened, the record would appear with its old value and wouldn’t have the * next to it to indicate that the record was modified.  If you hit Save at this point, you’d get an error that read “An error occurred while processing this request”.  The problem wouldn’t repro all the time for all users (always fun times for a tester), but we eventually figured out that the problem would occur if the casing of the application name differed between what the user had entered in the browser and what the application had been named on the IIS Server.

For example, if I had deployed my LightSwitch app by setting the Site/Application field in the publish wizard like this:

image

 

…then the application would have the casing “SchoolBooks” on the web server and entities returned from the server would have this casing in their URI.  If a client uses the URL http://myserver/SchoolBooks to launch the application, everything goes swimmingly and users won’t hit the errors mentioned above.  If, however, the user entered http://myserver/schoolbooks (all lowercase) then the trouble starts.

The issue is not specific to LightSwitch and the underlying cause is a well-known issue in the WCF Data Services stack regarding case sensitivity.  At the time we found the issue being reported on the LightSwitch forums, our guidance was to make sure the users entered the correctly cased URL when launching the application.  This obviously is less than ideal as you have no control over what users will enter.

One way to assure that the client does supply the correct URL when the application is launched is to use the IIS URL Rewrite Module.  This module can do all kinds of cool stuff, but for our purposes it can help us by redirecting requests that come in with the “wrong” casing to the one we want.  It does this by using a system that allows the administrator to define a set of rules to detect incoming URLs and rewrite or redirect them, in certain situations.

First, install the module so you can use it in IIS (note that you need IIS 7.0 or higher).  After installing, open IIS Manager, click on the website that you need to create the redirect rule for:

image

 

You should now see “URL Rewrite” in the “IIS” section of the features pane, double-click on it…

image

 

…then pick “Add Rule(s)” under the “Actions” pane on the far right:

image

 

On the “Add Rule(s)” dialog, pick “Blank rule” from the “Inbound rules” section and hit OK

image

 

Now we’ll fill out the info for the rule.  First, name the rule (I’ll just name mine the name of my app) and enter the pattern as I have done below:

image

 

The Pattern field is where we put the regular expression that we want to match on.  Note that since we created this rule at the “Default Web Site” level, the URL that we’re checking will be relative to that (i.e. we don’t have to worry about the web site name, only what comes after the initial slash).  The pattern that I have entered above means that it will match when the URL begins with “schoolbooks” (case insensitive, since “Ignore case” is checked).  The (.*) at the end will capture the remaining string in the URL (we’ll need that later when we specify our redirect URL).

We now need to enter a “Condition” to our rule.  The condition needs to tell the rule to “fail” when the URL starts with exactly “SchoolBooks” (i.e. we don’t want to redirect if “SchoolBooks” was hit, either through the user typing the right URL or through our initial redirect").

In the “Conditions” section, hit the “Add…” button:

image

 

Enter the following in the “Add Condition” dialog and hit OK:

image

 

What this is saying is that the rule should only be enforced if {R:1} (the first capture group in our regular expression, which will be the “schoolbooks” part of the URL) does not exactly match “SchoolBooks” (case sensitive since “Ignore case” is unchecked").

So again, the rule will run if the URL is “http://myserver/schoolbooks”, but will not if it is “http://myserver/SchoolBooks”

Lastly, we need to specify what to do if the rule detects the wrongly cased URL.

In the “Action” section, change the “Action type” to “Redirect” and enter the following in the “Redirect URL” field:

image

 

So this means that we’ll redirect to the URL that is “SchoolBooks” + whatever came after the “schoolbooks” part of the initial URL.

If our URL was “http://myserver/schoolbooks/default.htm”

{R:1} = “schoolbooks”

{R:2} = “/default.htm”

…so our final redirect URL will be “http://myserver/SchoolBooks/default.htm”

 

Now just hit the “Apply” button in the “Actions” pane and you’re done.

image

 

Now I can see if the rule worked.  If I fire up Fiddler and try to hit http://myserver/schoolbooks/

image

 

I get this in the Response:

image

 

And of course the next request has the right URL

image

 

And, if we created our “Condition” correctly, we don’t keep redirecting to this  URL until the browser gives up (this happened to me a couple times when making these rules because I kept forgetting the colon in {R:1} and {R:2}, turns out those are important).

So that’s it, no more casing problem.  Hope this works for you.

 

Notes:

The problem with casing ONLY applies to the application name.  The website name will automatically get lower-cased by the browser.  So if I type HTTP://MYSERVER/SCHOOLBOOKS in the address bar, the browser will automatically change that to http://myserver/SCHOOLBOOKS

If you deploy your application to a website that is dedicated to this app (i.e. isn’t running other web apps) you can omit the “Application” part of the “Site/Application” field of the publish wizard and just supply the Site part.  The URL for your app will then be http://myserver (no app name, no problem).

LightSwitch apps deployed as an Azure Cloud Service or to an Azure Web Site are deployed in the manner described above, so they don’t have the problem.

If you don’t want to use the URL Rewrite Module and you are publishing to website with multiple applications, your best bet is probably to:

  1. Enter a lowercase name for your Application as users would be more likely to type all lowercase when typing the URL
  2. Send users a shortcut to open the app and advise them to always use that to launch.

Blog Post: Avoid LightSwitch URI Casing Issue Using the URL Rewrite Module

$
0
0

Late last year, some customers on the LightSwitch forums started reporting an issue that certain situations would cause an error with the message:

“The context is already tracking a different entity with the same resource Uri.”

or

“An error occurred while processing this request.” 

One of the ways that this could repro was if the user changed a value on the first page of records on an editable grid form, went to the next page (without saving first) then paged back to the previous page.  When this happened, the record would appear with its old value and wouldn’t have the * next to it to indicate that the record was modified.  If you hit Save at this point, you’d get an error that read “An error occurred while processing this request”.  The problem wouldn’t repro all the time for all users (always fun times for a tester), but we eventually figured out that the problem would occur if the casing of the application name differed between what the user had entered in the browser and what the application had been named on the IIS Server.

For example, if I had deployed my LightSwitch app by setting the Site/Application field in the publish wizard like this:

image

 

…then the application would have the casing “SchoolBooks” on the web server and entities returned from the server would have this casing in their URI.  If a client uses the URL http://myserver/SchoolBooks to launch the application, everything goes swimmingly and users won’t hit the errors mentioned above.  If, however, the user entered http://myserver/schoolbooks (all lowercase) then the trouble starts.

The issue is not specific to LightSwitch and the underlying cause is a well-known issue in the WCF Data Services stack regarding case sensitivity.  At the time we found the issue being reported on the LightSwitch forums, our guidance was to make sure the users entered the correctly cased URL when launching the application.  This obviously is less than ideal as you have no control over what users will enter.

One way to assure that the client does supply the correct URL when the application is launched is to use the IIS URL Rewrite Module.  This module can do all kinds of cool stuff, but for our purposes it can help us by redirecting requests that come in with the “wrong” casing to the one we want.  It does this by using a system that allows the administrator to define a set of rules to detect incoming URLs and rewrite or redirect them, in certain situations.

First, install the module so you can use it in IIS (note that you need IIS 7.0 or higher).  After installing, open IIS Manager, click on the website that you need to create the redirect rule for:

image

 

You should now see “URL Rewrite” in the “IIS” section of the features pane, double-click on it…

image

 

…then pick “Add Rule(s)” under the “Actions” pane on the far right:

image

 

On the “Add Rule(s)” dialog, pick “Blank rule” from the “Inbound rules” section and hit OK

image

 

Now we’ll fill out the info for the rule.  First, name the rule (I’ll just name mine the name of my app) and enter the pattern as I have done below:

image

 

The Pattern field is where we put the regular expression that we want to match on.  Note that since we created this rule at the “Default Web Site” level, the URL that we’re checking will be relative to that (i.e. we don’t have to worry about the web site name, only what comes after the initial slash).  The pattern that I have entered above means that it will match when the URL begins with “schoolbooks” (case insensitive, since “Ignore case” is checked).  The (.*) at the end will capture the remaining string in the URL (we’ll need that later when we specify our redirect URL).

We now need to enter a “Condition” to our rule.  The condition needs to tell the rule to “fail” when the URL starts with exactly “SchoolBooks” (i.e. we don’t want to redirect if “SchoolBooks” was hit, either through the user typing the right URL or through our initial redirect").

In the “Conditions” section, hit the “Add…” button:

image

 

Enter the following in the “Add Condition” dialog and hit OK:

image

 

What this is saying is that the rule should only be enforced if {R:1} (the first capture group in our regular expression, which will be the “schoolbooks” part of the URL) does not exactly match “SchoolBooks” (case sensitive since “Ignore case” is unchecked").

So again, the rule will run if the URL is “http://myserver/schoolbooks”, but will not if it is “http://myserver/SchoolBooks”

Lastly, we need to specify what to do if the rule detects the wrongly cased URL.

In the “Action” section, change the “Action type” to “Redirect” and enter the following in the “Redirect URL” field:

image

 

So this means that we’ll redirect to the URL that is “SchoolBooks” + whatever came after the “schoolbooks” part of the initial URL.

If our URL was “http://myserver/schoolbooks/default.htm”

{R:1} = “schoolbooks”

{R:2} = “/default.htm”

…so our final redirect URL will be “http://myserver/SchoolBooks/default.htm”

 

Now just hit the “Apply” button in the “Actions” pane and you’re done.

image

 

Now I can see if the rule worked.  If I fire up Fiddler and try to hit http://myserver/schoolbooks/

image

 

I get this in the Response:

image

 

And of course the next request has the right URL

image

 

And, if we created our “Condition” correctly, we don’t keep redirecting to this  URL until the browser gives up (this happened to me a couple times when making these rules because I kept forgetting the colon in {R:1} and {R:2}, turns out those are important).

So that’s it, no more casing problem.  Hope this works for you.

 

Notes:

The problem with casing ONLY applies to the application name.  The website name will automatically get lower-cased by the browser.  So if I type HTTP://MYSERVER/SCHOOLBOOKS in the address bar, the browser will automatically change that to http://myserver/SCHOOLBOOKS

If you deploy your application to a website that is dedicated to this app (i.e. isn’t running other web apps) you can omit the “Application” part of the “Site/Application” field of the publish wizard and just supply the Site part.  The URL for your app will then be http://myserver (no app name, no problem).

LightSwitch apps deployed as an Azure Cloud Service or to an Azure Web Site are deployed in the manner described above, so they don’t have the problem.

If you don’t want to use the URL Rewrite Module and you are publishing to website with multiple applications, your best bet is probably to:

  1. Enter a lowercase name for your Application as users would be more likely to type all lowercase when typing the URL
  2. Send users a shortcut to open the app and advise them to always use that to launch.

Forum Post: Re: AX 2009 Enterprise Portal with SharePoint 2010

$
0
0

We have done these steps before and even passed all of the errors mentioned in the link you sent. It is still giving us the error mentioned above.

Forum Post: Sales Invoice Posting Error in AX2012

$
0
0

Hi.

When i post Sales Invoice system gave me error message

"A ledger is required to complete the currency calculation"

Actually this is INTERCOMPANY transaction......

I will appriciate if anyone can explain, how to solve this problem?best regards ...

Warm Regards

MS

Blog Post: Dynamics Ax 2012 : Exploring the Radio buttons as a report parameter

$
0
0

It is common scenario in report development to use check boxes or radio button as parameter.  Any Boolean variable define at data contract class become check boxes at report dialog. But how we make radio button on report dialog. When we require radio button then it means we have more than two values and one value is required to select. For this purpose we have to create a new enum at AOT.   Let see we create a new base enum with Name Enum student.

BaseEnum

 

Right click on EnumStudent and open property window and set Style property as Radio button

EnumProperty

 

 

 

Now you have to create a new data contract class where we define parameter that will contain the selected value for enum.

 

 

 


[DataContractAttribute]

publicclass StudentDataContacts

{

EnumStudent enumStudent;

}

 

 

[ DataMemberAttribute('Student By'),SysOperationLabelAttribute('Student By')

]

 

public EnumStudent parmStudent(EnumStudent _EnumStudent =

enumStudent )

{

enumStudent = _EnumStudent;

return enumStudent;

}


Report Dialog

Now questions is that how we used this radio button parameter.

At report level, we can use this radio button parameter for grouping or such other operations. It return string value. For example I used here to just display what value of radio button selected in report Expression as

Expression

We can use this parameter inside the Process report method of Data Provider class as

public void processreport()
{
EnumStudent _EnumStudent;
str _StudentType;
StudentDataContact _DataContact;

_DataContact = this.parmDataContract();

_EnumStudent= _DataContact.parmStudent();

_StudentType=enum2str(_EnumStudent);

_TempStudentList.Firstname ="Ali";
_TempStudentList.LastName="Raza";
_TempStudentList.StudentType=_StudentType;
_TempStudentList.insert();

_TempStudentList.Firstname ="Raza";
_TempStudentList.LastName="Ali";

_TempStudentList.StudentType=_StudentType;
_TempStudentList.insert();

}

Forum Post: Re: The transactions on voucher XXXX do not balance as per date . (accounting currency: $ some# - reporting currency: $ same# )

$
0
0

 

Normal 0 false false false EN-US X-NONE AR-SA MicrosoftInternetExplorer4

Cannot Post Purchase order (The transactions on voucher  do not balance as per date. (accounting currency: xxxx - reporting currency: xxxx)) .

 

Normal 0 false false false EN-US X-NONE AR-SA MicrosoftInternetExplorer4

-          Uncheck box the post definition for accounting Rules .

GL ->  parameter  Normal 0 false false false EN-US X-NONE AR-SA MicrosoftInternetExplorer4

 

 


Forum Post: Re: Re: Re: Re: Re: payroll module of Dynamics AX 2009.

$
0
0

If Anyone is having the AX 2009 Payroll Demo License please be kind enough to mail me

chathura_ayantha@yahoo.com

thanks a lot for the time !!

Forum Post: What is the inventory item value before inventory cosing in AX 2009?

$
0
0

Hi!

can someong let me know that how the inventory item value is calculated before running inventory cosing in AX 2009?

Regards,

Forum Post: Re: AOD Code Upgrade...Ax 2012

$
0
0

Thanks Kevin..

We are using AX 2009, our existing ISV provider for BUS Layer is no longer providing a version
for AX 2012. So we are trying to upgrade it. We follow as mentioned in Code_Upgrade_Overview_AX2012.pdf,
but in this lengthy procedure somewhere it is missing the up gradation from axbus.aod file. How can we go ahead?.

Thanks..

Forum Post: Re: Marking a production order to a sales order

$
0
0

Hi Jono,

Providing more information to this question would have made it easier. If you want to link an existing production order to sales order, the steps are a little more involved.  If you simply want to create a production order, there are 3 ways to do so without code:  

1. You can create a production order from another production order

2. You can manually create a production order

***3. You can create a production order by going into a sales order line and creating it there.  That will link the two together.***  

Forum Post: Re: AX2012 Retail Store Connect processing error 32769 - datetime conversion

$
0
0

Hi, this has been resolved by Microsoft via a hotfix which is also part of Cumulative Update 4:

KB2742214 You cannot run a job to transfer data by using Store Connect when different date formats are used in Microsoft Dynamics AX 2012 Retail.

Manual workaround is to reset each server's date & time format to be the same. You will need to edit the Windows Registry to change date & time formats for service accounts.

Cheers,

Ashok

Viewing all 131213 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>