Dynamics AX : Contourner le système d'équilibrage de charge

Dans un environnement multi-aos configurer dans un cluster, il peut être difficile d'établir une connexion avec un AOS particulier. En effet, lorsque le serveur fait parti d'un cluster, le mécanisme interne balance les connexions entre les membres du cluster. Ainsi, il se peut vous devez ouvrir une multitude de clients afin d'être rediriger sur le serveur dont vous voulez.

Toutefois, il est possible de configurer le client afin de contourner le système d'équilibrage de charge. Il suffit d'utiliser la commande -internal -loadbalance=0 dans la configuration du client.




Dynamics AX : SSRS Authentification Persistance

Une configuration SSRS Scale Out deployment peut amener son lot de problèmes. J'ai déjà écrit au sujet de l'erreur HTTP status 401: Unauthorised. Ici, je parle du même problème, mais d'un scénario different.

Dans ce cas-ci, le client AX envoie deux requêtes, la première requête fonctionne et la deuxième requête échoue. Par exemple, lorsque l'utilisateur imprime un rapport SSRS sur une imprimante réseau, la première requête est envoyé afin d'obtenir le rapport SSRS et une deuxième requête afin de faire l'impression sur une imprimante réseau.


Plusieurs choses ici entrent en ligne de jeu. Tout d'abord, le load balancer est configuré avec une affinité de type COOKIEINSERT. Ceci veut dire qu'un cookie est placer dans la première requête, ainsi les paquets réseau subsequent de la même requête sont envoyer au même serveur SSRS.

Ensuite, le load balancer est configuré en Round Robin, donc la première requête est envoyée au premier serveur et la deuxième requête au second serveur SSRS.

La question à laquelle je me suis longtemps posé est: Pourquoi le client n'effectue pas une authentification lors de la deuxième requête.

La réponse est: Parce que ce sont deux requêtes envoyer lors de la même connexion. 

Ceci dit, vous avez donc trois solutions.

1 - Changer le mode d'affinité de COOKIEINSERT à SOURCEIP. Ainsi, la deuxième requête, qui vient de la même adresse IP, va être redirigé au même serveur SSRS. À ne pas faire si vous utiliser un Proxy ou un seul serveur RDS pour tous vos clients AX.

2 - Authentification Persistance. Cette configuration force le client à s'authentifier à chacun requête au lieu de chaque connexion. Cette solution ajoute du trafic réseau.

This property controls whether the report server requires authentication for each client request or only once per connection. By default, the EnableAuthPersistance property is set to True in the RSReportServer.config file. This setting applies the security context of the client's first request to each subsequent request. However, if your environment includes a proxy server that sends requests from multiple users as a single connection, you should disable this property by setting its value to False. Disabling it forces the report server to authenticate each request individually.

3 - Kerberos

Dynamics AX : Operation is not valid due to the current state of the object.

Sur mes serveurs SSRS, je n'etais pas capable de supprimer un rapport. Le message d'erreur suivant apparaît:

Operation is not valid due to the current state of the object.




Afin de corriger la situation, j'ai modifié le fichier C:\Program Files\Microsoft SQL Server\MSRS12.MSSQLSERVER\Reporting Services\ReportManager\Web.config

J'ai ajouté la clé suivante dans la section <appSettings>

<add key="aspnet:MaxHttpCollectionKeys" value="1500"/>


Ensuite il faut redémarrer le service SSRS.

Dynamics AX : EntireCache Tables

Voici un problème intéressant que j'ai eu dernièrement.

L'équipe de migration de données utilise un outil maison pour copier la configuration d'une compagnie vers une autre. L'outil est très simple, il suffit d'indiquer la compagnie source, la compagnie destination et les tables que vous voulez copier. Le tout est exécuté dans un batch.

Après quelques minutes, le message d'erreur suivant apparaît dans le journal d'événement du serveur AOS:

Object Server 01:  Dialog issued for client-less session 5: Cannot create temporary file: C:\Users\SVC_AXAosProd\AppData\Local\Temp\$tmp00050000.$$$.



Je confirme que le disque n'est pas plein.

Après une dizaine de minutes, le service AOS crash:

The Microsoft Dynamics AX Object Server 6.3$01-MicrosoftDynamicsAX service terminated unexpectedly.  It has done this 1 time(s).

