BizTalk 2010 CU6 – mise à jour de ressources impossibles

21Oct13

Le Cumulative Update 6 de BizTalk 2010 est sorti depuis plusieurs semaines (http://support.microsoft.com/kb/2855367/en-us) et contient de nombreuses corrections de bugs (notamment un bug concernant la suppression inopinée de la déclaration XML lorsqu’un message est traité par un port avec un tracking profile BAM : http://support.microsoft.com/kb/2689953).

Je vous conseille vivement d’attendre avant de déployer ce Cumulative Update car il introduit régression concernant le déploiement d’applications BizTalk, plus particulièrement lors de la mise à jour de ressources dans une application existante. Explications ci-dessous avec un exemple à la clé.

Je dispose dans l’exemple ci-dessous de deux projets BizTalk et deux maps dans chaque projet :

  • Input_TO_Output dans le projet « TestCU6« 
  • Output_TO_Input dans le projet « TestCU6_Project2« .

Projets

Les deux projets sont compilés et déployés dans une application BizTalk nommée CU6 qui contient :

  • Un port de réception « rpCU6 » associé à la map Input_TO_Output

rpCU6

  • Un port d’envoi « spCU6 » associé à la map Output_TO_Input

spCU6

L’application fonctionne mais là n’est pas le propos.

Supposons maintenant que vous fassiez une modification dans la map Input_TO_Output, c’est à dire dans le projet TestCU6. Pour déployer cette modification, vous pouvez soit utiliser la commande « Deploy » de Visual Studio, soit depuis la console d’administration BizTalk en modifiant la ressource déployée (en l’occurrence l’assembly TestCU6.dll).

Or si le CU6 est installé, vous ne pourrez tout simplement pas déployer la modification et obtiendrez l’erreur suivante:

ErreurDeploiement

La même opération fonctionne sans problèmes avant l’installation du CU5.

L’erreur se produit car avant de mettre à jour l’assembly TestCU6.dll dans l’application, toutes les autres assemblies de l’application sont elles mêmes mises à jour (supprimées puis ajoutées de nouveau). Dans notre cas cela veut dire que même l’assembly TestCU6_Project2.dll (qui n’a pas été modifiée) est supprimée puis ajoutée de nouveau. Or la suppression est impossible car l’assembly contient une map qui est encore associée à un port (en l’occurrence un send port) — d’où l’erreur de FK présentée dans le message d’erreur.

La mise à jour d’assembly dans une application BizTalk a toujours fonctionné de la sorte, mais en revanche, ce qui est nouveau avec le CU6, et qui cause cette erreur, est l’absence d’une étape lors de la suppression des ressources : la suppression de l’association maps / ports. Cette étape, qui derrière la scène est réalisée par une clause SQL DELETE, n’est plus déclenchées avec le CU6. Avec le CU5, on constate par exemple qu’une clause DELETE est envoyée à la base de configuration BizTalk (table bts_sendport_transform), juste avant la suppression de l’assembly, puis un INSERT est déclenché dans cette même table pour réassocier la map au port.

Donc si vous êtes contraints d’installer le CU6, ou si vous l’avez déjà fait et ne pouvez pas revenir en arrière facilement, vous pouvez contourner ce bug en déssassociant vous même manuellement les maps des ports avant la mise à jour d’une assembly. Avec des bindings cela peut être plus simple mais cela reste tout de même fastidieux.

Un ticket de support Microsoft est ouvert sur ce bug, je mettrais à jour ce post si un hotfix est mis à disposition par Microsoft.

 

Publicités


No Responses Yet to “BizTalk 2010 CU6 – mise à jour de ressources impossibles”

  1. Laisser un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s


%d blogueurs aiment cette page :