Exchange Rates inserted by eConnect integrations

Microsoft Dynamics GPI recently assisted with a support call logged by a client following the introduction of an RM integration created using SmartConnect.

The client enters exchange rates at the start of the month, but following the integration being deployed, extra exchange rates were being inserted into the exchange rate table. This caused problems as the rate from the external system varied more often than the rates entered, and required, in Microsoft Dynamics GP.

The investigation started from the integration to see if there were any settings in it which could be causing this issue, but none seemed relevant. The only currency fields being set was the Currency ID and the Exchange Rate.

After this I started taking a look into the eConnect stored procedures on top of which SmartConnect runs. After digging down a couple of levels I discovered that taMCExchangeRate has a section which inserts the exchange rate passed in if it is not in the Exchange Rate table; this is regardless of the setting in Multicurrency Setup (Financial area page » Setup » Multicurrency) which were set to allow rates to be used without being added to the exchange rate table.

The client was running Microsoft Dynamics GP 2013 SP2 and my investigation was confirmed on a 2019 October Release environment so this is a long standing issue which is not yet resolved; I have confirmed with Microsoft that they are aware of this issue and it is logged with the development team for resolution in a future version.

In the meantime, I have deployed customised versions of two stored procedures to the client so that they do not have the exchange rates being inserted into the exchange rate table.

Implementing SmartList Builder: What is SmartList Builder?

eOne SolutionsThis post is part of the series on Implementing SmartList Builder from eOne Solutions.

Before launching into the installation of SmartList Builder, I thought it might be worthwhile to do a post on what it is. All users of Microsoft Dynamics GP will be familiar with SmartList; this is the flexible reporting tool which allows you to generate a report showing a list of master records or transactions. Each series has a set of SmartLists available by default, with predefined favourites where search criteria or columns are supplied already configured.

SmartList favourites can be customised and new ones created quite easily, but new SmartLists themselves cannot be created. To create a new SmareList, you need a tool such as SmartList Builder or, in more recent years, SmartList Designer. In this series, I am focussing on SmartList Builder as this is an additional product available from an ISV for Microsoft Dynamics GP.

Back in 2003 when I started working with Microsoft Dynamics GP, SmartList Builder was available direct from Microsoft. SmartList Builder was originally developed by eOne Solutions and then licensed by Microsoft; in the run up to the release of Microsoft Dynamics GP 2013 SP2, the licensing deal for SmartList Builder was ended and maintenance of the product reverted back to eOne Solutions.

SmartList Builder the product, includes four utilities:

  1. SmartList Builder – SmartList Builder allows you to create both brand new SmartLists or modify existing SmartList. You can link up to 32 tables together. Tables can be standard GP tables, any of the Third Party (ISV) tables, any SQL table, SQL views or SQL Scripts, other SmartLists or Extender resources.
  2. Excel Report Builder – Excel Report Builder generates an Excel Spreadsheet with a live connection back to GP or any other data you include. This means you have live refreshable reports, anytime you need them. You can give all your data from GP to anyone in the organization via Excel — without buying new, full-user licenses of Dynamics GP.
  3. Drill Down Builder – Drill Down Builder completes the functionality of Excel Report Builder by letting you drill from your spreadsheet back into that same record within Dynamics GP. Where Microsoft hard codes a drill down — eOne makes it completely configurable to allow you to drill down to any screen or SmartList in Dynamics GP. This is an essential part of bringing the most common business tools together. Working in GP and Excel all day — it only makes sense to auto-switch between one and the other.
  4. Navigation List Builder – Navigation List Builder allows you to publish your SmartList into the Navigation List user interface.

The standard installation of the SmartList Builder product, gets you all four of the above utilities.

Using SmartList Designer To Create Vendor EFT SmartList

Microsoft Dynamics GPOne of the really nice new features in Microsoft Dynamics GP 2013 SP2 is the SmartList Designer. This is, to an extent, a cut down replacement of SmartList Builder, which includes much, although not all, of the functionality and is more user friendly.

It also affords the opportunity to all clients to create a report which has long been missing from Microsoft Dynamics GP; a Vendor EFT SmartList which shows the EFT details against the Vendor Remit To Address.

In this post I am going to step through the process of creating this report.

To start, open SmartList (Microsoft Dynamics GP menu » SmartList) and you will see two new buttons at the left of the toolbar; New and Modify (ringed in red):

SmartList

Continue reading “Using SmartList Designer To Create Vendor EFT SmartList”

Integration Manager Bank Transaction – Unimplemented Cast From Btype ‘BROWSETYPE_UNKNOWN’

Microsoft Dynamics GPI’ve been configuring an integration in Integration Manager for a client recently to assist with an Intercompany Bank Reconciliation process. When we started discussing the integration I had taken a quick look at the sample Bank Transaction integration which ships with Integration Manager and had no problem.