Heureusement, j'avais configuré le dump automatique de la mémoire du service AOS. Je prends mon dump et je l'upload dans LCS et je l'analyse avec l'outil Crash and Hang Analysis

J'anticipais de voir un crash en lien avec l'outil utiliser pour copier les données. Mais ce ne fut pas le cas, en fait le crash semble être lié au kernel. Wow.

Ax32Serv!readPage
Ax32Serv!getPage
Ax32Serv!ServerReadPage


Je jette un coup d'oeil un dossier temporaire qui se trouve sur le serveur AOS. J'y trouve plus de 1000 fichiers, donc ce n'est pas un problème d'access.


Qu'est ce qu'un fichier $tmp*.$$$ ?

Il est possible de mettre des tables AX dans le cache mémoire du serveur AOS. La grosseur limite de la table est de 96 KB. Si le table est plus grosse que la limite, le mémoire déborde sur le disque (spilling to disk). Lorsque la mémoire déborde sur le disque, l'AOS mets les données dans des fichiers temporaires $tmp*.$$$.

Heureusement, j'avais DynamicsPerf d'installer dans mon environnement. J'ouvre le project DynamicsPerf et j'exécute le requêté: TOO_BIG_FOR_ENTIRE_TABLE_CACHE, Find tables that have entire table cache enabled that are large than 128 KB causes the cache to overflow to disk on the AOS serveur

Voici le résultat:


Pour votre information, 96K = 12 pages. J'ai des tables 138 fois trop grosse pour être mise en cache ! Je demande à l'utilisateur quelle table il tente de copier et sans surprise c'était LEDGERINTERCOMPANY !

J'ai changé la propriété CacheLookup de table LedgerInterCompany et la copie à fonctionner sans faire crasher le service AOS !


Dynamics AX 2012 : The REFERENCES permission was denied on the object 'DATAAREA'

La version CU14 de management reporter semble avoir bug lors de la création de la Data Mart. L'intégration ne démarrait pas et les messages d'erreur suivants sont apparu dans le journal d'événements "DataMart Intégration": 

The REFERENCES permission was denied on the object 'DATAAREA', database 'MicrosoftDynamicsAX',schema 'dbo'. Rolling back transaction. 

 The REFERENCES permission was denied on the object 'VIRTUALDATAAREALIST', database 'MicrosoftDynamicsAX',schema 'dbo'. Rolling back transaction. 

 The REFERENCES permission was denied on the object 'DIRPARTYTABLE', database 'MicrosoftDynamicsAX', schema 'dbo'. Rolling back transaction.

CREATE VIEW permission denied in database 'MicrosoftDynamicsAX'.
Rolling back transaction.

Il faut manuellement configurer les permissions sur la base de donner transactionnels d'AX. Prenez note qu'il faut assigner les permissions au compte d'intégration et non au compte du service.

USE [MicrosoftDynamicsAX]
GO
GRANT REFERENCES ON [dbo].[DATAAREA] TO [DOMAIN\prodmrint]
GRANT REFERENCES ON [dbo].[VIRTUALDATAAREALIST] TO [DOMAIN\prodmrint]
GRANT REFERENCES ON [dbo].[DIRPARTYTABLE] TO [DOMAIN\prodmrint]
GRANT CREATE VIEW TO [DOMAIN\prodmrint]
GO

Dynamics AX 2012: Could not load file or assembly or one of its dependencies. The system cannot find the file.

Lors du déploiement des rapports SSRS, le message d'avertissement est apparu:

WARNING: Parts of the reports deployment failed because one or more business logic assemblies was not available. Make sure all referenced business logic assemblies exist in the Microsoft Dynamics AX client Application Object Tree.

Il est fort probable que le déploiement d'au moins un rapport échoue avec une erreur similaire: 

Error while loading code module: 'ReportName.BusinessLogic, version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Details: Could not load file or assembly or one of its dependencies. The system cannot find the file. 

Le sommaire devrait ressembler à ceci;


Le problème c'est que le design a besoin du assembly pour pouvoir être déployé. Mais comme le message d'avertissement du début l'indique, l'assembly n'a pas disponible dans l'AOT.

C:\Program Files\Microsoft SQL Server\MSRS12.MSSQLSERVER\Reporting Services\ReportServer\bin

