Dynamics AX 2012 : useRequestHeadersForMetadataAdress pour Web Service on IIS

Lors de la configuration de Web Services on IIS, je voulais rendre le site web accessible d'une adresse externe. Pour ce faire, j'ai fait les 3 configurations suivantes.

Tout d'abord,il faut modifier le host header du site AIFWebService:


Ensuite, j'ai modifié le URL du site web dans la section System Administration --> Services and Application Integration Framework --> Web Sites.



Pour terminer, j'ai ajouté useRequestHeadersForMetadataAdress à la configuration de mon port avec un adaptateur HTTP. 




D365 for Operations: New-AzureRmADSpCredential - Exception of type 'System.Exeception' was thrown.

Lors de la configuration de mon environnement D365 for Operations on-premises, je dois ajouter le certificat SSL au Service Principal Dynamics ERP dans mon Azure Active directory. Ceci est fait avec l'aide du script AddCertToServicePrincipal.ps1. Lors de l'exécution, j'ai reçu le message d'erreur suivant:

New-AzureRmADSpCredential : Exception of type 'System.Exeception' was thrown.



Dans ce cas-ci, le problème est dû au fait que je ne suis pas Global Admin dans Azure Active directory.

D365 for Operations : The requested operation requires elevation.

Lors de l'installation de D365 for Operations LBD (Local Business Data), j'ai reçu le message d'erreur suivant lors du déploiement du package AXSFType.

The requested operation requires elevation.


Il y avait aussi une erreur dans le fichier Code_AXSF_M_0.out situé dans:
  •  C:\ProgramData\SF\AOS_27\Fabric\work\Applications\AXSFType_App35\log

Microsoft.Dynamics.AX.Deployment.Setup.exe -bindir "C:\ProgramData\SF\AOS_27\Fabric\work\Applications\AXSFType_App35\AXSF.Code.1.0.0.201706231\Packages" -metadatadir "C:\ProgramData\SF\AOS_27\Fabric\work\Applications\AXSFType_App35\AXSF.Code.1.0.0.201706231\Packages" -sqluser "axdbadmin" -sqlserver "SQL.domain.local" -sqldatabase "AXDB" -setupmode servicesync -syncmode fullall -onprem 

System.ComponentModel.Win32Exception (0x80004005): The requested operation requires elevation

Je savais que UAC devait être désactivé sur le serveur AOS. En fait, UAC est désactivé lors de l'étape 9. Setups VMs lors de l'exécution du script Configure-PreReqs.ps1:


Il se trouve que UAC n'est pas complètement désactivée. Pour corriger le problème, j'ai dû aller dans la base de registres du serveur AOS et désactiver UAC:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

EnableLUA = 0

D365 for Operations : The service host terminated with exit code:2148734499

Lors de l'installation de D365 for Operations LBD (Local Business Data), j'ai reçu le message d'erreur suivant lors du déploiement du package AXDiagnosticsPkg. 

There was an error during CodePackage activation. The service host terminated with exit code:2148734499



De plus, j'avais le message d'erreur suivant sur le serveur AOS:

RunAsync failed due to an unhandled exception causing the host process to crash: Microsoft.Dynamics.Ax.Xpp.Security.EncryptionException: Encryption error occurred. 

J'ai ouvert un billet avec le support de Microsoft et voici le problème. Il se trouve que le code essaie de décrypter le password du compte axdbadmin en utiliser la librairie AX Crypto parce que le password décrypté possède les mêmes caractéristiques qu'une variable encoder en base64. Eh bien !

Pour corriger le problème, Microsoft m'a demandé d'exécuter le script PowerShell suivant:


J'ai dû ajouter un point d'exclamation à la fin du password et mettre à jour le fichier credentials.json. Ensuite j'ai redémarré l'agent local sur mon cluster Service Fabric et fais un redéploiement.

D365 for Operations: Service Principal not found

Lors de l'exécution de l'étape 11. Configure LCS connectivity for the tenant, je recevais le message d'erreur suivant:

Service Principal not found

