Silent install of Microsoft Dynamics GP eConnect


I needed to do a silent install of eConnect for Dynamics GP but couldn’t find the documentation on how to do it, I figured it out and document it here for future reference:


The basic root command construct for a msi silent install is something like:

msiexec /i my.msi /qb+

The switch i is for install then the name of installer and then the silent install options, where it can be tweaked depending upon how silent we need it:

q , qn - No UI

qb - Basic UI. Use qb! to hide the Cancel button.

qr - Reduced UI with no modal dialog box displayed at the end of the installation.

qf - Full UI and any authored FatalError, UserExit, or Exit modal dialog boxes at the end.

qn+ - No UI except for a modal dialog box displayed at the end.

qb+ - Basic UI with a modal dialog box displayed at the end. The modal box is not displayed if the user cancels the installation. Use qb+! or qb!+ to hide the Cancel button.

qb- - Basic UI with no modal dialog boxes. Please note that /qb+- is not a supported UI level. Use qb-! or qb!- to hide the Cancel button.


eConnect needs a SQL user account and an account to run the service under. These can be supplied as parameters like so:


USERDOMAIN={domain} USERNAME={username} USERPASSWORD={passoword} SQL_SERVER_NAME={SQLserverName} SQL_USER_ID={sqlUser} SQL_USER_PASSWORD={password}


So this becomes:

msiexec /i "Microsoft_DynamicsGP18_eConnect_x64_en-us.msi" /qb+ USERDOMAIN={domain} USERNAME={ServiceUsername} USERPASSWORD={password} SQL_SERVER_NAME={SQLserverInstanceName} SQL_USER_ID={sqlUser} SQL_USER_PASSWORD={password}


Which will install eConnect for you with limited UI interaction.

2017-12-10_23-24-36


Do comment if you found this useful – motivates me to write more!

Retail Microsoft Dynamics GP Point of Sale Systems (POS)

What retail point of sale (POS), retail store, till Systems are compatible with and also work well with Microsoft Dynamics GP?

On my investigation, the market seems to be sparse with only a few products out there:

Compass POS- seems to get the most praise and most mentions

Salespad POS – very experienced in Dynamics GP

Retail Edge – reports of the product being integrated successfully with GP

Microsoft Dynamics Retail Management System (RMS) (as good as retired not worth looking at)

 

If you know of any others, please leave me a comment and I will add them to the list.

Service Unavailable (HTTP Error 503) Server Error in ‘/lus’ Application–Dynamics GP

Recently user home pages have been showing a few different error messages under the “connect widget” area of the home page. The connect widget is considered by some as a waste of bandwidth and is disabled for all users, to others it is a useful source feed of news and information about Dynamics GP.

Service Unavailable, HTTP Error 503. The service is unavailable.

The content that is shown on the user home pages within the “connect” area is populated by Dynamics GP polling a Microsoft server over the internet to fetch the content with a web request. If the server that Dynamics GP is contacting to obtain that home page content is misconfigured, or is experiencing stability issues, then a number of error messages can be handed back to GP and shown to the user. This results in an error, rather than the intended content being seen, that in turn may lead to support calls from users.

Dynamics GP Service Unavailable HTTP 503 error

A more severe version of this is when the user home page area for connect says

Server Error in ‘/lus’ Application

This is the ASP.NET application (lus) that is running on Microsoft’s IIS server throwing an error. This is the ASP.NET application that is responsible for serving the Dynamics GP homepage connect content.  So this is a problem that Microsoft would need to resolve with their application on their server. The homepage makes a web request to a url behind the scenes of GP, along the following lines to fetch the content:

https://online.dynamics.com/lus/? – see the lus on the end of the uri? - this is the application name.

Server Error in /lus Application Dynamics GP homepage

There are also reports of this error problem from malformed urls that are caused by unusual characters in the company name of the Dynamics GP company (e.g. angle braces on <test> company instance names), where those characters are not correctly encoded by GP when the web request is made. The following posts have information on this issue:

Home Screen Connect Error – Server Error in ‘/lus’ Application.’

Server Error in /lus Application Error on Home Screen

I have not seen the character issue on GP2015 with the test company. Generally the errors have not persisted in the cases I have seen for more than a few hours, when presumably someone at Microsoft addresses and fixes the issue.

Jan 2018 update

Two new messages in the Dynamics GP Connect window for this month. The message Dynamics GP is giving is

