Showing posts with label D365. Show all posts
Showing posts with label D365. Show all posts

22 July 2020

D365 F&O SSRS Report drillthrough links

Because I always forget the syntax, here is a sample of a drill through link in an SSRS report 

=Microsoft.Dynamics.Framework.Reports.BuiltInMethods.GenerateDrillThroughLink(Parameters!AX_ReportContext.Value, Parameters!AX_UserContext.Value, "TWESalesTableMenuItem", "Display", "TWESalesTable", "SalesId", Fields!SalesId.Value)

If it requires more than one parameter:

=Microsoft.Dynamics.Framework.Reports.BuiltInMethods.GenerateDrillThroughLink(Parameters!AX_ReportContext.Value, Parameters!AX_UserContext.Value, "TWESalesTableMenuItem", "Display", "TWESalesTable", "TWECustGroup", Fields!CustGroup.Value, "TWEOrderStatus", "Open order")


06 March 2019

D365 F&O version 10 - new build features

Great new from Microsoft regarding the build and deployment features in D365 F&O Version 10:

"the build automation framework will not require a VM and will solely rely on Azure DevOps build capabilities."

So we need to no longer manage build environments :)
and the next one is even better. Finally there will be an integration between DevOps and LCS. After uploading hundreds of deployable packages to LCS this might be automated in the future.

"Builds that are release candidates can be automatically deployed to LCS and sandbox cloud environments."

I hope that this will be available soon :)

30 November 2018

D365 F&O | Sync DB timeout error

When the db sync of a D365 environment fails with a timeout error like the following:

AOS database sync failed. Microsoft.Dynamics.AX.Framework.Database.TableSyncException: Full sync did not complete successfully. Error: One or more errors occurred. 
...
SqlException:Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

You should check if the environment has enough ressources. Monitor the availbale CPU, RAM and disk speed. In some cases a simple reboot might help. If you are facind this error in a VM running on your laptop assign more than one core to the VM ;)

28 November 2018

D365 F&O | Change DevOps Build Agent

When you are managing more than one Microsoft Dynamics 365 for Finance and Operations environment throught DevOps (alias VSTS) it is a good idea to seperate the build agents into different build agent pools.
Creating a new agentpool in DevOps is quite simple but how do we change the link between the VSTSAgent which is running on the D365 box and the agent pool.

First of all create an AccessToken within DevOps as shown below:

After that connect to the D365 F&O server and navigate to C:\DynamicsSDK. There you will find a file named SetupBuildAgent.ps1. Create a copy of this file and open it in your favorite editor. Here we need to change two parameters:
AgentPoolName = "YourAgentPoolName"
VSOAccessToken = "YourNewlyCreatedToken"


After that we need a PowerShell which is running in admin mode. Execute your SetupBuildAgentXYZ.ps1 file and provide the base URL of the DevOps project collection


Finally you can check the agent pools in DevOps and you'll see that the Agent is now part of the agentPool you defined.

22 October 2018

D365 F&O: DB Sync - Failed to create a session; confirm that the user has the proper privileges to log on to Microsoft Dynamics 365 for Finance and Operation

After a DB copy I tried to sync the new DB using the cmd:

Microsoft.Dynamics.AX.Deployment.Setup.exe -bindir "K:\AOSService\PackagesLocalDirectory" -metadatadir "K:\AOSService\PackagesLocalDirectory" -sqluser "axdbadmin" -sqlserver "localhost" -sqldatabase "AxDB" -setupmode servicesync -syncmode fullall -isazuresql "false" -logfilename "C:\Temp\dbsync.log"

but this always failed with the following error message:

Microsoft.Dynamics.Ax.Xpp.ErrorException: Failed to create a session; confirm that the user has the proper privileges to log on to Microsoft Dynamics 365 for Finance and Operation

Looking at the event log I found the corresponding info:

A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.)

that was confusing. So it was not a wrong entry in the userInfo table. After some checks on the DB I found out that the sysglobalconfiguration was set to azuresql even though I was working with a local sql server
So after changing the configuration the DBSync was working again:

update sysglobalconfiguration
set value = 'SQLSERVER'
where name = 'BACKENDDB'

update sysglobalconfiguration
set value = 0
where name = 'TEMPTABLEINAXDB'

13 July 2018

D365 | on-premises SSRS error - Keyset does not exist

