This article is the outcome of a shared session with credit to my friend Vishal Kohli .
While creating a new store in the store master in Dyn365FO, you may face the following error.
“Cannot create a record in Global address book (DirPartyTable). The record already exists.”
The issue is that the operating number keyed is already existing in the system. Therefore you need to make sure you key in a number that does not already exist. The error message can be a little confusing in this regard, which is why I thought this warrants a post.
Note -You are most likely to face this issue when your operating unit number sequence is configured as Manual.
If you are on Dynamics 365 for Operations 7.1 and planning to uptake the latest set of binary hotfixes, expect to see the above error when trying to activate MPOS.
Sergey from Microsoft has described the change that is triggered by binary hotfix KB4051347 in below link in great detail. Just one note though if you are on 7.1 you will not find the event ID 40619 in the event viewer. Its only available 7.2 onwards.
Just a short but nevertheless important post. I discovered this document AX7 Retail Handbook while browsing my LCS deployed AX 7 RTW VM’s Retail SDK folder.
Overall the document is made up of two parts.
The first covers the Retail Sdk, build, configurations that can be done to be more productive. Additionally, typical branching strategy is discussed in order to work effectively in teams.
The second part contains details about the main extensibilities that are possible with the Retail Sdk. Anyone getting started with writing code based on the Sdk can use it as a reference in order to get started.
Some sample extensions are also provided in the same folder path.
Kudos to the team at Microsoft for going the extra mile to provide this document and sample extensions.
PS: If you have access to the LCS Deployed VM please access these materials there, I would not be in a position to share these as copyrights apply.
1. How we can execute a test job in AX7 which most of us already know in the good old AX 2012 as an AOT Node.
2. Use of ‘like’ operator- AX uses asterik ‘*’ character instead of ‘%’ which we use in SQL.
3. Changing Layouts of Retail Screens need not be tedious and time consuming by changing properties of each button manually.
A job in AX7 is simply a public class and it must have a main method that provides the runnable code. The main method was required in AX 2012 too but there was no need for the class to have access specifier as public. Another difference is that the Jobs Node in AOT is deprecated.
So how do we write a test job in AX7? you can start by referring to this link for steps to create one
In my first Dynamics 365 for Operations project we had to implement an integration between the Azure hosted Dynamics 365 for Operations Retail Server and an on premise web api server (for more information on the overall Retail Topology do refer this link MPOS Technical Architecture).
The integration worked fine in our Development environment but when promoted to UAT sandbox the integration broke with the following error
“Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.”
and initially we could not understand why, after some investigation we could find out the cause being that Dynamics 365 for Operations configuration enforced a TLS 1.2 protocol while the destination server supported only TLS 1.0 and 1.1.
The following resources were very helpful to arrive at the conclusion
In this blog, John has provided a nifty console application which was extremely helpful in understanding what was going wrong in the integration, by trying all combinations of TLS protocols between the source and destination it lets you know which protocol is supported and which one is not.
In addition you may also needed to follow these steps to make sure all MPOS packages are removed (especially when multiple user profiles are setup)
Run the following powershell script as Admin user. (Note that you can run the Powershell command by loading it the command prompt by executing powershell command as shown below)
Get-AppxPackage *pos* – allusers
2. Note the PackageUserInformation in the above results. It will list the users for which the package has been provisioned. The package can then be removed using the following script.
Get-AppxPackage *pos* | Remove-AppxPackage
Note – You will need to execute the above command for each user by logging in as that particular user in command prompt. For instance lets consider that there are two users admin and user1. You will need to execute the powershell twice, once as admin and once as user1, by using “Run as a different user” option by right clicking the command prompt icon