Pour corriger le problème, vous devez être sûr de voie l'assembly dans le projet output dans C-Sharp Projet du rapport. Ensuite, vous pouvez redeployer le rapport.



SQL : taille d'unité d'allocation 4KB vs 64KB

Je suis en milieu d’implantation d'un système Dynamics AX 2012 R3 pour un de nos clients. On m’a récemment remis une machine virtuelle pour le serveur SQL. Lorsque je reçois un serveur SQL, je vérifie toujours la configuration des disques et j’effectue des tests de performances. 

Je m’aperçois que les disques sont configuré avec des blocs de 4KB. Il est clair que Microsoft recommande de formater les disques en 64KB pour des raisons de performance.



Avant d’envoyer un email à mon client afin de lui dire que les disques doivent être configuré avec des blocs de 64KB, je décide de faire des tests de performance afin de démontrer qu’il y a un gain de performance entre 4KB et 64KB.

À ma grande surprise, les tests indiquent AUCUN gain de performances. Voici mes tests :

64K = Lecture de blob de 64KB
1T, 4T, 8T = Nombre de thread
O32 = Queue Depth de 32
W0, W25 = Pourcentage en ecriture

Lors de mes tests, je désactive la cache logicielle et matérielle. La lecture et écriture est faite de façon aléatoires (non séquentielles)


Voici le tableau des résultats :


Disque avec taille d'unité d'allocation de 4KB


Disque avec taille d'unité d'allocation de 64KB



Je m’attendais à voir plus d'IOPs et une latence moins élever pour le disque configuré avec des blocs de 64 KB. Tout simplement parce que je me disais qu'il est plus rapide de lire 64 KB d'information lorsque le système doit lire seulement un bloc 64 KB. En revanche, lire 64 KB d’information lorsque le disque est formatter avec des blocs de 4 KB requiert la lecture de 16 blocs au disque, donc plus d'opérations physiques (mouvement des têtes) et par conséquent une plus longue latence.

Donc, pourquoi les chiffres ne démontrent aucune différence entre 4 KB et 64 KB ? J’en suis venu à la conclusion logique que les performances sont les mêmes puisque c'est un disque virtuel. Le disque est placer dans un VMFS formatter avec des blocs de 1 MB. Donc, il y a très peu d'impact au niveau des disques physiques.

Ainsi, j'imagine que les performances sont meilleurs seulement lorsque les disques sont RAW.

Toutefois. ma question est : Pourquoi Microsoft recommande de formatter les disques en 64 KB pour SQL même sur les machines virtuelles ? Surement parce que ça ne fait pas de mal.

SQL : DBCC CHECKDB last execution

Voici une requête que j'aime bien utiliser afin de savoir la dernière exécution de DBCC CHECKDBD pour chaque base de données

DECLARE @name VARCHAR(256)

CREATE TABLE #dbinfo
(ParentObject varchar(100),
Object varchar(100),
Field varchar(100),
Value varchar(100))

CREATE TABLE #dbinforesults
(dbname varchar(256),
LastRanDate datetime,
Status varchar(100),
DataPurityCheckEnabled varchar(3))

DECLARE db_cursor CURSOR FOR
SELECT name FROM sys.databases
WHERE state_desc='ONLINE'

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN

INSERT INTO #dbinfo
EXEC('DBCC DBINFO (['+@name+']) WITH TABLERESULTS')

INSERT INTO #dbinforesults (dbname, LastRanDate, Status)
(SELECT DISTINCT @name as dbname, Value as LastRanDate,
CASE
WHEN Value = '1900-01-01 00:00:00.000' THEN CONVERT(nvarchar (50),'BAD! DBCC CHECKDB Never Executed')
WHEN DATEDIFF(d, Value, GETDATE()) > 14 THEN CONVERT(nvarchar (50),'BAD! DBCC CHECKDB last execution more than 14 days ago')
ELSE CONVERT(nvarchar(50),'OK! DBCC CHECKDB last execution less than 14 days ago')
END AS Status
FROM #dbinfo
WHERE Field='dbi_dbccLastKnownGood')

