This is the second article in my series about setting up your Dexterity Development Environments.
If you have not read the previous article, please do so first using the link below:
Disclaimer: This is the Musgravion principles of development machine setup. It is not the only method but it has worked for me for many years and has been fine tuned during my career. Feel free to use it if it works for you.
In the previous article we discussed the server components of Microsoft SQL Server and Microsoft Visual Source Safe and the application components of Microsoft Dynamics GP and Microsoft Dexterity.
In this article we will cover setting up a development environment for a Dexterity project. This project could be a customization for a specific customer or a product to be sold to any customer.
Dexterity Product IDs
Before we start setting up or project we need to have a quick discussion on Dexterity Product IDs. The Product ID (or Dictionary ID) is a unique number provided to you by Microsoft to identify your Dexterity dictionaries.
You see these numbers when you open the Dynamics.set launch file with notepad.exe. Every Dexterity product has its own unique Product ID. For example:
- 0 – Microsoft Dynamics GP
- 1493 – Smartlist
- 5261 – GP Power Tools
The Product ID is used to identify the dictionary to Dexterity when unchunking and when specifying security and navigation in the Microsoft Dynamics GP application.
It is imperative that you obtain a unique number from Microsoft Sales Operations for your product before any code is released into a production environment. You can start developing your customisation while you wait for your Product ID, but it is required before you can create a distribution chunk file.
Do not ever make up your own Product ID values. However, you can obtain a single Product ID as a generic customer customization dictionary which can be used for multiple customers even though the code might be different. For Dexterity developments that will be sold as Products to multiple customers, it must have a unique Product ID.
Source Code Control
Just a quick note on Source Code Control for Dexterity. If you will be using Dexterity for version GP 2013 or earlier, you will need to install the Dexterity Source Code Control Server (DSCCS) from the \Tools\Dex\DSCCS folder of the DVD image. I recommend using the version that comes with GP 2013 (v12.00) as it is the most compatible. Please note that from Dexterity for GP 2015 (v14.00) or later you connect directly to your repository without needing to go through the DSCCS.
It is recommended to use Source Code Control, even if just the Generic Provider which just uses text files in folders. When using Source Code Control, it is compulsory to use the Index File. See KB below for more info on Index Files.
[Edit: Mariano Gomez pointed out that the Dexterity version 12.00.0323 Service Pack can work without the DSCCS and that it is always a good idea to be on the latest Service Packs for Microsoft Dynamics GP and Dexterity.]
Setting up a Project
To set up our project we need to create a project folder as a subfolder to each of the versions of Dexterity the project will be developed for. For this example I will be working on versions for GP 2010, GP 2013, GP 2015 and GP 2016. I will use a single code base with conditional code and conditional compilation to handle differences between versions including the various R2 releases.
For this example, I will call my Dexterity development: Project
I am going to use the XXXX_Dyn.dic convention for my development dictionary, so I use the following naming conventions:
|GP Version||Dexterity Folder||Project Folder||Development Dictionary|
|GP 2010 (v11.0)||C:\Dex1100||C:\Dex1100\Project||C:\Dex1100\Project\Proj_Dyn.dic|
|GP 2013 (v12.0)||C:\Dex1200||C:\Dex1200\Project||C:\Dex1200\Project\Proj_Dyn.dic|
|GP 2015 (v14.0)||C:\Dex1400||C:\Dex1400\Project||C:\Dex1300\Project\Proj_Dyn.dic|
|GP 2016 (v16.0)||C:\Dex1600||C:\Dex1600\Project||C:\Dex1400\Project\Proj_Dyn.dic|
Note: If you are developing for multiple versions, always develop your code in the lowest version as you can easily roll your changes forward versions, but cannot always roll changes back versions.
- Create the Project Folder underneath the appropriate Dexterity Folder
- Copy (not move) the Dynamics.dic from the application folder for the same version into the Project Folder. This is called a Clean Dynamics.dic Dictionary as does not have any added or changed resources. This is the starting point for a Development Dictionary.
- Rename the Clean Dynamics.dic Dictionary Filename to the Development Dictionary.
- Copy the Dex.ini from the Data subfolder of the Dexterity Folder to the Project Folder. The reason for a separate Dex.ini setting is so that project related settings such as Source Code Control settings can be set once.
- Go to the Dexterity Folder and multi select the Dex.exe and DexUtils.exe files and using the right mouse button drag and drop the files into the Project Folder and select Create Shortcut Here.
- Rename the newly created shortcuts to _Dexterity XX.00 and _Dexterity Utilities XX.00 respectively, where XX is the version number for the Dexterity version. The underscores ensures that the shortcuts appear at the top of the folder when sorted by name.
- Edit the properties for the _Dexterity XX.00 shortcut. In the Target field add a space and then the full path to the Development Dictionary, then another space and the full path to the Dex.ini file and click OK. So the full Target field should be something like:
C:\DexXX00\Dex.exe C:\DexXX00\Project\Proj_Dyn.dic C:\DexXX00\Project\Dex.ini
- Launch Dexterity using the _Dexterity XX.00 shortcut. From now on always using the shortcut to Launch Dexterity for this development environment as it will load the correct dictionary and Dex.ini settings.
- From the Edit Menu select Options. On the sanScript tab, make sure both Apply to: Script Editor and Script Debugger are selected.
- From the Reference tab, make sure all resources types (except Strings) are selected and that the Update Reference Information on Compile is selected.
- Optional (but recommended): From the Source Control tab, set up source code control settings as desired to connect to your repository. Make sure that the Temp File Location points to your %TEMP% folder and the Original Dictionary points to the clean Dynamics.dic in the Application folder for the matching version. For the Project Name using the name of the project and the version, such as Project\XX00. Once the settings are entered and saved, from the Explorer Menu select Source Control >> Update SCC State.
You should now be ready to start development work on your project.
Please review the following article which explains issues you might have trying to use Dexterity Test Mode or compiling. It describes which dll files need to be copied to the Dexterity and project folders:
For more information, see the KB Articles I created on the topic:
- How to set up the development environment when you use Dexterity in Microsoft Dynamics GP (KB 949622)
- Description of product IDs for Dexterity in Microsoft Dynamics GP (KB 914899)
- How to use an index file and the Microsoft Dynamics GP Dexterity source code control functionality to make sure that the resources that you create maintain the same resource ID in different builds and versions of your code (KB 894699)
Stay tuned for the next article on how to work on multiple versions of your project at the same time.
11-May-2017: Added feedback from Mariano about Dexterity Service Packs.
17-May-2017: Added link to article explaining dll files that need to be copied into the Dexterity and project folders.
This article was originally posted on http://www.winthropdc.com/blog.