16 November 2017

Your external IP for LCS 2-Tier access


15 November 2017

Dynamics 365 Unified Operations Platform Update 11 - failed in step 11

Dynamics 365 Unified Operations Platform Update 11 - failed on a sandbox environment in step 14 with the following error:

Start-Process C:\DynamicsTools\7za.exe -ArgumentList "x J:\DeployablePackages\432bcfed-4a5e-4b32-8e50-4aff2033e323\AOSService\Packages\files\dynamicsax-systemhealth-develop.7.0.4679.35176.zip -oJ:\AosService\PackagesLocalDirectory\SystemHealth -y -mmt" -RedirectStandardOutput C:\DynamicsAX\RunbookExecution-ExecuteParallelRunbook-432bcfed-4a5e-4b32-8e50-4aff2033e323_I0_R0\output\install-AXpackages_11152017093919-dynamicsax-systemhealth-develop.7.0.4679.35176-output.log -RedirectStandardError C:\DynamicsAX\RunbookExecution-ExecuteParallelRunbook-432bcfed-4a5e-4b32-8e50-4aff2033e323_I0_R0\output\install-AXpackages_11152017093919-dynamicsax-systemhealth-develop.7.0.4679.35176-error.log -Wait -WindowStyle Hidden -PassThru
7Zip failed to extract package Bin. At J:\AosService\PackagesLocalDirectory\InstallationRecords\dynamicsax-framework-bin.7.0.4679.35176\tools\installpackage.ps1:38 char:5
+     throw "$($_.Exception.Message)"
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7Zip failed to extract package Bin. At J:\AosService\PackagesLocalDirectory\InstallationRecords\dynamicsax-framework-bin.7.0.4679.35176\tools\dynamicspackagemanagement.psm1:104 char:9
+         throw "7Zip failed to extract package $packageName."
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To solve this issue I navigated to
J:\DeployablePackages\432bcfed-4a5e-4b32-8e50-4aff2033e323\AOSService\Packages\files\ and
J:\AosService\PackagesLocalDirectory\SystemHealth and changed properties of these folders. Removed the read only flag and clicked on apply. It will ask for admin rights and if you check again the read only flag is still partely there. A resume of the package deployment worked well.

13 November 2017

D365fO | OData - An existing connection was forcibly closed by the remote host 10054

As soon as you connect to 2 Tier environments SAT or PROD environments you should keep in mind to connect using TLS 1.2. The easiest way to do this is compiling with .Net 4.6 or higher

If you are using the sample service scripts you can just add the following line of code into OAuthHelper.cs

         public static string GetAuthenticationHeader()
            string aadTenant = ClientConfiguration.Default.ActiveDirectoryTenant;
            string aadClientAppId = ClientConfiguration.Default.ActiveDirectoryClientAppId;
            string aadResource = ClientConfiguration.Default.ActiveDirectoryResource;

            AuthenticationContext authenticationContext = new AuthenticationContext(aadTenant);
            AuthenticationResult authenticationResult;

            // TLS 1.2
            System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

            if (useWebAppAuthentication)
                string aadClientAppSecret = ClientConfiguration.Default.ActiveDirectoryClientAppSecret;
                var creadential = new ClientCredential(aadClientAppId, aadClientAppSecret);
                authenticationResult = authenticationContext.AcquireTokenAsync(aadResource, creadential).Result;
                // OAuth through username and password.
                string username = ClientConfiguration.Default.UserName;
                string password = ClientConfiguration.Default.Password;

                // Get token object
                var userCredential = new UserPasswordCredential(username, password);
                authenticationResult = authenticationContext.AcquireTokenAsync(aadResource, aadClientAppId, userCredential).Result;

            // Create and get JWT token
            return authenticationResult.CreateAuthorizationHeader();

Error Messages:

InnerException {"An existing connection was forcibly closed by the remote host"} 

ErrorCode 10054
Message "An existing connection was forcibly closed by the remote host"
Message "Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host." 

09 October 2017

D365fO: Error - Enum type 'RetailChannelAttributeModifier' for the field 'Modifier' is not found.

Error Path: [dynamics://View/RetailSalesTableChannelAttributeView]: Enum type 'RetailChannelAttributeModifier' for the field 'Modifier' is not found. C:\AOSService\PackagesLocalDirectory\ApplicationSuite\Foundation\AxView\RetailSalesTableChannelAttributeView.xml

This error indocates that the model you're working with needs a reference to the model Retail.

05 October 2017

D365fO Management Reporter reset data mart

If you need to reset the data mart of the managemnt reporter in D365fO the easiest way is to log onto the box that is running the management reporter service. For example BI Server for SAT environments.
Open a PowerShell as an administrator and run the following command:

cd J:\MRProcessService\MRInstallDirectory\Server\MRDeploy
Import-Module .\MRDeploy.psd1
Reset-DatamartIntegration -Reason OTHER -ReasonDetail "TESTDBrestore"

valid values for -Reason are: SERVICING, BADDATA, OTHER.
-ReasonDetail parameter is free text
both are not important. They are just stored in the environment monitoring.

28 July 2017

D365EE | This page can't be displayed

While importing code into my local environment I was facing a strange behavior. All models build without errors. But when trying to open AX in the browser I got the message "This page can't be displayed"
So I checked the IIS, the services,... did an iisreset, but nothing changed.

After some checks in VisualStudio I called "synchronize database" and found the root cause for this issue. The DB sync threw an error that told me that there is a form extension with the same name in two different models.
And indeed that was the issue. I renamed one of the extensions build the modules and could open AX again. Table sync was working as well,

What I've learned from this is that the compiler is not checking if form extensions with the same name exist in different models. So always check that manually!
And what I still don't understand is why a synchronize database is throwing an error in form extensions. Shouldn't it focus on tables and table extensions?