On the 14th November 2017, a new build of Visual Studio Integration Toolkit was released to coincide with Winthrop Development Consultants taking back distribution of the product from Mekorma.
This new build, dated 14-Nov-2017, includes a new registration system which allows partners and customers to register the product for free without needing to contact anyone in advance to obtain a licence. However, if the registration is already recorded on the registration server, the keys are automatically populated.
The build also includes the ability to let the administrator user know if an update for the code has been released.
After its release, one of the early adopters notified me that they were receiving error code -17 messages which indicates that the product is not registered, but when they checked the registration on the About and Registration windows, it showed that it was registered. The error does not occur when logging into the sample company as the sample company is always registered.
Short Explanation: If you recently installed Visual Studio Integration Toolkit, please make sure you used the XX.00.0012.3 installer which will show a last modified date on the About window of 17-Nov-2017. If you have an earlier build, please reinstall.
Long Explanation: This was caused by a timing issue. Let me explain …
When you log into Microsoft Dynamics GP there are a number of scripts that are executed by the core code and developers trigger off these scripts to perform specific functions. The two scripts involved are below:
- Trigger after global procedure: CreateDefaultMenuStructure for adding menus.
- Trigger after global procedure: Add_Successful_Login_Record to complete table creation and the registration check.
The procedure CreateDefaultMenuStructure is executed before Add_Successful_Login_Record when you log in, which means that the system would like to add the menus BEFORE we know if the product is registered.
To get around this issue the trigger on CreateDefaultMenuStructure used a run script delayed command so that even though the trigger fired before the registration status was available, it would delay the actual adding of the menus until the foreground processing had completed. This worked perfectly in development mode and the test environment.
However, on live systems for an unknown reason Microsoft Dynamics GP would sometimes execute the delayed script before the trigger on Add_Successful_Login_Record had run and hence generate the error.
To fix this, a build dated 15-Nov-2017 was released that moved the menu creation part into the code triggered by Add_Successful_Login_Record. This way it would always run after the registration was checked. This was tested and it worked for logging in and returning from Modifier or Report Writer.
Then it was noticed that the fix also ran the menu creation every time a user switched companies, which resulted in the menu entries duplicating.
To fix this the current build, dated 17-Nov-2017, was released which uses a flag set by the trigger on CreateDefaultMenuStructure so that it only runs the menu creation once after CreateDefaultMenuStructure has been called.
Now, logging in, switching companies and returning from Modifier/Report Writer all work as desired.
For more information and download links, please see the Visual Studio Integration Toolkit Portal page:
Thank you for your patience and to Greg Kowieski for working with me to get this issue fully resolved.
This article was originally posted on http://www.winthropdc.com/blog.