Ceci est dû au fait que je n'ai pas l'application Microsoft Dynamics ERP dans mon Azure Directory. Vous pouvez activer la version d'essai pour Dynamics 365 for Opérations ici : Dynamics 365 for Operations Partner Trial. Vous devez cliquer en haut à droite sur Want To add this To en existing souscription? - Sign In.

Ensuite, vous pouvez vérifier si l'application a été ajoutée à votre Azure Active directory en utilisant le script ci-dessous:


Voici le résultat:


Dynamics AX : RPC Event List

Voici la liste des événements RPC. Ceci peut-être utilise lorsque vous utiliser Trace Parser.

Note: The client RPC are the same, just change the prefix "Server" to "Client".
Server* - Is an RPC to call the server from the client tier.
Client* - Is an RPC to call the client from the server tier.
RPC 
Purpose
ServerBuildHdlList
 Return a list of metadata elements based on their handles
ServerBuildList
 Returns a list of metadata elements
ServerBuildPrefix
 add a prefix to the infolog message
ServerBuildStackTrace
 Debug command
ServerCheckHdl
 Check metadata element (with Handle) version
ServerCheckMenuFuncVer
 Check menuitem version 
ServerClearDirtyCursor
 Clear cursors that are not current
ServerCloseSession
 Close session
ServerCommonSettings
 setup some common settings for the session
ServerConstructLabel
 Construct label
ServerCQLExit
 Shutdown the X++ interpretor and prepare for session exit
ServerCursorDeleteAll
 Delete cursor
ServerCursorInsertRecordset
 InsertRecordSet
ServerCursorUpdateAll
 Update cursors
ServerDatabasePid
 Get database SPIDs for a target session
ServerDBFFieldSqlDefault
 get default value for a field
ServerDBFIsMonocased
 determine whether field is case sensitive or not
ServerDBFName
 get field name
ServerDBFNameOrderByFmt
 Return formatter string for SQL name  of field (when used in order by)
ServerDBFNameWhereLikeFmt
 Return formatter string for SQL name of field (when used in where clause)
ServerDBIName
 get index name
ServerDBSessionCount
 get number of sessions
ServerDBSessionKill
 Admin can kill a user session
ServerDBSessionUpdateUsr
 Update session information
ServerDBSessionUser
 Set the user ID for the session
ServerDBTClusterIndex
 get clustered index of a table
ServerDBTName
 get table name
ServerDBTPrimaryIndex
 get primary index of a table
ServerDBTPropUnique
 return a unique index for the table
ServerDebugMsg
 Debug command
ServerDefineCountry
 Set country for labels
ServerDefineSession

ServerDestructCursor
 Free cursor
ServerEvalFunc
 Evaluate a X++ method that is marked as run on server
ServerFindHdl
 Find a metadata element based on its Handle
ServerFindModules
 Find out language label files
ServerFreeClass
 Free a remote class object
ServerGetAIFFiles
 Load files generated for consuming web services
ServerGetAssemblyNamesList
 Get names of .NET assemblies under the Reference AOT node
ServerGetDBSession
 Start a session with the server
ServerGetExecutionBreakInfo
 Debug command
ServerGetLoadBalanceServers
 When client starts up, it use this RPC to find load balanced servers in the current cluster.
ServerGetMenuItemNames
 get names of menuitems
ServerGetMenuNames
 Get names of menu
ServerGetStackSourceCode
 Debug command
ServerGetTransactionId
 Get transaction ID
ServerGetVariableData
 Debug command
ServerGetVariableHeader
 Debug command
ServerGetVariableHeaders
 Debug command
ServerGetVariableMemberData
 Debug command
ServerGetVariableMemberDataEx
 Debug command
ServerGetVariableMemberHeader
 Debug command
ServerGetVariableMemberHeaders
 Debug command
ServerGetVariableMemberHeadersEx
 Debug command
ServerLabelUpdate
 update label
ServerLastValueDelete
 Delete from the SysLastValueTable
ServerLastValueSave
 Save temporary information to the SysLastValue table
ServerLoadAccessEx
 Load client access rights