If the SSRS Server reports the following error in the AX-SSRSReportExtensions\Operational log it is important to check if the certificates used by the SSRS service are accesible from the service account running the SSRS service.
So first of all open the reporting service configuration manager and find out the service name. Than open certificate manager (mmc) an check the personal certificates. there you should see:

  • ReportingService Certificate
  • DataEncryptionCertificate
  • DataSigningCertificate


If they are not there go to Microsoft docs and read the installation instruction for on-prem ;)
If you see these certificates right click each of them and click "All Tasks" --> "Manage Private Keys..." and add the service user with read permissions.



message Unable to find the EDT metadata for field Name on table DirPartyTable.
exceptionMessage Exception occurred on the metadata service on client or server. See exception details below: >Keyset does not exist
exceptionType Microsoft.Dynamics.AX.Framework.Services.Client.MetadataServiceException

stackTrace Microsoft.Dynamics.AX.Framework.Services.Client.MetadataServiceException: Exception occurred on the metadata service on client or server. See exception details below: >Keyset does not exist ---> System.Security.Cryptography.CryptographicException: Keyset does not exist Server stack trace: at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) at System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle) at System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair() at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 dwKeySize, CspParameters parameters, Boolean useDefaultKeySize) at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey() at System.IdentityModel.Tokens.X509AsymmetricSecurityKey.get_PrivateKey() at System.IdentityModel.Tokens.X509AsymmetricSecurityKey.GetAsymmetricAlgorithm(String algorithm, Boolean privateKey) at Microsoft.IdentityModel.CryptoUtil.GetSignatureFormatterForSha256(AsymmetricSecurityKey key) at Microsoft.IdentityModel.Protocols.XmlSignature.SignedXml.ComputeSignature(SecurityKey signingKey) at Microsoft.IdentityModel.Protocols.XmlSignature.EnvelopedSignatureWriter.ComputeSignature() at Microsoft.IdentityModel.Protocols.XmlSignature.EnvelopedSignatureWriter.OnEndRootElement() at Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler.WriteAssertion(XmlWriter writer, Saml2Assertion data) at Microsoft.IdentityModel.Tokens.SecurityTokenSerializerAdapter.WriteTokenCore(XmlWriter writer, SecurityToken token) at System.ServiceModel.Security.SendSecurityHeader.OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion) at System.ServiceModel.Channels.MessageHeader.WriteHeader(XmlDictionaryWriter writer, MessageVersion messageVersion) at System.ServiceModel.Security.SecurityAppliedMessage.OnWriteMessage(XmlDictionaryWriter writer) at System.ServiceModel.Channels.BufferedMessageWriter.WriteMessage(Message message, BufferManager bufferManager, Int32 initialOffset, Int32 maxSizeQuota) at System.ServiceModel.Channels.TextMessageEncoderFactory.TextMessageEncoder.WriteMessage(Message message, Int32 maxMessageSize, BufferManager bufferManager, Int32 messageOffset) at System.ServiceModel.Channels.HttpOutput.SerializeBufferedMessage(Message message, Boolean shouldRecycleBuffer) at System.ServiceModel.Channels.HttpOutput.Send(TimeSpan timeout) at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.SendRequest(Message message, TimeSpan timeout) at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) at System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(Message message, TimeSpan timeout) at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at Microsoft.Dynamics.AX.Framework.Services.Metadata.Service.IAxMetadataService.GetTableMetadataByName(String[] tableNames) at Microsoft.Dynamics.AX.Framework.Services.Client.MetadataServiceClient.<>c__DisplayClass22_0.b__0(IAxMetadataService channel) at Microsoft.Dynamics.AX.Framework.Services.Client.ServiceClientHelper.InvokeChannelOperation[TResult,TChannel](IServiceClient`1 client, Func`2 operationInvoker, Func`2 exceptionWrapper) --- End of inner exception stack trace --- at Microsoft.Dynamics.AX.Framework.Services.Client.ServiceClientHelper.InvokeChannelOperation[TResult,TChannel](IServiceClient`1 client, Func`2 operationInvoker, Func`2 exceptionWrapper) at Microsoft.Dynamics.AX.Framework.Services.Client.MetadataServiceClient.GetTableMetadataByName(String[] tableNames) at Microsoft.Dynamics.AX.Framework.Services.Client.MetadataServiceProxyFactory.<>c__DisplayClass7_0.b__0() at Microsoft.Dynamics.AX.Framework.Services.Client.MetadataServiceProxyFactory.GetMetadata[TMetadata](Func`1 metadataServiceInvoker, Func`1 nodeNotFoundErrorMessage) at Microsoft.Dynamics.AX.Framework.Services.Client.MetadataServiceProxyFactory.CreateTableMetadataProxy(String tableName) at Microsoft.Dynamics.AX.Framework.Services.Client.MetadataCache.<>c.<.cctor>b__71_5(String alternateKey) at Microsoft.Dynamics.AX.Framework.Services.Client.CustomMetadataAccessor`4.GetItemByAlternateKey(TAlternateKey alternateKey) at Microsoft.Dynamics.AX.Framework.Services.Client.CustomMetadataAccessor`4.GetMainKeyFromAlternate(TAlternateKey alternateKey) at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.<>c__DisplayClass14_0.b__0() at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.CacheBase.CacheRead(ICacheReadArgs cacheReadArgs, Action tryReadAction, Action readThroughAction) at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.GetItemInternal(CacheItemReadArgs itemReadArgs) at Microsoft.Dynamics.AX.Framework.Services.Metadata.Caching.TripleKeyedItemCache`4.GetItemByAlternateKey(TAlternateKey alternateKey) at Microsoft.Dynamics.AX.Framework.Services.Client.MetadataCache.GetTableMetadata(String tableName) at Microsoft.Dynamics.AX.Framework.Reporting.Shared.ClientServicesProxy.OnGetTableMetadata(String tableName) at Microsoft.Dynamics.AX.Framework.Reporting.Shared.ClientServicesProxy.GetTableMetadata(String tableName) at Microsoft.Dynamics.AX.Framework.Reporting.Shared.ClientServicesProxy.GetFieldMetadata(String tableName, String fieldName) at Microsoft.Dynamics.AX.Framework.Reporting.Shared.ClientServicesProxy.OnGetTableFieldMetadata(String tableName, String fieldName) at Microsoft.Dynamics.AX.Framework.Reporting.Shared.ClientServicesProxy.GetTableFieldMetadata(String tableName, String fieldName) at Microsoft.Dynamics.AX.Framework.Reporting.Shared.ExtendedDataTypeHelper.TryGetExtendedDataTypeMetadata(String customPropertyEDTValue, IErrorLogger errorLogger, String reportName)

16 May 2018

D365 F&O - Debugging in on-premises environments

If you are facing errors in your Dynamics 365 for finance and operations on-prem environment there is currently no real debugging story available. But there is a new article from Tariq Bell on how to debug using WinDbg:

https://blogs.msdn.microsoft.com/axsa/2018/05/16/debug-a-dynamics-365-for-finance-and-operations-on-premises-instance-without-visual-studio/

At least a starting point and a really nice GUI ;)

09 May 2018

D365 F&O Deployment to on-prem failed during download

If the deployment of Dynamics 365 for finance and operations fails after preparing phase when the asset is downloading you should check the logs. If there is a message like the one below just verify that the orchestrator nodes are online and click retry.

MachineName SRV-XYZ
Message Unable to download asset xyzxyzxyzxyzxyzxyz

Detail at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at Microsoft.Dynamics.Operations.Local.LocalAgentEvents.LocalAgentEventHelpers.ErrorPrettify(LocalAgentEventSource source, Exception ex, Int32 errorCode, String format, Object[] values) at OrchestrationService.LcsArtifactsProvider.d__10.MoveNext() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run() at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(Action action, Boolean allowInlining, Task& currentTask) at System.Threading.Tasks.Task.FinishContinuations() at System.Threading.Tasks.Task`1.TrySetResult(TResult result) ...