Can’t reach this page

that is then followed by

Can’t connect securely to this page

when you click “refresh”.

This content area is showing a webpage from Microsoft, the page is served over https: however it looks like there is no SSL certificate bound to the web server site, causing an error page rather than the content to be displayed on the GP client.

Dynamics GP - Can't reach this page

Dynamics GP - Can't connect securely to this page

Dynamics GP Connect “Navigation to the webpage was cancelled”

Jan 19th 2018 Update

It seems the long running issues with the connect page continue with a new variation of

Navigation to the webpage was cancelled

2018-01-19_12-17-32

Dynamics GP drill down logging to trace file for diagnosing problems

In a previous posts I’ve looked that protocol handler used to create the drill down features in reports and other applications used with Dynamics GP.

Asynchronous pluggable Protocol Handler for Dynamics GP (for drilldown/drillback)
Dynamics GP Drill Down Protocol Handler error

-in those posts, I investigated the debug switches that can be added to the protocol handler’s configuration file and showed some of the various errors that can be generated from Dynamics GP drill down.

The configuration file for the Dynamics GP protocol handler can normally be found here:

\Program Files (x86)\Common Files\Microsoft Shared\Dexterity\Microsoft.Dynamics.GP.ProtocolHandler.exe.config

Adding these switches to the above file will cause a dialog box to pop when errors occur, that the user can then screen shot and pass to you.

<add key="DebugMode" value="true" />
<add key="UseWindowsEventLog" value="true" />
<add key="UseLogFile" value="true" />

Debug switches for Dynamics GP drill down

Example of error window generated after applying these switches:

Error window from Microsoft dynamics GP drill down

Logging Dynamics GP Drill down errors to trace file

However WCF, the underlying enabling technology that the protocol handler is utilising to talk to GP, allows us to log activity to a log file that can be analysed too. To utilise this, change the configuration file to look like the following. Then create a C:\log folder for the log file to go to, or change the location in  the line:

<add initializeData="C:\Log\WcfTraceServer.svclog" 

The detail of the logging and what is logged can be changed with different settings in this XML. This example gets you going without learning detail of WCF, which is beyond the scope of this post.


WCF debug nodes added to configuration for Dynamics GP Drill Down debug

Now when an exception occurs the file will be generated in the folder:

example of file created

Using the Service Trace Viewer Tool

This file is an xml file that is difficult to read and understand, however you can use the Service Trace Viewer Tool (SvcTraceViewer.exe) to investigate the file. I have shown an example below. This give a richer environment to investigate errors and allows a less disruptive way of capturing them from the client machine.

Debugging Dynamics GP drill down with Service Trace Viewer Tool

Armed with this information from the log file, it is much easier to get an investigate any errors the service may be encountering, errors that otherwise would be hidden from the user and admin. Below is a full configuration file given as an example to show the context of the changes.

The WCF Configuration Editor Tool is my recommended way to edit WCF configuration files, but may be daunting for those who do not have a basic understanding of WCF. Configuration Editor Tool (SvcConfigEditor.exe)

Example of full configuration file:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.diagnostics>
<sources>
<source propagateActivity="true" name="System.ServiceModel" switchValue="Information,ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="traceListener">
<filter type="" />
</add>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="traceListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\Log\WcfTraceServer.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="traceListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack">
<filter type="" />
</add>
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging logMalformedMessages="true" logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
<bindings>
<netNamedPipeBinding>
<binding name="NetNamedPipeBinding_IDrillBackToGP" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport protectionLevel="EncryptAndSign" />
</security>
</binding>
</netNamedPipeBinding>
</bindings>
<client>
<endpoint address="net.pipe://dynamicsgpdrillback/" binding="netNamedPipeBinding"
bindingConfiguration="NetNamedPipeBinding_IDrillBackToGP"
contract="DynamicsGPDrillBackService.IDrillBackToGP" name="NetNamedPipeBinding_IDrillBackToGP" />
</client>
</system.serviceModel>
<appSettings>
<!-- String value, please use good file system notation (i.e. "c:\Dynamics\GP\DynamicsGPDrillBack.xml") -->
<add key="BindingName" value="NetNamedPipeBinding_IDrillBackToGP" />
<!-- Boolean values only (true/false) -->
<add key="DebugMode" value="true" />
<add key="UseWindowsEventLog" value="true" />
<add key="UseLogFile" value="true" />
</appSettings>
</configuration>