ServerLoadClass
 Load a class
ServerLoadClassMethods
 Load class methods
ServerLoadTable
 Load a table
ServerLoadTableMethods
 Load table methods
ServerLookUpAssemblyInfo
 Look up a .NET assembly information
ServerMessageInit
 Initialize the KTD system
ServerMessageRead
 Read in KTD messages
ServerNewHdl
 Get a new Handle for a metadata element
ServerNewLabelId
 get a new label ID
ServerNext             
 Execute a SQL query and get the next batch of results
ServerNotifyClientTraceStatus
 Notify AOS that client tracing is started or stopped
ServerOpenLabelFile
 Open a particular label file
ServerOpenLayer
 Get access to an application layer
ServerOpenSqlConnection
 Start SQL connection
ServerPing
 Client pings server periodically. If server does not receive a timely ping, it will terminate the client session and clean up the server side session.
ServerPreloadAodElements
 Preload AOD Elements
ServerPrintLoopDependencies
 print information about existing objects
ServerReadIndexTable
 Read index table of a label file
ServerReadPage
 Read in a page of the label file
ServerRecordInsertList
 RecordInsertList
ServerResetLoopDependencies
 maintain object dependencies
ServerResetRemoteNotFreeable
 maintain remote object 
ServerSetBreakpoints
 Debug command
ServerSetCalendar
 set calendar
ServerSetClassLoopDependencies
 maintain object dependencies
ServerSetDefaultCompany
 Set default Company (DataAreaID)
ServerSetNextStatement
 Debug command
ServerSetRunToBreakPoint
 Debug command
ServerSetTimeZone
 set timezone
ServerSetTraceInfo
 set trace info
ServerSetVariableData
 Debug command
ServerSetVariableMemberData
 Debug command
ServerSetVariableMemberDataEx
 Debug command
ServerSyncPending
 determine whether there are sync requests in the queue
ServerSyncRequest
 send in request to synchronize database tables
ServerSysDate
 Get system date
ServerTableAppendServerHdlList
 Add a handle to table list
ServerTestAllLoopDependencies
 Test which object can be freed
ServerTestClassLoopDependencies 
 test which class object can be freed
ServerUOWSaveChanges
 Unit of Work save changes
ServerUpdateCountryInfo
 Update country information
ServerUpdateDirtyCursor
 Update cursors that are not current
ServerUpdatedLabels
 Get updated labels
ServerUtilDelete
 Delete metadata element
ServerUtilFind
 Find a metadata element based on its value
ServerUtilLayers
 get available application layers
ServerUtilLoad
 Load meta data (such as class definition, table definition, form definition, etc.)
ServerUtilLoadTableList 
 Return list of tables
ServerUtilLoadTypeList
 Return a list of extended data types
ServerUtilSave
 Save modified metadata element
ServerUtilSetDefaultLevel
 Set default application layer
ServerValidateBreakpoint
 Debug command
ServerVersionOK
 check version of metadata element
ServerWriteAbort
 ttsabort
ServerWriteBegin
 ttsbegin
ServerWriteEnd
 ttscommit

D365 for Operations : This website requires you to log in: HTTP 403 Forbidden

Lors de la configuration de D365 for Opération on-premises, j'ai fait face à un petit problème dans la section 10. Set up a standalone Service Fabric cluster. Je n'étais pas capable d'accéder la console Service Fabric explorer en utilisant l'adresse https://sf.localdomain:19080. 

This website requires you to log in: HTPP 403 Forbidden.




La solution est d'importer le certificat SSL client.

Dynamics AX 2012 : Windows SDK for Windows Server and .NET Framework 4.0

Il est possible de modifier la configuration WCF client en utilisant le bouton Configure Services. Toutefois, un message vous demandera d'installer Windows SDK for Windows Server and .NET Framework 4.0.

To configure service parameters using the Microsoft Service Configuration Editor, download and install the Windows SDK for Windows Server and .NET Framework 4.0.