27 April 2018

D365 F&O financial reporting deployment error - event logs

AX LocalAgent:

Error 1 

Message
Module financialreporting failed
Detail
System.InvalidOperationException: An error was encountered. Details may be found in the deployment logs at 'C:\ProgramData\Microsoft Dynamics ERP\Management Reporter\Logs' System.AggregateException: One or more errors occurred. ---> System.TimeoutException: Operation timed out. ---> System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80071BFF at System.Fabric.Interop.NativeClient.IFabricApplicationManagementClient10.EndProvisionApplicationType3(IFabricAsyncOperationContext context) at System.Fabric.Interop.Utility.<>c__DisplayClass22_0.b__0(IFabricAsyncOperationContext context) at System.Fabric.Interop.AsyncCallOutAdapter2`1.Finish(IFabricAsyncOperationContext context, Boolean expectedCompletedSynchronously) --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at SetupInfrastructure.ServiceFabricApplicationSetupManager`1.d__24.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at Microsoft.Dynamics.Performance.Deployment.FinancialReportingDeployer.Program.DeployApplication(AXConfigurationSettings settings, String packagePath, ApplicationPrincipalUserSettings principalUserSettings) at Microsoft.Dynamics.Performance.Deployment.FinancialReportingDeployer.Program.Setup(ParameterHandler parameterHandler) at Microsoft.Dynamics.Performance.Deployment.FinancialReportingDeployer.Program.Main(String[] args) ---> (Inner Exception #0) System.TimeoutException: Operation timed out. ---> System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80071BFF at System.Fabric.Interop.NativeClient.IFabricApplicationManagementClient10.EndProvisionApplicationType3(IFabricAsyncOperationContext context) at System.Fabric.Interop.Utility.<>c__DisplayClass22_0.b__0(IFabricAsyncOperationContext context) at System.Fabric.Interop.AsyncCallOutAdapter2`1.Finish(IFabricAsyncOperationContext context, Boolean expectedCompletedSynchronously) --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at SetupInfrastructure.ServiceFabricApplicationSetupManager`1.d__24.MoveNext()<--- args="" assembly="" assemblyfile="" at="" currentfolder="" microsoft.dynamics.performance.deployment.financialreportingdeployer.program.main="" moduleargs="" setupcore.setupmanager.="" setupcore.setupmanager.launchprocessinappdomain="" startupexe="" string="" system.appdomain._nexecuteassembly="" system.appdomain.executeassembly="" tring="" untimeassembly="" workingdir="">c__DisplayClass12_1.b__6()

Error 2

Message
Task OrchestrationService.DeployModulesRunnerTask,OrchestrationService failed for command id 3f3c0269-1c9d-448f-8e89-4e9a019cb8f4
Detail
System.InvalidOperationException: Unable to deploy modules at OrchestrationService.DeployModulesRunnerTask.Run(OrchestratorRunbookResource runbookResource, String commandId, String jobId, String runbookTaskId) at OrchestrationService.OrchestrationJobManager.<>c__DisplayClass14_0.b__4()



26 April 2018

D365 F&O on-premises | deployment failed for application financial reporting alias management reporter

During our installations and code deployments into Dynamics 365 for Finance and Operations on-premises we struggled a lot with one of the last steps of the installation: The financial reporting application. We have seen different issues till now. And there are several things to check when this step fails.

  • Check EventLog of primary orchestrator node for error messages in the local-agent folder.
  • Install ETW-Manisfest on the orchestrator node if not already there to check the MR logs:
    https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/deployment/troubleshoot-on-prem#mr
  • Check the userinfo table of AX DB. There must be a user called FRServiceUser 
  • Check if there are reports still checked out:

    select * from reporting.ControlReport where CheckedOutTo is not null

  •  If yes just update the following tables (on your own risk):
    update Reporting.ControlReport
    set CheckedOutTo = null


    update Reporting.ControlRowMaster
    set CheckedOutTo = null


    update Reporting.ControlColumnMaster
    set CheckedOutTo = null


    update Reporting.ControlTreeMaster
    set CheckedOutTo = null

If all the above is not solving the issue you could also try to replace the financialReporting DB with an empty financialReporting database.

D365 F&O | Workflow editor - Your security settings do not allow this application to be run on your computer

When opening the workflow editor from Dynamics 365 for Finance and Operations you may see an error message saying: "Your security settings do not allow this application to be run on your computer."



This is a security configuration from Windows. Check the registry settings regarding the prompting level for trusted sites and local intranet (Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\TrustManager\PromptingLevel). They should be enabled. If not just change them.


Than you just need to add the D365 F&O url as a trusted site in internet explorer setting. Try again and it should look like this:







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;
            }
            else
            {
                // 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:

J:
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?




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 7.0.4.0 to 7.0.5.0
  • 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"
  • IISRESET
finally you will see the new version in the about page: Update5 (7.0.4475.16165)

And all NoYes controls look pretty now