UPDATE #dbinforesults SET DataPurityCheckEnabled=(SELECT
CASE
WHEN @name='master' OR @name='model' THEN 'N/A'
WHEN Value=0 THEN 'No'
WHEN Value=2 THEN 'Yes'
END as DataPurityEnabled
FROM #dbinfo
WHERE Field='dbi_dbccFlags')
WHERE dbname=@name

TRUNCATE TABLE #dbinfo

FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor

DROP TABLE #dbinfo
SELECT
dbname AS [Database Name],
LastRanDate AS [Last execution date],
Status AS [Comments],
DataPurityCheckEnabled AS [Data Purity Check Enabled]
FROM #dbinforesults
DROP TABLE #dbinforesults

Résultats



Dynamics AX 2012 : aos.config does not exist

Lors de la modification d'un port AIF dans Dynamics AX, la configuration est aussi sauvegardée localement. Vous pouvez y trouver le fichier de configuration dans le dossier ci-dessous:

C:\Program Files\Microsoft Dynamics AX\60\Server\MicrosoftDynamicsAX\Bin\XppIL\AppShare\ServiceGeneration

Ceci ne cause généralement pas de problème dans un environnement avec un seul serveur AOS. 

Il en est autrement dans un environnement multi-aos. Lors de l'activation du port, le fichier de configuration est généré localement sur le serveur AOS utiliser pour configurer le port AOS.

Ainsi, le message d'erreur suivant survient lorsqu'un autre serveur AOS tente d'utiliser le port

The specified configuration file does not exist: C:\Program Files\Microsoft Dynamics AX\60\Server\MicrosoftDynamicsAX\Bin\XppIL\AppShare\ServiceGeneration\PORTNAME\aos.config 

Pour corriger le problème, il suffit de redémarrer le serveur AOS afin que le fichier de configuration soit créé localement, ou de désactiver/activer le port en s'assurant d'être connecter sur le serveur AOS qui ne possède pas le fichier, ou de copier/coller les fichiers d'un serveur AOS qui possède la dernière version vers celui qui n'a pas été mis à jour.

Dynamics AX 2012 : Unable to write the generated WCF configuration to local storage

Voici le message d’erreur que j’ai trouvé sur mon serveur SSRS:

Unable to write the generated WCF configuration to local storage. The generated WCF configuration will be used from memory. The contents of the new configuration are written to the following temp file C:\Users\bcpxy\AppData\Local\Temp\Microsoft.Dynamics.AX.Framework.Services.Client.Configuration.ClientConfigurationInternal.log

Exception datils:
System.ComponentModel.Win32Exception: Access is denied

Pour une raison quelconque, le compte bcproxy essais de mettre à jour la configuration WCF locale. Dans ce cas-ci, la configuration est sauvegardée dans la base de register. Si vos desirers conservés la configuration dans la base de registres, il suffit de donner les droits full control au compte BCPROXY sur la clé de registre qui contient la configuration active.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dynamics\6.0\Configuration\Original (installed configuration)


Malheureusement, je ne sais pas ce qui déclenche une mise à jour local de la configuration WCF. Un rapport peut-être ?

Azure : Désactiver AD Connect Sync

Dans mon laboratoire Azure, j’avais configuré AD Connect afin de synchroniser mes utilisateurs entre Windows Active directory et Azure Active directory.

J’ai éventuellement supprimé mon contrôleur de domaine sans avoir préalablement désactivé la synchronisation. Par conséquent, j'ai commencé à recevoir des notifications comme quoi la synchronisation ne fonctionnait plus.



Comment désactiver la synchronisation si je n’ai plus access à l’outil AD Connect ?

Tout d’abord, vous devez télécharger et installer Azure Active Directory Module for Windows PowerShell. 

Ensuite, vous devez vous connecter à Azure

$msolcred = get-credential
connect-msolservice -credential $msolcred

Note: Vous devez utiliser un compte cloud (exemple: admin@mtessier.onmicrosoft.com). Vous ne pouvez pas utiliser un compte LiveID ou un compte qui provident de Windows Active Directory.

Ensuite, désactiver la synchronisation:

Set-MsolDirSyncEnabled –EnableDirSync $false

Vous pouvez vérifier le status de la synchronisation

(Get-MSOLCompanyInformation).DirectorySynchronizationEnabled

Le processus peut prendre jusqu'à 72 heures tout dependant du nombre d'objets.

