Lookup Dynamics GP install location from registry key

You should never assume that Dynamics GP has been installed in the default location. Almost always it will be, but sooner or later you will find a site or development machine where it is different. It is a good idea to check the machine registry for the application folder(s).

You should also not assume there is only one instance of GP! There may be multiple instances installed, see the note later on in this post about checking for instances. The format of the registry keys has evolved through the versions, to support new features (instances) and versioning.

GP2015
64-Bit Windows Operating System

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Business Solutions\Great Plains\v14.0\1033\DEFAULT\SETUP
32-Bit Windows Operating System
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Business Solutions\Great Plains\v12.0\1033\Default\SETUP

The keys found under this registry location are as follows (on my machine):

Registry Keys GP2015 Listing

Note for GP 10 version

The path omits the version number:
32-bit
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Business Solutions\Great Plains\1033\Default
64-bit
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Business Solutions\Great Plains\1033\Default

Note for GP 9 version

Drop the 1033:
32-bit
HKEY_LOCAL_MACHINE\Software\Microsoft\Business Solutions\Great Plains
64-bit
HKEY_LOCAL_MACHINE\Software\wow6432Node\Microsoft\Business Solutions\Great Plains

For GP2010 onward

The convention is to embed the GP version number, v14.0 in this example, into the path. The “v14.0” part of the path is dependant on the version of GP that you are running or targeting, Victoria Yudin has a good lookup for these on her site:
Dynamics GP build numbers and service packs

Victoria Versions GP

Check for multiple instances

In the registry path, “DEFAULT” refers to the instance of GP, so if there are multiple instances the path would look like this:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Business Solutions\Great Plains\v14.0\1033\Inst0X\SETUP

Where “Inst0X” is the instance name, note in the image below that there is an instance name folder too! What at first glance is a simple task just became so much more difficult, didn’t it?!

Registry Keys GP2015 folder structure showing notde for Instance Name

Then it all goes wrong…

But you may notice that in the earlier values, the version of GP was listed as 14.00.0726 and yet if I look at the version from the application I get listed 14.00.0952. This is because we copy deploy GP, one of the pitfalls of this approach is that this means the registry is not maintained by the setup installer correctly when new versions are rolled out.

GP Version

Although this does not change the location of the application, I thought it worth pointing out before the reader runs away with using the registry as the source of the truth for other facts, it can be stale information!

Let me know with a comment if you found this useful –helps motivate me to write more!

Old SQL habits

With each new version of SQL server some old SQL habits have to die.

In Dynamics GP we often find document numbering sequences that are padded with zeros to facilitate sorting/ordering and to “look normal” on printed documentation.

For example website orders may be imported via econnect into GP in the range:

W00000001 to W99999999

Now sometimes we need to generate sequences of those numbers or join with tables holding just the number and no prefix. There are very many examples of this, originating from various reasons all now in my TSQL code, embedded in stored procedures.

DECLARE @WebOrderID int
SET @WebOrderID=22
SELECT 'W' + REPLACE(STR(@WebOrderID, 7), SPACE(1), '0')

The above shows a contrived example, to give us the result: W0000022 by overlaying on a template.er

The above was the way we did things in the 90s, new kids these days (starting with SQL 2012), can use the much simpler to read and use  FORMAT command . A command that supports standard .NET format strings.

DECLARE @WebOrderID int
SET @WebOrderID=22
SELECT FORMAT(@WebOrderID,'W#00000000')

This produces  much more easily read SQL and assuming you don’t need to be backward compatible, it seems the best way to go forward.
 
Old habits die hard, I need to start thinking FORMAT for these kinds of problem where pre-SQL 2012 support is not required. 

Financial Elementz export to Excel crashing Dynamics GP

Receivables Transaction Analysis window

User reported that Microsoft GP crashed with “Microsoft Dynamics GP has stopped working”. This occurred when attempting to export the Financial Elementz window Receivables Transaction Analysis to Excel.

GPCrash

By closing all instances of Excel on the machine and then examining the user’s Windows Task Manager, it was revealed that there was a hidden (Crashed?) copy of Excel sitting in process. The orphan process was “end tasked” using Task Manager.

After removing all instances of Excel the export to Excel started working again. It turned out to be a quick and easy fix.

Drop me a comment if this turned out helpful!

Extender–you do not have access to open this window

You might have this problem where Dynamics GP claims “you do not have access to open this window”. The extender manual tells the basics of setting up security for extender to allow access to windows, it does not mention that the inquiry windows have their own security section or my stupidity.

Extender - You do not have access to open this window

I will not entirely repeat how to set security in extender, other blogs and the user guide helps on the detail, but in summary:

Set up a Security Task, name it something useful, then be aware if this is an enquiry (inquiry) window you need to find the check box under Extender>>Extender Resources>>Inquiries for the window in question and then check it.

Also note to ensure that you are not working in a test company because while you are debugging an issue, it is all too easy to find yourself in another company, thinking you are changing the permissions for the production company, when you are not.(I am not admitting to anything there…but we’ve all done it all too often right?!)

Below is the inquiry version of the window security.

Extender>Extender Resources>Inquiries Showing extender security

Here is normal version.

Extender>Extender Resources>Windows

I hope this helps someone out, let me know with a comment if it did!