L'outil pour modifier la configuration locale se nomme Windows Communication Foundation (WCF) Service Configuration Editor (SvcConfigEditor.exe) et est incluse dans Windows SDK comme indiquer dans le message. Toutefois, il n'est pas nécessaire d'installer .NET Framework 4, l'outil est aussi inclus avec Windows SDK pour .NET Framework 3.5.


Vous devez installer seulement .NET Development Tools.


Après avoir fait l'installation, SvcConfigEditor.exe devrait se trouver dans C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin.

Dynamics AX 2012 : ProjParameters does not exist in the database

Lors de l'installation d'une nouvelle base de données Dynamics AX 2012 R3, la synchronisation ne pouvait pas finir dû à l'erreur suivante:

Synchronize database specified field ModelId of datasource ProjParameters does not exist in the database or configuration key on the field or on Extended Data Type used by the field is off. The view ForecastModelCube.



Afin de corriger l'erreur, il suffit d'activer la clé Forecast sous Projet I

D365 for Operations : Télécharger la dernière version de SSMS 16.X

Comme indiquer dans les articles Copy a Finance and Operations database from Azure SQL Database to a SQL Server environment et Copy a Finance and Operations database from SQL Server to a production Azure SQL Database environment, vous devez utiliser la dernière version de SQL Management Studio pour faire une copie de la base de données.

Puisque je cherche toujours le lien afin de télécharger la dernière version de SMSS 16.X, je vais le mettre ici: Previous SQL Server Management Studio Releases.

D365 for Operations : Exception occured on the metadata service on client or server.

J'avais plusieurs problèmes avec Visual Studio dans mes environnements de développement. Le premier problème survenait lorsque j'utilisais l'outil Table Browser, j'obtenais le message d'erreur suivant:

You are not authorized to login with your current credentials. You will be redirected to the login page in few seconds.

Le deuxième problème survenait lors de la sélection d'un champ dans une requête dans un nouveau DataSet. Le message d'erreur suivant apparaissait: 

Exception occured on the metadata service on client or server. See exception details below:
>Forbidden


Finalement, j'étais incapable d'ajouter un objet à mon projet, je recevais le message suivant:

Object reference not set to an instance of an object.


J'ai corrigé les 3 problèmes en exécutant l'outil AdminProvisionTool qui se trouve dans J:\AosService\PackagesLocalDirectory\Bin

D365 for Operations : DRA - The process was terminated due to an unhandled exception

Suite à l'installation de Documents Routing Agent (DRA) pour Dynamics 365 for Operations, j'étais incapable de lancer l'application. À tout coup, l'application plantait et les messages d'erreurs suivants étaient enregistrés dans le journal d'événement:

Erreur #1
Application: Microsoft.Dynamics.AX.Framework.DocumentRouting.Agent.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Security.SecurityException

Exception Info: System.IO.FileLoadException

Erreur #2
Faulting application name: Microsoft.Dynamics.AX.Framework.DocumentRouting.Agent.exe, version: 7.0.0.0, time stamp: 0x58cc850e
Faulting module name: KERNELBASE.dll, version: 6.3.9600.18666, time stamp: 0x58f32841
Exception code: 0xe0434352
Fault offset: 0x00015608
Faulting process id: 0x1084
Faulting application start time: 0x01d2ef76dfae2e24
Faulting application path: C:\Program Files (x86)\Microsoft Dynamics 365 for Operations - Document Routing\Microsoft.Dynamics.AX.Framework.DocumentRouting.Agent.exe
Faulting module path: C:\Windows\SYSTEM32\KERNELBASE.dll
Report Id: 1e9efb15-5b6a-11e7-80da-000d3a34fb6d
Faulting package full name: 
Faulting package-relative application ID:


Finalement, Microsoft a un hotfix pour ce problème: KB40322812. Prenez note que ce problème survient pour Platform Update 4, 5, 6 et 7 ! 


Il n'est pas nécessaire de déployer le hotfix à l'environnement pour obtenir le fichier d'installation MSI. Il suffit de télécharger l'hotfix et de prendre l'exécutable dans le dossier Document Routing Agent --> Packages