Dynamics AX 2012 : Method 'add' in COM object of class 'Documents' returned error

Message d’erreur lors de l’utilisation du Task Recorder avec Microsoft Dynamics AX 2012 R3 et Microsoft Office 2010:

Method 'add' in COM object of class 'Documents' returned error code 0x800A175D (unknown) which means: unknown



Pour corriger l’erreur, il suffit d’ouvrir Microsoft Word et de suivre les étapes suivantes: File > Options > Trust Center > Trust Center Settings > Protected View et désactiver Enable Protected View for files originating from the Internet.


Ensuite, l’erreur suivante est apparu:

Method 'add' in COM object of class 'Documents' returned error code 0x800A1436 (unknown) which means: Sorry, we couldn’t find your file. Is it possible it was moved, renamed or deleted ?


Dans ce cas-ci, assurez-vous d’avoir access au dossier specifier dans les paramètres



Dynamics AX : Crash and Hang Analysis

Je voulais créer un billet pour mettre en lien deux articles au sujet des crashs d’un serveur AOS. Le premier article est au sujet de l’outil Crash and Hangs Analysis qui se trouve sur le portail LCS. L'outil est bien expliqué dans le blog suivant: Crash and Hang analysis on LCS.

Le deuxième article explique comment collecter le dump: AOS crash, hang or memory leak debugging tools.

Il y a plusieurs exemples selon le problème que vous avez: AOS crashes, AOS Hangs et AOS Memory Leaks.

Prenez note que l’auteur utilise procdump.exe, il est fort probable que vous devez utiliser procdump64.exe si vous utiliser AX 2009 ou 2012.

Le dernier article explique comment collecter les dumps automatiquement: Possibilities to create Memory Dumps from crashing processes

Dynamics AX - Haute disponibilité (Part 3)

Dynamics AX est une solution mature qui vit dans une infrastructure complexe. Il est important de comprendre le rôle de chaque composant et de connaître son importance ou non au sein de l'entreprise. Par exemple, le système d'intégration peut être critique pour une entreprise et moins critique pour une autre. Même chose avec SharePoint et Enterprise Portal, plusieurs entreprises utilisent Enterprise Portal uniquement pour les Roles Center, il n’est peut-être pas nécessaire d'avoir une redondance au niveau des serveurs SharePoint dans ce cas.

Cluster

Un cluster est un groupe de ressource ayant le même but. Les membres d'un cluster se connaissent et partagent leur état. Dans certains cas, les membres d'un cluster se partagent des ressources, généralement le stockage. C'est une technologie couramment utiliser dans le domaine des technologies.

Load Balancing

C'est aussi un groupe de serveur, mais ils sont indépendants et n'échangent pas d'information sur leur état. Le trafic est généralement balancé entre les serveurs. On retrouve souvent cette technlogies avec les services Web, mais il est aussi utilisé dans d'autres contextes.

Solutions

Network - NIC

Network - Switches

Network - Firewall

Dynamics AX - AOS Servers

Dynamics AX - Document Management

Management Reporter
  • Aucune solution HA pour les services Application et Process

SharePoint

Dynamics AX - Haute disponibilité (Part 2)

Dynamics AX - Accord de niveau de service

La disponibilité est toujours un enjeu important des infrastructures Dynamics AX. Avant de pouvoir commencer la planification, il est important d'obtenir l'objectif de disponibilité. Celle-ci est souvent définie par les dirigeants d'entreprises et non par l'équipe des technologies de l'information. Certaines entreprises ont un ou plusieurs SLA internes, il suffit de voir si Dynamics AX peut s'attacher à l'une d'elles. Certaines petites entreprises doivent aller faire leur devoir et déterminer l'objectif de disponibilité. Dans ce cas, il est important de penser au scénario le plus critique pour l'entreprise: l'intégration avec un autre système, la fin de l'année fiscale, la production de produit en saison haute, etc.

Dynamics AX - Maintenance

Certains types d'opération nécessite la planification d'un arrêt d’un ou plusieurs services ou du système en entier. Par exemple, l'importation du code nécessite un redémarrage des services AOS. La reconstruction des index rend la table non disponible pour certaines opérations. Ainsi, il faut aussi tenir compte de cet aspect lors de la planification de la haute disponibilité.

