Find All Microsoft Dynamics GP Companies With Web Services Enabled

Microsoft Dynamics GPI’ve recently been doing some work with a client which necessitated the backup of all databases using the Web Services for Microsoft Dynamics GP. The easiest way to determine which databases had the web services enabled, was to run a script checking the Workflow Setup (WF00100) table.

I took a copy of my return functional currency for all companies script and amended it to look at the web services.

If the web services has never been enabled, a company won’t be returned at all other wise a 1 for active or 0 for inactive will be returned.

/*
Created by Ian Grieve of azurecurve|Ramblings of a Dynamics GP Consultant (http://www.azurecurve.co.uk) This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int). */
CREATE TABLE #Workflow( INTERID VARCHAR(5) ,CMPNYNAM VARCHAR(200) ,WEBSERVICESACTIVE VARCHAR(20) ) GO DECLARE @SQL NVARCHAR(MAX) SELECT @SQL = STUFF(( SELECT CHAR(13) + 'SELECT ''' + INTERID + ''' ,''' + CMPNYNAM + ''' ,EnableWFNotifService FROM ' + INTERID + '.dbo.WF00100' FROM DYNAMICS.dbo.SY01500 FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') INSERT INTO #Workflow EXEC sys.sp_executesql @SQL GO SELECT * FROM #Workflow ORDER BY INTERID GO DROP TABLE #Workflow GO

Update Web Services Server Location in All Companies in Microsoft Dynamics GP

Microsoft Dynamics GPI have a few clients with many company in Microsoft Dynamics GP (and one with well over 100) so doing upgrades or live to test backups can require a fair few, potentially time consuming, changes to data. I’ve posted scripts to update email addresses on test in bulk before as well as a few other variations. One recent one which has come up a couple of times, is the web services server location.

In the Workflow Setup window (Administration area page » Setup » System » Workflow Setup) is a field for the Web Services Server Location; this is the server where the web services have been installed and will be different for a standalone test server to live. Rather than have to move between several dozen companies changing this setting one at a time, the following script can be run to make the change in all companies.

The first highlighted section is the new server location and the second the current one:

/*
Created by Ian Grieve of azurecurve|Ramblings of a Dynamics GP Consultant (http://www.azurecurve.co.uk) This code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0 Int). */
DECLARE @SQL NVARCHAR(MAX) SET @SQL = STUFF(( SELECT CHAR(13) + 'UPDATE WF SET Web_Service_Server = ''test.example.co.uk'' FROM ' + INTERID + '.dbo.WF00100 AS WF WHERE Web_Service_Server = ''live.example.co.uk''' FROM DYNAMICS.dbo.SY01500 FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') EXEC sys.sp_executesql @SQL

The second element is there to make sure the script is only run in companies in which the workflow setup has been completed.

Web Services for Microsoft Dynamics GP Fall 2020 Release Upgrade Error

Microsoft Dynamics GPWe’ve just upgraded another client to Microsoft Dynamics GP Fall 2020 Release; everything during the upgrade went smoothly until we came to upgrading the web services. The test environment was created by replicating the live servers into a sandbox environment.

I was pretty much expecting to encounter the problem we did as we were moving from using a SQL Server security store to an Active Directory security store. The error received was:

Security object error upgrading Web Services

A loader exception has occurred.
Loader Errors:
- Microsoft.Dynamics.Security.InvalidSecurityContextException: Microsoft.Dynamics.Security.NonExistentSecurityObjectException : The security object does not exist.  Key = 25cc1a21-2cc4-4b13-a1c8-eea186fb688a
   at Microsoft.Dynamics.Security.ConcreteValidator.ValidateContext(SecurityContext context)
   at Microsoft.Dynamics.Security.SecurityService.Get(SecurityContext context, Key key)
   at Microsoft.Dynamics.Security.AzManTaskServiceImplementation.GetTask(SecurityContext context, TaskKey taskKey)
   at Microsoft.Dynamics.GP.GPSecurityMetadataSystemLoader.PersistTaskForAction(Action action, Task task, Keyword keyword)
   at Microsoft.Dynamics.GP.GPSecurityMetadataSystemLoader.PerformActionOnKeywords(Action action)
   at Microsoft.Dynamics.InstallData.Loader.Process(String[] args)

As the error referred to a security object error, my thinking immediately went to the new security store as being the issue. Due to the change in method I opted to remove the web services and do a reinstall; I tried using the built-in removal process in the Web Services Configuration Wizard, but this took a very long time to run and then crashed, so I used a couple of Microsoft supplied scripts to remove all of the web services objects from the company databases first and then from the system.

Once the web services had been completely removed, I re-ran the Configuration Wizard and deployed the web services again. The deployment ran through without any issues and we were able to test web services without encountering any further issues.

The lesson, which confirmed what I expected, is that if you change the security store type, you need to remove the web services from all companies and do a redeploy.

Web Services for Microsoft Dynamics GP: How to Setup an Active Directory Security Store

Microsoft Dynamics GPTo use the Web Services for Microsoft Dynamics GP with TLS 1.2 you need to do two things:

  1. Upgrade to the Fall 2020 Release; you can’t just apply the hotfix to an October 2019 or earlier release, but have to use the full download media.
  2. Create an Active Directory Security Store.

Upgrading Dynamics GP is not a problem, but Active Directory isn’t my area of expertise. Fortunately, Microsoft have a set of instructions on the Dynamics GP Support and Services Blog which takes you through the creation of the security store.

Once the security store has been created, you need three pieces of information for the install of the web services:

  1. Name of the domain controller.
  2. Port 389.
  3. The partition string entered when creating the security store.

Recent ISC Software Webinar: Automation in Microsoft Dynamics GP

ISC Software SolutionsIn our most recent webinar, we took a look at Automation in Microsoft Dynamics GP. In this webinar, we covered how automation can be used in Microsoft Dynamics GP to improve efficiencies and accuracy of data. If you want to catch up on this, or any other, webinar, you can do so here.

In this blog post, I am going to recap the webinar and cover the highlights of how automation can be used in Microsoft Dynamics GP to improve efficiencies and improve data accuracy:

  1. Introduction
  2. Integration
  3. Scanning
  4. Approval
  5. Posting
  6. Reporting
  7. Conclusion

Introduction ^

Where possible in this webinar I highlighted standard, or Microsoft supplied, features or additional products where they are available. However, in many cases the standard functionality does not allow for full automation. This is an intentional design choice made when Microsoft Dynamics GP was first created back in the md-90s. The company who created Great Plains, the original name of Dynamics GP, was intended from the very beginning to be extensible with the intention that there be a thriving third-party marketplace for add-ons.

This is the current situation; the core Dynamics GP system has strong core financials and distribution modules, but wider functionality is provided by third party (Independent Software Vendors (ISVs) who have a variety of add-ons and complimentary products which provide the functionality required or automating processes. In each of the areas, there are usually a number of products available from several vendors, but I have selected one in each area. usually an add-on which I have used with several clients across a number of years and which has received positive reviews.

Before implementing one of the solutions, I’d recommend reviewing the functionality it includes, the functionality of competing products and making your own decision about which will best fit your requirements.

Continue reading “Recent ISC Software Webinar: Automation in Microsoft Dynamics GP”

Hands on with the Microsoft Dynamics GP Fall 2020 Release: Securing the Web Services for external access

Microsoft Dynamics GPThis post is part of the Hands on with the Microsoft Dynamics GP Fall 2020 Release series where I am hands on with the newly released Microsoft Dynamics GP Fall 2020 Release.

When using the Web Services for Microsoft Dynamics GP with external access for Workflow approvals, it is important that the webs services be secured to minimise possible attack vectors. Everything covered in this series is required to install and configure the web services for internal use only

I covered the process for enable a secure connection for the web services a year or so ago which include a few extra steps:

Enabling Secure Connection for Web Services
Before You Begin
Update Certificate Binding
Update Bindings
Update Legacy Endpoint
Update Native Endpoint
Update GP Workflow Service
Final Service Configuration
Configure Workflow Setup

Click to show/hide the Hands on with the Microsoft Dynamics GP Fall 2020 Release Series Index

Hands on with the Microsoft Dynamics GP Fall 2020 Release: Verify Web Services

Microsoft Dynamics GPThis post is part of the Hands on with the Microsoft Dynamics GP Fall 2020 Release series where I am hands on with the newly released Microsoft Dynamics GP Fall 2020 Release.

The final step with the Web Services, now that they have been configured, is to verify that they are working correctly.

There are three checks which I recommend when verifying the web services:

  1. Is the service running?
  2. Have the security objects been deployed?
  3. Are the endpoints working?

To check that the service account is running, open the Services applet from Computer Management (or hit Win+R and typeServices.msc) and make sure the Microsoft Dynamics GP Service Host is set to a Startup Type of Automatic and that the service is Running.

Continue reading “Hands on with the Microsoft Dynamics GP Fall 2020 Release: Verify Web Services”

Hands on with the Microsoft Dynamics GP Fall 2020 Release: Configure Web Services

Microsoft Dynamics GPThis post is part of the Hands on with the Microsoft Dynamics GP Fall 2020 Release series where I am hands on with the newly released Microsoft Dynamics GP Fall 2020 Release.

With the Web Services installed, the next step is to configure them for use. If you marked the checkbox on the final step of the installation the Configuration Wizard will start automatically otherwise it can be started from the Windows Start menu. Click NExt to start the configuration:

Welcome to the Web Services for Microsoft Dynamics GP Configuration Wizard

Continue reading “Hands on with the Microsoft Dynamics GP Fall 2020 Release: Configure Web Services”

Hands on with the Microsoft Dynamics GP Fall 2020 Release: Install Web Services

Microsoft Dynamics GPThis post is part of the Hands on with the Microsoft Dynamics GP Fall 2020 Release series where I am hands on with the newly released Microsoft Dynamics GP Fall 2020 Release.

With the Web Services for Microsoft Dynamics GP prerequisites ready, we can now install the web services. Launch the setup utility and, under the Additional Products heading, select Web Services Runtime:

Setup Utility

Continue reading “Hands on with the Microsoft Dynamics GP Fall 2020 Release: Install Web Services”

Hands on with the Microsoft Dynamics GP Fall 2020 Release: Web Service prerequisites

Microsoft Dynamics GPThis post is part of the Hands on with the Microsoft Dynamics GP Fall 2020 Release series where I am hands on with the newly released Microsoft Dynamics GP Fall 2020 Release.

The next few posts are going to cover the installation of the Web Services for Microsoft Dynamics GP.

Before we start the installation itself, there are some prerequisites to make sure are sorted out. The majority of them will be installed by the setup utility, but there are others to consider.

Firstly, the Web Services should not be installed on either the SQL Server or an end-user accessible machine. If you’re going to make the Web Services externally accessible, they should be installed on a web server or similar machine.

Secondly, a Domain account is required for the Web Services service to run under. During the installation, this service should have local administrator permissions.

Thirdly, all companies which will have the Web Services deployed, needs to have a Functional Currency defined (this is needed even if you are not using Multicurrency; in this case, you will need to configure it for use anyway. When you do so, if you have a lot of hsitorical transactions, plan ahead and allow a lot of time to run Check Links).

Click to show/hide the Hands on with the Microsoft Dynamics GP Fall 2020 Release Series Index