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?

04 July 2017

Dynamics 365 Enterprise Edition - On Premise Informations

Here are all the important informations regarding the on premise installation of D 365


The System requirements are very interresting :)

After you have all the servers and requirements in place go ahaed with this: Set up and deploy on-premises environments.

Just to find out which Features not implemented in on-premises deployments.

So it still looks like cloud first ;)

03 July 2017

Hey Microsoft why not calling it AX?

I just started a D365 july update and as promissed by Microsoft they changed the name again.

But honestly: Microsoft Dynamics 365 for Finance and Operations, Enterprise Edition is not as short as it could be.
Please rename it back to AX it was so easy and short :)

14 June 2017

D365EE | The menu item with name sysloadstartpage could not be opened

After a full build with no errors I was not able to log onto the build environment. It displayed the message:

The menu item with name sysloadstartpage could not be opened.

normally you can get rid of this message with a full database sync. In my case it required a build of the ApplicationSuite and a database syncronization. That is really strange because the build process should already have build the packages.

07 April 2017

D365 | Instrall Platform Update 5 on local DEV VM

Lately I managed to install platform update 5 in my development machine. It was easier than platform update 4. Here are the steps to follow
You don't need to change the config files anymore :)

  • Download platform update 5 from LCS (for details see the PU4 post)
  • Unblock the zip and extract it
  • Open a command prompt and navigate to the folder
    • AXUpdateInstaller.exe generate -runbookid="OneBoxDev" -topologyfile="DefaultTopologyData.xml" -servicemodelfile="DefaultServiceModelData.xml" -runbookfile="OneBoxDev-runbook.xml" 
    • AXUpdateInstaller.exe import -runbookfile=OneBoxDev-runbook.xml
    • AXUpdateInstaller.exe execute -runbookid=OneBoxDev
  • If the installations stops at step 5 - restart the server and continue
    • AXUpdateInstaller.exe execute -runbookid=OneBoxDev -rerunstep=5
  • rebuild your application
  • update VS extensions (for details see the PU4 post)
    • from to
  • Regenerate form adaptor models 
    • cd C:\AOSService\PackagesLocalDirectory\Bin • xppfagen.exe -metadata=C:\AosService\PackagesLocalDirectory -model="ApplicationPlatformFormAdaptor" -xmllog="c:\temp\log1.xml" 
    • xppfagen.exe -metadata=C:\AosService\PackagesLocalDirectory -model="ApplicationFoundationFormAdaptor" -xmllog="c:\temp\log2.xml"
    • xppfagen.exe -metadata=C:\AosService\PackagesLocalDirectory -model="DirectoryFormAdaptor" -xmllog="c:\temp\log3.xml"
finally you will see the new version in the about page: Update5 (7.0.4475.16165)

And all NoYes controls look pretty now

03 April 2017

D365fO | change view edit mode of a form

To switch between view and edit mode of an AX form we used element.task() in AX 2012 (for details see: this post). In AX 7 alias D365 for Operations this is also possible, but the code looks different:

FormRun formRun = sender;
FormRunViewEditModeHelper viewEditModeHelper = formRun.viewEditModeHelper();

24 February 2017

D365 | Install Platform Update 4 on a local development VM

First of all there should be no overlayering of the application platform !!!

  • Application Platform
  • Application Foundation 
  • Test Essentials 
Download the platform update

  • Log onto your dev environemnt 
  • Go to your LCS project’s Asset library. 
  • On the Software deployable package and click Import  
  • Select Platform Update 4 and click Pick
  • Click on the Name to start the download

Prepare the installation

  • Unzip the file to a local directory 
  • navigate to: ...\AOSService\Scripts\PlatformUpdatePackages.Config 
    • change the MetaPackage value: to dynamicsax-meta-platform-development
      (This is important if you are updating you dev vm)
    • If you are updating a local VM you can leave the Machine name in DefaultTopologyData.xml file as localhost, otherwise change it to the name of the pc
  • Open a command prompt as admin and navigate to the folder update folder#
    • AXUpdateInstaller.exe generate -runbookid="OneBoxDev" -topologyfile="DefaultTopologyData.xml" -servicemodelfile="DefaultServiceModelData.xml" -runbookfile="OneBoxDev-runbook.xml" 
    • AXUpdateInstaller.exe import -runbookfile=OneBoxDev-runbook.xml
    • AXUpdateInstaller.exe execute -runbookid=OneBoxDev
    • If you need to rerun a step use the following command:
      AXUpdateInstaller.exe execute -runbookid=OneBoxDev -rerunstep=1 
  • rebuild your application

Update Visual Studio Extension 

  • Open Visual Studio and click Tools - Extensions 
    • Uninstall Dynamics 365 for Operations extension
    • restart and close VS 
  • Run the installer
  • After that Version should be installed

Regenerate form adaptor models 
  • Cd C:\AOSService\PackagesLocalDirectory\Bin 
  • xppfagen.exe -metadata=C:\AosService\PackagesLocalDirectory -model="ApplicationPlatformFormAdaptor" -xmllog="c:\temp\log1.xml"  
  • xppfagen.exe -metadata=C:\AosService\PackagesLocalDirectory -model="ApplicationFoundationFormAdaptor" -xmllog="c:\temp\log2.xml"  
  • xppfagen.exe -metadata=C:\AosService\PackagesLocalDirectory -model="DirectoryFormAdaptor" -xmllog="c:\temp\log3.xml" 

Install the new Data Management service 

  • Cd into \DIXFService\Scripts  
  • msiExec.exe /uninstall {5C74B12A-8583-4B4F-B5F5-8E526507A3E0} /passive /qn /quiet 
  • msiexec /i "DIXF_Service_x64.msi" ISSQLSERVERVERSION="Bin\2012" SERVICEACCOUNT="NT AUTHORITY\NetworkService" /qb /lv DIXF_log.txt 

Open D365 and check the About Page it should show Platform Update 4 7.0.4425.16161 :)

04 February 2017

D365 | Recurring Integration - Application ID

When you create a recurring data job in Dynamics 365 (AX7) you will be asked for an application id in the "Setup authorization policy" tab.
If you don't have already created your application id within the azure active directory you need to follow these steps to get it done. This relates to the new azure portal: https://portal.azure.com

  1. Login to the azure portal and click on azure active directory
  2. Manage -> App registration and click ADD
  3. In the Create dialog enter a name, select Application type Native and provide a uri. For example the address of your onebox development environment: https://usnconeboxax1aos.cloud.onebox.dynamics.com
    Click Create - and wait a second
  4. Navigate to the newly created app - now you should already see the application id that you're looking for
  5. Before you continue in D365 click on required permissions - Add
  6. Select: Microsoft Dynamics ERP (Microsoft.ERP) as the API and select permissions as needed and click select and done
  7. Now your required permissions should look like this

That should be it. Copy the application id and enter it in Dynamics 365. Now you can go on with the recurring integration.

10 January 2017

D365 | x++ project cannot be built. Another build is in progress

I just faced the following error while trying to built a sollution on my local Dynamics 365 VM:

x++ project cannot been built. another build is in progress.

After trying the usual things like restarting VS and killing tasks without luck, I solved it by rebooting my local VM.
If anyone knows a faster way please leave a comment.