Haute disponibilité, c'est plus que Dynamics AX ! 

Ensuite vient l'évaluation de l'infrastructure existante puisque'il n'y a pas seulement les composants AX qui entrent en jeu ! J'ai fait un petit tableau qui démontre tous les composants inclus dans une architecture Dynamics AX.  Il est important de prendre en considération toute l'infrastructure afin de ne pas avoir un point de défaillance unique.



Dynamics AX : Haute disponibilité (Part 1)

Qu'est-ce qu'un système hautement disponible ?

Les systèmes configurés afin d'offrir une disponibilité presque en tout temps se nomment système hautement disponible. Ces systèmes offrent un taux de disponibilité élevé généralement en se basant sur de la redondance matérielle et applicative. Un système hautement disponible bien configuré n'a pas de point individuel de défaillance (single point of failure). Entre d'autres mots, chaque composant matériel ou applicatif est redondant.

Lorsqu'une panne survient, un basculement des ressources est automatiquement démarré et le système continue d'être opérationnel. Plus le processus est transparent pour les utilisateurs, meilleur est le système de haute disponibilité.

Planification

Lors de la planification de l'architecture d'un système Dynamics AX, il est important de planifier la redondance des serveurs. Il y a deux façons de planifier la haute disponibilité du système:
  • Mettre en place un système de redondance pour chaque composant.
  • Protéger le système contre les multitudes de pannes possibles.

Dans ce billet, je met l'accent sur la mise en place du système de redondance pour chaque composant.

Mesurabilité

De façon générale, les entreprises utilisent les deux unités de mesure suivante:

  • The mean time to recovery (MTTR) - temps moyen jusqu’à la remise en route.
  • La disponibilité mesurée en pourcentage.

Dans le premier cas, si vous avez un seul serveur AOS et que celui-ci tombe en panne, combien de temps en moyenne vous faudra-t-il afin de remettre le service en route ? Et si le serveur AOS ne démarrait plus et que vous deviez effectuer une restauration ou une nouvelle installation ? Est-ce acceptable pour l'entreprise ?

Dans le deuxième cas, la disponibilité est mesurée en pourcentage. Par exemple, 99.99% veut dire que le système doit être disponible 99.99% du temps pour une période précise, une année par exemple. Dans cet exemple, le système ne sera pas disponible pendant 52 minutes dans une année incluant les pannes planifiées et non planifiées.



Type de panne

Une panne peut être planifiée ou non planifiée. Les pannes non planifiées peuvent être causées par plusieurs facteurs. Par exemple, panne matérielle, panne logicielle, panne électrique, erreur humaine, etc. Les pannes non planifiées perturbent système parce qu'elles sont difficiles à prédire.

Une panne planifiée peut aussi perturber le système, mais elles sont de façon générale plus facile à prévoir et gérer. Les pannes planifiées comprennent la maintenance, les mises à jour du système, les mises à jour du code, etc.

Tolérance aux pannes vs Haute Disponibilité

Lorsqu'un système hautement disponible tombe en panne, le système peut devenir non disponible pour quelques secondes ou minutes. Par exemple, lors d'une panne matérielle sur un host VMware, vSphere détecte la panne et redémarre les machines virtuelles sur un host différent. Le temps du démarrage, le système sera non disponible pour quelques secondes.

Tolérance aux pannes (Fault Tolerance) est un système qui est insensible aux pannes. Pour ce faire, la solution utilise une technologie qui réplique la machine entière incluant la mémoire vive. Par exemple, Fault Tolerance (FT) de VMware.

Ce billet met l'accent uniquement sur des technologies de haute disponibilité.

Dynamics AX 2012 : DIXF Data Lookup ne fonctionne pas

Lors de l'utilisation de DIEF dans un environnement AX 2012 R3, l'utilisateur n'était pas capable de générer le fichier source (generate source file). La fonction data lookup ne fonctionnait tout simplement pas.

La machine utilisée était un system All-in-One Windows 2012 R2 + Office 2010 32 bits + SQL 2014 + AOS + DIXF. C'est ça le problème. SSIS DIXF component requiert les driver 64 bits pour Excel.


Il est possible d'installer les driver 64-bits en téléchargeant Microsoft Access Database Engine 2010 Redistributable. Toutefois, puisque Office 32-bit est installé, il est important d'utiliser le paramètre /passive lors de l'installation:

