Microsoft had two primary Point of Sale (POS) solutions in their Dynamics software stack: Retail Management System (RMS) and POS 2009. These solutions were great for cash and carry retail operations that had a few locations and could handle a fair amount of volume without a problem. They handled all of their backoffice functionality in smaller accounting solutions like Quickbooks and PeachTree to name a few.
For larger companies, Microsoft's Dynamics AX (Axapta) solution was the obvious choice for their backoffice applications as these smaller accounting solutions were not capabale of sustaining their operations. The issue with these POS products and larger corporations is that they were developed for smaller operations out of the box (OOTB). The major selling point of large scale ERP's are their abilites to centralize managment of all operations into a single location. These products had to be adapted for larger companies via third party integrations like ToIncrease's Retail Chain Management (RCM) or Blue Horseshoe's Retail Operations Bridge (ROB) interfaces (for example) in order to integrate RMS to the AX system.
There were two issues with this solution: 1) Not a OOTB integration with a lot of effort in upgrading and 2) RMS was not a flexible application to allow major customizations like AX was able to.
As many in the AX industry know, AX is VERY customizable. With this customization power comes great customization responsibility. As an observation, the larger a corporation was, the more unique requirements their business contained. This created an obvious limitation of using these solutions as they were not very customizable. To note, they did not need to be and they did their job extremely well.
In order to bridge these two gaps, Microsoft purchased LS Retail POS and ToIncrease's RCM in order to develope their own, highly integrated, highly customizable POS end-to-end solution for their larger clients. From this came AX 2009 for Retail. This was a great product and everyone instantly saw that every implementation had customizations. I have yet to hear of a single solution that was 100% OOTB. This was by design as one size does not fit all.
Microsoft will soon release in the third quarter of 2012 (tentative), the AX 2012 for Retail feature pack. This is currently in the TAP process at the moment.
This is obviously just a high level history of how AX for Retail came to be. I left some stuff out and may have been too broad in some areas so please comment below if you can help add to this. I'm always interested to learn the background of stuff...
A blog (primarily about Dynamics AX/D365) covering topics like X++, AX for Retail, D365 Commerce, Trade and Logistics, retail concepts, warehousing, etc. Something for everyone. Grab bag blog for whatever I think would help out people in the Dynamics AX/Commerce/Retail community. The opinions expressed on this site are my own and do not necessarily represent the views of my company
Monday, November 14, 2011
Tuesday, November 8, 2011
Allow a single user name to log into a server without taking over a session
The following should be used very carefully. I thought I would write about it since it helped me out of a tight situation a few times.
An example of where I used this: There is a third party application running at a client site and it doesn't seem to work for any other user except for the administrator account on that machine. The client wants to get in there and start using the program but the vendor is unavailable to assist at the moment. By allowing multiple people to log into the single administrator account, it helps progress move forward. THIS IS NOT IDEAL FOR A LIVE ENVIRONMENT.
A note to people making config changes: PLEASE TEST YOUR CHANGES. DO NOT ASSUME THIS WILL JUST WORK SINCE I SAID SO. This is a VERY important step and seperates the posers experts and the real experts that know better.
The following is for Remote Desktop Services (RDS). Microsoft (MS) rebranded Terminal Services (TS) as RDS. This process can be done with any user that has privileges to do this and it affects all users logging into that server.
Step 1 - Navigate to 'Remote Desktop Session Host Configuration'
To get here, go to: Start -> Administrative Tools -> Remote Desktop Services -> 'Remote Desktop Session Host Configuration' (See Figure 1 below)
Step 2 - Uncheck the 'Restrict each user to a single session' box.
Once in Remote Desktop Session Host Configuration, under the 'Edit Settings' section, look at the options in the General option. The third one down should read 'Yes' if you log into the server and immediately take over an active session. Double click on this option and you will see the form in Figure 2 pop up. Uncheck the 'Restrict each user to a single session' box and click Apply.
Step 3 - Validate the changed setting
While keeping your current session open, open a new RDP session and log in as your current user. If the new window opens a fresh instance on the server, you're all set!
Hope this helps!
An example of where I used this: There is a third party application running at a client site and it doesn't seem to work for any other user except for the administrator account on that machine. The client wants to get in there and start using the program but the vendor is unavailable to assist at the moment. By allowing multiple people to log into the single administrator account, it helps progress move forward. THIS IS NOT IDEAL FOR A LIVE ENVIRONMENT.
A note to people making config changes: PLEASE TEST YOUR CHANGES. DO NOT ASSUME THIS WILL JUST WORK SINCE I SAID SO. This is a VERY important step and seperates the posers experts and the real experts that know better.
The following is for Remote Desktop Services (RDS). Microsoft (MS) rebranded Terminal Services (TS) as RDS. This process can be done with any user that has privileges to do this and it affects all users logging into that server.
Step 1 - Navigate to 'Remote Desktop Session Host Configuration'
To get here, go to: Start -> Administrative Tools -> Remote Desktop Services -> 'Remote Desktop Session Host Configuration' (See Figure 1 below)
Step 2 - Uncheck the 'Restrict each user to a single session' box.
Once in Remote Desktop Session Host Configuration, under the 'Edit Settings' section, look at the options in the General option. The third one down should read 'Yes' if you log into the server and immediately take over an active session. Double click on this option and you will see the form in Figure 2 pop up. Uncheck the 'Restrict each user to a single session' box and click Apply.
Step 3 - Validate the changed setting
While keeping your current session open, open a new RDP session and log in as your current user. If the new window opens a fresh instance on the server, you're all set!
Hope this helps!
Figure 1 - Navigate to 'Remote Desktop Session Host Configuration'
Figure 2 - Uncheck the 'Restrict each user to a single session
Wednesday, October 12, 2011
Microsoft Dynamics Retail Management Systems (RMS) CSC (CVC2/CVV2/CID) code support
UPDATE 1/19/2015: RMS is a deprecated product and no new features are being added to it (including support for Chip+PIN or Chip+Signature) which is VITAL in the US for October 2015. Look at upgrading to Retail Essentials which will allow you to use the new Retail Modern POS for mobility, in store, and ecommerce.
UPDATE: This is all taken care of in AX 2012+. The post below was pre-2012 release. Wanted to update this as it was the #2 post on my blog for January 2014.
In today’s economic climate, fraudulent credit card purchases are rampant. In traveling for work, I have had my credit card stolen twice in a single year. Additionally, with the spike in internet sales and unsecured wireless networks, it is even easier to grab a person’s credit card (and a bit of other personal information that is easy to find online with a name and birth date) and start to purchase like wild.
To help protect against this, credit card companies needed to find a way to differentiate a credit card transaction as being a ‘card not present’ situation. The use of credit card security codes (CSC) are the way that they achieve this. They are not imbedded in the magnetic strip and do not pop out of the card like the normal numbers. It is a violation of the credit card companies terms to save this number, too.
CSC’s are also known as CVV2 (for Visa), CVC2 (for MasterCard), or CID (for Discover). These other names are just the names that the credit card companies use so don’t let it fool you. If someone asks for a CVV code, they are referring to a Visa card even though the overarching name for the security code concept is CSC.
Some credit card companies are now requiring that, when a card fails to swipe and process, the company needs to be able to validate that the card was physically there in order to protect the business making the sale from fraudulent transactions that the credit card company gets challenged about. Businesses can process the credit card by either manually keying in the card number into the system or making a manual imprint of the card for later processing. The problem with keying in the card is that there is no way to verify that the card was actually there. Since CSC’s were a way to help verify against fraud by verifying that the card was physically present, they want those to be manually keyed in as well. By successfully swiping the card, the CC company can determine that the card was physically present.
The problem comes in that Microsoft Dynamics Retail Management System (RMS) was designed to be a ‘face-to-face’, or a ‘card present’ retail solution. Because of this, there was no need to be able to manually key in the CSC code since everything was taken through swiping the card. Yes it is true that RMS had a web component of it but this is just a remnant of QuickSell (Microsoft purchased QS from Sales Management Systems [SMS] in 2002 and rebranded it RMS). There may be plug-ins out there that people have created with a new integration point.
Unfortunately, the POS component of AX for Retail 2009 R2 doesn't have this ability either. Bummer… It might be supported but only through the Dynamics Online payment processor. I have not heard if AX 2012’s POS has this support or not. They can be mod’ed to include this functionality but it doesn’t currently exist.
Key take-away: Please review your credit card processing contracts and make sure you are protected against fraud claims. Find a workaround to this product deficiency so that you can stay protected.
I think that CSC support is something that Microsoft should support sooner than later…
UPDATE: This is all taken care of in AX 2012+. The post below was pre-2012 release. Wanted to update this as it was the #2 post on my blog for January 2014.
In today’s economic climate, fraudulent credit card purchases are rampant. In traveling for work, I have had my credit card stolen twice in a single year. Additionally, with the spike in internet sales and unsecured wireless networks, it is even easier to grab a person’s credit card (and a bit of other personal information that is easy to find online with a name and birth date) and start to purchase like wild.
To help protect against this, credit card companies needed to find a way to differentiate a credit card transaction as being a ‘card not present’ situation. The use of credit card security codes (CSC) are the way that they achieve this. They are not imbedded in the magnetic strip and do not pop out of the card like the normal numbers. It is a violation of the credit card companies terms to save this number, too.
CSC’s are also known as CVV2 (for Visa), CVC2 (for MasterCard), or CID (for Discover). These other names are just the names that the credit card companies use so don’t let it fool you. If someone asks for a CVV code, they are referring to a Visa card even though the overarching name for the security code concept is CSC.
Some credit card companies are now requiring that, when a card fails to swipe and process, the company needs to be able to validate that the card was physically there in order to protect the business making the sale from fraudulent transactions that the credit card company gets challenged about. Businesses can process the credit card by either manually keying in the card number into the system or making a manual imprint of the card for later processing. The problem with keying in the card is that there is no way to verify that the card was actually there. Since CSC’s were a way to help verify against fraud by verifying that the card was physically present, they want those to be manually keyed in as well. By successfully swiping the card, the CC company can determine that the card was physically present.
The problem comes in that Microsoft Dynamics Retail Management System (RMS) was designed to be a ‘face-to-face’, or a ‘card present’ retail solution. Because of this, there was no need to be able to manually key in the CSC code since everything was taken through swiping the card. Yes it is true that RMS had a web component of it but this is just a remnant of QuickSell (Microsoft purchased QS from Sales Management Systems [SMS] in 2002 and rebranded it RMS). There may be plug-ins out there that people have created with a new integration point.
Unfortunately, the POS component of AX for Retail 2009 R2 doesn't have this ability either. Bummer… It might be supported but only through the Dynamics Online payment processor. I have not heard if AX 2012’s POS has this support or not. They can be mod’ed to include this functionality but it doesn’t currently exist.
Key take-away: Please review your credit card processing contracts and make sure you are protected against fraud claims. Find a workaround to this product deficiency so that you can stay protected.
I think that CSC support is something that Microsoft should support sooner than later…
Tuesday, September 13, 2011
Typing focus jumps to mouse cursor location when typing
I can not guarantee it will fix everyone's issues but it did for me.
The following simple configuration change is how I fixed it on my system:
- Go to Start -> Control Panel -> Hardware -> click Mouse.
- Click the 'Pointer Options' tab.
- Uncheck the Hide pointer while typing box (if unchecked already, something else is going on)
Figure 1 - The 'Mouse' configuration option in the control panel
Figure 2 - The 'Hide pointer while typing' option that should be unchecked.
\
Monday, August 22, 2011
How to change/rename an existing Item Number
Depending on the business that you run, you will create a bunch of items (or some other main value) that you will need to rename. In this example, I am talking about renaming a unique record key value for the item master (InventTablee.ItemId), but you could apply this to any ‘unique record key’ field table in AX. For those that are not fully technically inclined, a ‘unique record key’ for a table would be a field that unique identifies that record in a table. Using the example of the item master in this blog post, the key field would be the item id as you could not have two records with the item id ‘001234’ for example; it is a unique identifier to that specific record...
Anyways, all nerding out aside, we’ll proceed talking about the scenario where we need to change the value for an item id and have this change be reflected across the entire system. While it may seem that ItemId’s can be changed in the item master at any time without repercussions, this is not the case. The trick is that the item number also needs to be changed in all other records that reference this ItemId (Item Number) since it uniquely identifies this record.
Steps to changing the item number to have it reflect the changes in the rest of the existing transactions:
1. Right click on the unique field (Item Number/InventTable.ItemId) and select the ‘Record Info’ option (Figure 1 below)
Figure 1 - Right Click on the Item Number field and select 'Record Info'
2. Select the ‘Rename’ button (n Figure 2 below).
a. VERY IMPORTANT NOTE: This could take A VERY LONG time to complete depending on how many transactions exist for that record. I’ve had it last anywhere from 1 minute to 3 hours. The 3 hours was for a client that had incredibly large volume.
Figure 2 - The 'Rename' button on this form will allow you to change the item number displayed in the item number field
It’s a fairly simple process to complete but very powerful and can take a long time. The only reason I am writing this entry is that I was sharing beers with a seasoned AX consultant who did not know how to do this. He did not work for our company but definitely pointed out to me how this feature is not really talked about in any specific point. While it may seem obvious to the technical folk (or not), it may not be obvious to the functional peeps.
Just make sure to be VERY careful with this process. I think its solid but I cannot vouch for it being 100% perfect. I’ve never seen it faulter but PLEASE take the following precautions before doing this:
1. Backup the PROD database
2. Restore PROD to TEST/UAT/DEV (or whatever…)
3. Execute the procedure on your target record
4. Do extensive testing on that record Before and After this process (either BI reports or manual comparison)
5. Compare the results and make sure all the target results are like you would expect
6. Make the change in the PROD environment
7. Validate the data in the PROD environment
8. Sign off the change and party like its 1999 (pre-Y2K catastophies! [psych])
Friday, July 29, 2011
Management Reporter reports stuck in the queue.
Well, your Management Reporter reports are stuck and you can't run anything. That is no fun. What the hell is going on?
Don't worry (yet). This is a common issue that we see with Management Reporter. It will happen in any product that runs MR whether it is AX, GP, NAV, or similar. It can be due to many issues. The key to this is determining what is causing it if it occurs on a very common basis.
Thankfully, there is an easy way to fix this: restart the MR services. The tricky part is finding out why its happening since its not a reasonable expectation to have to deal with this when it goes down all the time.
Below is a good guide from Microsoft in debugging this issue. I would STRONGLY suggest any IT staff dealing with MR read this guide since this issue will inevitably happen.
There are five potential causes for this error:
There are five potential causes for this error:
Cause 1
If the Management Reporter Process Service is on the same machine as the machine hosting your ManagementReporter SQL database. The Process Service may have errored out by attempting to start before SQL Server was accepting connections. See Resolution 1 in the Resolution section.
If the Management Reporter Process Service is on the same machine as the machine hosting your ManagementReporter SQL database. The Process Service may have errored out by attempting to start before SQL Server was accepting connections. See Resolution 1 in the Resolution section.
Cause 2
A SQL Server connection error has occurred and the Management Reporter Process Service needs to be restarted. See Resolution 2 in the Resolution section.
A SQL Server connection error has occurred and the Management Reporter Process Service needs to be restarted. See Resolution 2 in the Resolution section.
Cause 3
The user running the Management Reporter Process Service does not have sufficient permissions to read from the ManagementReporter SQL Server database. See Resolution 3 in the Resolution section.
The user running the Management Reporter Process Service does not have sufficient permissions to read from the ManagementReporter SQL Server database. See Resolution 3 in the Resolution section.
Cause 4
The SQL Service Broker on the ManagementReporter SQL Server database is not enabled. See Resolution 4 in the Resolution section.
The SQL Service Broker on the ManagementReporter SQL Server database is not enabled. See Resolution 4 in the Resolution section.
Cause 5
This can happen if the owner of the Management Reporter database is a Windows User while the SQL Server Service is being run by a local user. If you check the Event Viewer, you may see this message:
An exception occurred while enqueueing a message in the target queue. Error 15404, State 19. Could not obtain information about Windows NT group/user 'domain\user', error code 0x5.
See Resolution 5 in the Resolution section.
This can happen if the owner of the Management Reporter database is a Windows User while the SQL Server Service is being run by a local user. If you check the Event Viewer, you may see this message:
An exception occurred while enqueueing a message in the target queue. Error 15404, State 19. Could not obtain information about Windows NT group/user 'domain\user', error code 0x5.
See Resolution 5 in the Resolution section.
Resolutions
Resolution 1
If using Windows Server 2008 you can set the Management Reporter Process Service to Automatic (Delayed Start) rather than Automatic.
OR
Restart Process Service manually or with a script similar to the following:
NET STOP MRProcessService
NET START MRProcessService
Resolution 2
Restart Process Service manually or with a script similar to the following:
NET STOP MRProcessService
NET START MRProcessService
Resolution 3
Grant the user running this service the GeneralUser role under the Management Reporter database in SQL Server. This user can be found on the Log On tab under the Services Control panel.
Resolution 4
Run the following statement on the SQL server where your ManagementReporter database resides:
SELECT name, is_broker_enabled FROM sys.databases WHERE name = DB_NAME() AND is_broker_enabled = 1
This statement should return a row for the ManagementReporter SQL Server database. If it does not, run the statement below to re-enable the SQL Service Broker on the ManagementReporter SQL Server database:
ALTER DATABASE [ManagementReporter] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
Resolution5
Change the database owner to sa or change the SQL Server Service user to a domain user.
If using Windows Server 2008 you can set the Management Reporter Process Service to Automatic (Delayed Start) rather than Automatic.
OR
Restart Process Service manually or with a script similar to the following:
NET STOP MRProcessService
NET START MRProcessService
Resolution 2
Restart Process Service manually or with a script similar to the following:
NET STOP MRProcessService
NET START MRProcessService
Resolution 3
Grant the user running this service the GeneralUser role under the Management Reporter database in SQL Server. This user can be found on the Log On tab under the Services Control panel.
Resolution 4
Run the following statement on the SQL server where your ManagementReporter database resides:
SELECT name, is_broker_enabled FROM sys.databases WHERE name = DB_NAME() AND is_broker_enabled = 1
This statement should return a row for the ManagementReporter SQL Server database. If it does not, run the statement below to re-enable the SQL Service Broker on the ManagementReporter SQL Server database:
ALTER DATABASE [ManagementReporter] SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;
Resolution5
Change the database owner to sa or change the SQL Server Service user to a domain user.
Wednesday, July 27, 2011
How to find the SQL Server version from within AX 2009
I am usually asked how to find various information around SQL Server from within AX. This can happen from either a fellow consultant or a client.
Usually from a consultant standpoint, it is in the scenario where they are thrown into a situation where they don’t really know anything about the client and it is one more thing for them to ask people. Another scenario would be when a consultant or client need to submit a ticket to a company for support and the company needs to know some information around SQL Server.
Whatever the case may be, people will need to be able to get information about SQL from AX and those people may not be technologically inclined. AX has a way to do this :-)
To find out information about SQL, navigate to Administration -> Inquiries -> Database -> ‘Database information’ (Figure 1).
In figure 2 below it, shows the Database Information form that will pop up to the user. There are three tabs on this form: ‘General’, ‘System variables’, and ‘ODBC’. There is a whole lot of information on these tabs but I doubt a lot of it would apply to most people. The primary information people will want to see:
When assessing what SQL Server version your current AX environment is on, look at the third tab’s DBMS_VER variable described above. You can take this number and compare it to numbers you can find online. For example, if the database is SQL Server and the DBMS_VER is 10.50.1600, try entering ‘SQL Server 10.50.16000’ in a search engine (Bing!) and you should see the server version and Service Pack version.
From my example above, using the list of versions I’ve included below, indicate that my current AX environment is running SQL Server 2008 RTM.
SQL Server 2000 version numbers:
-RTM - 8.0.194
-SP1 - 8.0.384
-SP2 - 8.0.534
-SP3 - 8.0.760.0
-SP3a - 8.0.760
-SP4 - 8.0.2039
SQL Server 2005 version number examples:
-RTM - 9.0.1399
-SP1 - 9.0.2047
-SP2 - 9.0.3042
-SP3 - 9.0.4035
SQL Server 2008 version number examples:
-RTM - 10.0.1600
-SP1 - 10.0.2531
Hope this helps!
Usually from a consultant standpoint, it is in the scenario where they are thrown into a situation where they don’t really know anything about the client and it is one more thing for them to ask people. Another scenario would be when a consultant or client need to submit a ticket to a company for support and the company needs to know some information around SQL Server.
Whatever the case may be, people will need to be able to get information about SQL from AX and those people may not be technologically inclined. AX has a way to do this :-)
To find out information about SQL, navigate to Administration -> Inquiries -> Database -> ‘Database information’ (Figure 1).
![]() |
| Figure 1 - Database Information form location |
- First tab (Figure 2)
- Logon database
- The database the current AX environment is using
- Logon server
- The server where the database is located
- Database
- The type of database AX is running against (SQL or Oracle)
- Third tab (Figure 3)
- DBMS_VER
- The version of SQL Server that AX is running (please refer to the next paragraph for translating this number to something that means something)
When assessing what SQL Server version your current AX environment is on, look at the third tab’s DBMS_VER variable described above. You can take this number and compare it to numbers you can find online. For example, if the database is SQL Server and the DBMS_VER is 10.50.1600, try entering ‘SQL Server 10.50.16000’ in a search engine (Bing!) and you should see the server version and Service Pack version.
From my example above, using the list of versions I’ve included below, indicate that my current AX environment is running SQL Server 2008 RTM.
SQL Server 2000 version numbers:
-RTM - 8.0.194
-SP1 - 8.0.384
-SP2 - 8.0.534
-SP3 - 8.0.760.0
-SP3a - 8.0.760
-SP4 - 8.0.2039
SQL Server 2005 version number examples:
-RTM - 9.0.1399
-SP1 - 9.0.2047
-SP2 - 9.0.3042
-SP3 - 9.0.4035
SQL Server 2008 version number examples:
-RTM - 10.0.1600
-SP1 - 10.0.2531
![]() |
| Figure 2 – Tab one of the Database Information form |
![]() |
| Figure 3 – Tab three of the Database Information form |
Subscribe to:
Posts (Atom)