As the project progressed and I created the Bank Transaction integration on the client’s server I encountered the below error:

Intercompany Bank Transfer - Transaction Progress

Show/Hide Error Message

Integration Log
Integration: Intercompany Bank Transfer - Transaction (ID: 66)
Action: None
Start Time: 25/02/2014 14:36:53

  25/02/2014 14:36:58 Source: IIntegrationEngine_Run, Status Code: 0    Opening source query...
  25/02/2014 14:36:59 Source: IIntegrationEngine_Run, Status Code: 0    Establishing source record count...
  25/02/2014 14:36:59 Source: IIntegrationEngine_Run, Status Code: 0    Beginning integration...
1:  GBP  Insert Failed 2. Seconds 
    DOC 1 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
2:  GBP  Insert Failed 0. Seconds 
    DOC 2 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
3:  GBP  Insert Failed 0. Seconds 
    DOC 3 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
4:  GBP  Insert Failed 0. Seconds 
    DOC 4 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
5:  GBP  Insert Failed 0. Seconds 
    DOC 5 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
6:  GBP  Insert Failed 0. Seconds 
    DOC 6 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
7:  GBP  Insert Failed 0. Seconds 
    DOC 7 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
8:  GBP  Insert Failed 0. Seconds 
    DOC 8 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
9:  GBP  Insert Failed 0. Seconds 
    DOC 9 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
10:  GBP  Insert Failed 0. Seconds 
    DOC 10 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
11:  GBP  Insert Failed 0. Seconds 
    DOC 11 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
12:  GBP  Insert Failed 0. Seconds 
    DOC 12 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
13:  GBP  Insert Failed 0. Seconds 
    DOC 13 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
14:  GBP  Insert Failed 0. Seconds 
    DOC 14 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
15:  GBP  Insert Failed 0. Seconds 
    DOC 15 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
16:  GBP  Insert Failed 0. Seconds 
    DOC 16 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
17:  GBP  Insert Failed 0. Seconds 
    DOC 17 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
18:  GBP  Insert Failed 0. Seconds 
    DOC 18 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
19:  GBP  Insert Failed 0. Seconds 
    DOC 19 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
20:  GBP  Insert Failed 0. Seconds 
    DOC 20 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
21:  GBP  Insert Failed 0. Seconds 
    DOC 21 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
22:  GBP  Insert Failed 0. Seconds 
    DOC 22 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
23:  GBP  Insert Failed 0. Seconds 
    DOC 23 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
24:  GBP  Insert Failed 0. Seconds 
    DOC 24 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
25:  GBP  Insert Failed 0. Seconds 
    DOC 25 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
26:  GBP  Insert Failed 0. Seconds 
    DOC 26 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
27:  GBP  Insert Failed 0. Seconds 
    DOC 27 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
28:  GBP  Insert Failed 0. Seconds 
    DOC 28 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
29:  GBP  Insert Failed 0. Seconds 
    DOC 29 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
30:  GBP  Insert Failed 0. Seconds 
    DOC 30 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
31:  GBP  Insert Failed 0. Seconds 
    DOC 31 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
32:  GBP  Insert Failed 0. Seconds 
    DOC 32 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
33:  GBP  Insert Failed 0. Seconds 
    DOC 33 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
34:  GBP  Insert Failed 0. Seconds 
    DOC 34 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
35:  GBP  Insert Failed 0. Seconds 
    DOC 35 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
36:  GBP  Insert Failed 0. Seconds 
    DOC 36 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
37:  GBP  Insert Failed 0. Seconds 
    DOC 37 ERROR: Unimplemented cast from Btype 'BROWSETYPE_UNKNOWN'
  25/02/2014 14:37:12 Source: FinishIntegration, Status Code: 3    Integration Failed
  25/02/2014 14:37:12 Source: FinishIntegration, Status Code: 3    Integration Results
    37 documents were read from the source query.
    37 documents were attempted:
        0 integrated without warnings.
        0 integrated with warnings.
        37 failed to integrate.

Finish Time: 25/02/2014 14:37:12

Source Total: 37
Successfully Integrated: 0
Integrated With Warning: 0
Failed: 37

Completion Status: Completed
Integration Status: No Documents Succeeded

I fiddled around without being able to identify a cause of the problem and, while I was doing this, found that the 37 transactions in the file had actually integrated despite the error message (an error in IM usually means the transaction or line will not be successfully integrated).

I brought a copy of the Integration Manager back to my test system and ran it on there and all of the files integrated without error.

The difference between my test system and the client’s system is that I have Microsoft Dynamics GP 2013 Service Pack 2 while the client is still on Service Pack 1.

In the medium term we will be upgrading the clients system to service pack 2, but in the meantime we’ll need to make do with increasing the number of permitted errors and accepting that an error will be displayed even as the transaction is integrated.

Troubleshooting The Microsoft Dynamics GP 2013 SP2 Web Client: Web Management Console – Unable To Access SnapIn Config Data Store