AccessDatabaseEngine_X64.exe /passive




Suite à l'installation, vous allez remarquer que DIEF est maintenant fonctionnel. Toutefois, vous aller réaliser qu'Excel n'est plus dans son état normal, le message d'erreur suivant s'affiche lors de l'ouverture:

One of your object libraries (|) is missing or damaged. Please run Setup to install it.


En effet, l'installation de Microsoft Access Database Engine 64 bits n'est pas compatible avec Office 2012 32 bits comme indiquer dans ce lien.

La bonne nouvelle c'est qu'il existe un truc afin d'avoir Microsoft Access Database Engine 64-bits et Office 32 bits entièrement fonctionnels. Il suffit de supprimer la valeur mso dll dans la clef suivante: 
HKLM\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths


ATTENTION: avant de faire les modifications ci-haut, il est important de comprendre que les driver 64-bit sont nécessaire sur le serveur SSIS. Demandez-vous pourquoi vous avez besoin d'Office 2010 32 bits sur votre serveur SSIS? Comme dans ce cas-ci, c'est une machine de développement qui comprend tous les components AX ainsi que le client Excel. Toutefois, je conseillerais tout simplement d'utiliser un autre serveur SSIS pour DIXF au lieu de mettre en place une configuration non supporté.

Dynamics AX 2012 : AppFabric Server caching features

Lors de la configuration de mon cluster AppFabric pour Entreprise Portal, j'ai réalisé que tous les services distribution cache étaient éteints. Le journal d'événement me connaît le message d'erreur suivant:

The High Availability feature of AppFabric Server caching features requires all nodes in the cache cluster to be running Windows Server Enterprise Edition or higher.



J'ai effectué mon installation sur des serveurs Windows 2012 R2. La version Entreprise n'existe pas avec Windows 2012. 

Ce problème a ete corriger avec CU4 pour App Fabric 1.1.

Je vous conseille d'installer la plus récente version du CU pour App Fabric. À ce jour, la version Cu7 est disponible ici: https://support.microsoft.com/en-us/kb/3092423.




Dynamics AX 2012 : CU10 + Reporting Extensions

Le deployment des rapports s’interrompt après quelques minutes avec le message d’erreur suivant:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below

Dans mon cas, le problème est arrivé suite à l’installation de CU10 pour Dynamics AX 2012 R3. Il y a un hotfix pour corriger ce problème.



Management Reporter : Troubleshooting

Voici deux requêtes SQL qui vous aideront à diagnostiquer des problèmes avec Management Reporter. La première requête retourne le status des tâches et la deuxième requête retourne les logs.

Tâches

SELECT CIG.[Description] 
, T.Name
, CASE TS.StateType
WHEN 3 THEN 'PROCESSING'
WHEN 5 THEN 'COMPLETE'
WHEN 7 THEN 'ERROR'
ELSE Convert(varchar(max),TS.StateType)
END AS StateType
, TS.Progress
, TR.Id AS TriggerId
, CASE TR.IsEnabled
WHEN 1 THEN 'ENABLED'
WHEN 0 THEN 'DISABLED'
ELSE Convert(varchar(max),TR.IsEnabled)
END AS TriggerStatus
, TR.Interval
, CASE TR.UnitOfMeasure
WHEN 4 THEN 'DAYS'
WHEN 3 THEN 'HOURS'
WHEN 2 THEN 'MINUTES'
WHEN 1 THEN 'SECONDS'
ELSE Convert(varchar(max),TR.UnitOfMeasure)
END AS IntervalTiming
, DATEADD(minute, DATEDIFF(minute,GETUTCDATE(),GETDATE()), TS.[LastRunTime]) as LocalLastRunTime
, DATEADD(minute, DATEDIFF(minute,GETUTCDATE(),GETDATE()), TS.[NextRunTime]) as LocalNextRunTime
--, TS.[LastRunTime] as UTCLastRunTime
--, TS.[NextRunTime] as UTCNextRunTime
FROM Scheduling.Task T with (nolock)
JOIN Scheduling.TaskState TS with (nolock) ON T.Id = TS.TaskId 
JOIN Scheduling.[Trigger] TR with (nolock) ON TR.Id = T.TriggerId 
JOIN Connector.IntegrationGroup CIG with (nolock) on CIG.[IntegrationId] = T.CategoryId
WHERE T.TypeId in ('55D3F71A-2618-4EAE-9AA6-D48767B974D8', '6F6B935B-FC0A-46B9-8F53-27C6AF7437F0', 'D81C1197-D486-4FB7-AF8C-078C110893A0')
ORDER BY CIG.[Description], T.Name

Logs

SELECT CIG.[Description]
, ST.[Name]
, SM.[Text] 
, DATEADD(minute, DATEDIFF(minute,GETUTCDATE(),GETDATE()), SL.[StartTime]) as LocalStartTime
, DATEADD(minute, DATEDIFF(minute,GETUTCDATE(),GETDATE()), SL.[EndTime]) as LocalEndTime
, SL.[TotalRetryNumber]
, SL.[IsFailed]
, STT.[Name] as TaskType 
FROM [Scheduling].[Log] SL with (nolock)
inner join [Scheduling].[Task] ST with (nolock) on SL.TaskId = ST.Id 
inner join [Scheduling].[Message] SM with (nolock) on SL.Id = SM.LogId 
inner join [Scheduling].[TaskType] STT with (nolock) on ST.TypeId = STT.Id 
inner join [Connector].[IntegrationGroup] CIG with (nolock) on CIG.[IntegrationId] = ST.[CategoryId]
--where st.Name like 'AX 2012 Account Categories to Account Category'
--where st.Name like 'AX 2012 Accounts to Account'
--where st.Name like 'AX 2012 Companies to Company'
--where st.Name like 'AX 2012 Companies to Organization'
--where st.Name like 'AX 2012 Dimension Combinations to Dimension Combination'
--where st.Name like 'AX 2012 Dimension Values to Dimension Value'
--where st.Name like 'AX 2012 Exchange Rates to Exchange Rate'
--where st.Name like 'AX 2012 Fiscal Years to Fiscal Year'
--where st.Name like 'AX 2012 General Ledger Transactions to Fact'
--where st.Name like 'AX 2012 Organization Hierarchies to Tree'
--where st.Name like 'AX 2012 Scenarios to Scenario'
--where st.Name like 'AX 2012 Transaction Type Qualifiers to Fact Type Qualifier'
--where st.Name like 'Maintenance Task'
ORDER BY SL.[StartTime] desc

SSRS : The request failed with HTTP status 401: Unauthorized

Lors de la configuration de SSRS Scale-Out déploiement avec deux serveurs, le message d'erreur s'affichait lorsque je tentais de me connecter aux services. 




Une recherche google vous mène à différentes solutions. Tout d'abord, si vous obtenez ce message d'erreur à partir du serveur SSRS, vous devez utiliser la fonctionnalité Disable the Loopback Check ou configurer Back Connexion Host Names sur le serveur.

Dans mon cas, j'obtenais le message d'erreur alors à partir de serveur autre que SSRS. J'obtenais le message peu importe l'URL que j'utilisais:

http://node1/Reports
http://node2/Reports
http://virtualname/Reports

Toutefois, si l'erreur ne se produit pas lorsque je stop le service SSRS sur un serveur, peu importe lequel. 

La cause du problème est la suivante: l'authentification est envoyé au serveur SSRS. Ensuite, ce même serveur SSRS initie une connexion au service en utilisant le nom virtual, cette requête est redirigée au deuxième serveur SSRS.



Pour résoudre le problème, il faut modifier le fichier hosts sur les serveurs SSRS comme indiquer dans cet article: 


De cette façon, le serveur SSRS va résoudre le nom virtual avec son address IP local et ainsi la deuxième requête va toujours être retourné au même serveur.

Dynamics AX 2012 : Could not connect to the SharePoint document library.

Incapable de synchroniser les templates de ma la librairie SharePoint avec Dynamics AX:

Could not connect to the SharePoint document library. Ensure that the url is correct. If the error persists ensure the proper authentication mode is configured for this site.


Le problème était le nom de ma librairie, je l'avais nommée "AX Templates". J'ai été capable de faire la synchronisation après avoir créer une nouvelle librairie avec le nom "AXTemplates" sans espace dans le nom.