Microsoft Dynamics GPThe final error I ave to post about for now following my scale-out deployment of the Microsoft Dynamics GP 2013 Web Client series is on a problem with the Web Management Console.

After logging into the Web Management Console the following error was displayed:

Unable to access SnapIn config data store. Home SnapIn will not be loaded

Show/Hide Error Message

Unable to access SnapIn config data store. Home SnapIn will not be loaded

Continue reading “Troubleshooting The Microsoft Dynamics GP 2013 SP2 Web Client: Web Management Console – Unable To Access SnapIn Config Data Store”

Troubleshooting The Microsoft Dynamics GP 2013 SP2 Web Client: Target Principle Name Is Incorrect

Microsoft Dynamics GPAs errors with a scale-out deployment of the Microsoft Dynamics GP 2013 Web Client go, the one covered in this post is not one that you are likely to encounter.

When I tried logging into the web client I received an unexpected error and went to the Windows Event Viewer on the Session Central for more details:

Event Viewer

Show/Hide Error Message

System.Data.SqlClient.SqlException (0x80131904): The target principal name is incorrect. Cannot generate SSPI context.
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TdsLogin(SqlLogin rec)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user)
at System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe()
at System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode()
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
at System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Microsoft.Dynamics.GP.Web.Services.Session.Service.SessionCentralBaseHandler.GetServiceSecurityGroups(String serviceName, ILinqDataContextProvider dataContext)
at Microsoft.Dynamics.GP.Web.Services.Session.Service.SessionCentralDatabaseHandler.GetServiceSecurityGroups(String serviceName)
at Microsoft.Dynamics.GP.Web.Services.Session.Service.SessionCentralService.InitializePrincipalManager()
ClientConnectionId:52267e4f-774d-452b-9361-00a407058a3a

Continue reading “Troubleshooting The Microsoft Dynamics GP 2013 SP2 Web Client: Target Principle Name Is Incorrect”

Troubleshooting The Microsoft Dynamics GP 2013 SP2 Web Client: Could Not Establish Trust Relationship

Microsoft Dynamics GPIf you do a scale-out deployment of the Microsoft Dynamics GP 2013 Web Client you may encounter trust relationship problems if you do not have the SSL certificates correctly installed:

Event Viewer

Show/Hide Error Message

An error occurred during session monitoring 'System.ServiceModel.Security.SecurityNegotiationException: Could not establish trust relationship for the SSL/TLS secure channel with authority 'sc1.domain.azurecurve.co.uk:48650'. ---> System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.AuthenticationException: The remote certificate is invalid according to the validation procedure.

Continue reading “Troubleshooting The Microsoft Dynamics GP 2013 SP2 Web Client: Could Not Establish Trust Relationship”

Troubleshooting The Microsoft Dynamics GP 2013 SP2 Web Client: No Endpoint Listening

Microsoft Dynamics GPWhile installing the scale-out deployment of the Microsoft Dynamics GP 2013 Web Client, I encountered an error which took me a lot longer than I liked to resolve:

IE - Unexpected error

Show/Hide Error Message

There was no endpoint listening at https://sc1.domain.azurecurve.co.uk:48650/SessioNCentralService that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details. ---? Syste.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not propoerly respond after a period of time, or established connection failed because connected host has failed to respond: 198.252.71.316:48650

Continue reading “Troubleshooting The Microsoft Dynamics GP 2013 SP2 Web Client: No Endpoint Listening”

Troubleshooting The Microsoft Dynamics GP 2013 SP2 Web Client: Unauthorized attempt to call the GetSessionHostWithMostAvailability Operation On Session Central

Microsoft Dynamics GPI recently completed a series of posts on a scale-out deployment the Microsoft Dynamics GP 2013 Web Client; during the course of writing that series I encountered a few problems, which I thought it might be useful to post.

This first post takes a look at an error I received after installation. When I tried to log into the Web Client I received the below error message:

IE - Unexpected error

Show/Hide Error Message

Unexpected Error
An unexpected error has occurred. Press the Sign-in button to reconnect to the application.
Correlation ID: 66a9ddaa-4288-4535-affb-2a3ec0b072d3

Continue reading “Troubleshooting The Microsoft Dynamics GP 2013 SP2 Web Client: Unauthorized attempt to call the GetSessionHostWithMostAvailability Operation On Session Central”

Microsoft Dynamics GP 2013 SP2 Web Client Scale-Out Deployment: Series Index

Microsoft Dynamics GPI’ve been working on a series of posts on a Microsoft DynamicsGP 2013 web client scale-out deployment and it has turned out to be a very long series of posts.

Each post has contained an index at the bottom, but I thought it might be useful to follow up the series with a special Index post Continue reading “Microsoft Dynamics GP 2013 SP2 Web Client Scale-Out Deployment: Series Index”