Dupliquer un formulaire entre deux instances ITIM

IBM Tivoli Identity Manager dispose d'options d'importation et exportation de plusieurs éléments de paramétrages : politiques, groupes, opérations, rôles, services ou workflows.

Malheureusement, les formulaires (Forms) ne peuvent pas être exportés, alors que l'on peut passer pas mal de temps à les concevoir. En fait, il existe une solution assez simple pour exporter les modèles de formulaires et les réimporter dans une autre instance TIM, ou pour les copier et les utiliser pour une autre entité (à condition que les attributs gérés soient les mêmes ou presque).

Les modèles de formulaires (Forms Templates) sont stockés dans l'annuaire LDAP De TIM, dans la branche ou=formTemplates, ou=itim, ou=TENANT, o=ORGANIZATION-NAME.

On peut alors les exporter avec un simple ldapsearch :

FORMSBASE=ou=formTemplates, ou=itim, ou=TENANT, o=ORGANIZATION-NAME
FORMNAME=ITIMexternalPerson
ldapsearch -x -L -h $LDAPHOST -D $BINDDN -w $BINDPW -b "$FORMSBASE" "(erformname=$FORMNAME)" erxml > $FORMNAME.ldif

Cela génère un fichier LDIF, qui contient le DN et le contenu XML, dans l'attribut erxml, encodé en Base64. Par exemple :

dn: erformname=ITIMexternalPerson,ou=formTemplates,ou=itim,ou=TENANT, o=ORGANIZATION-NAME
erxml:: PHBhZ2U+Cjxib2R5Pgo8dGFiYmVkRm9ybT4KPHRhYiBpbmRleD0iMCIgc2VsZWN0ZWQ9In
 RydWUiPgo8dGl0bGU+PCFbQ0RBVEFbaWlyRlJFWFRQZXJzb25dXT48L3RpdGxlPgo8aW1hZ2UvPgo
 8dXJsPmphdmFzY3JpcHQ6c3dpdGNoVGFicyhkb2N1bWVudC5mb3Jtc1snYm9keSddLDApOzwvdXJs
 Pgo8Zm9ybUVsZW1lbnQgZGlyZWN0aW9uPSJpbmhlcml0IiBuYW1lPSJkYXRhLmVyY3VzdG9tZGlzc
 GxheSIgbGFiZWw9IiRlcmN1c3RvbWRpc3BsYXkiPgo8aW5wdXQgbmFtZT0iZGF0YS5lcmN1c3RvbW
 .../...

On a donc un fichier LDIF, qui contient le XML utilisé pour définir le modèle de formulaire. Si on veur dupliquer le formulaire pour une autre instance (par exemple passer de développement en test ou en production), il suffit de créer un fichier LDIF qui va modifier le contenu XML :

dn: erformname=ITIMexternalPerson,ou=formTemplates,ou=itim,ou=TENANT,o=ORGANIZATION-NAME
changetype: modify
replace: erxml
erxml:: PHBhZ2U+Cjxib2R5Pgo8dGFiYmVkRm9ybT4KPHRhYiBpbmRleD0iMCIgc2VsZWN0ZWQ9In
 RydWUiPgo8dGl0bGU+PCFbQ0RBVEFbaWlyRlJFWFRQZXJzb25dXT48L3RpdGxlPgo8aW1hZ2UvPgo
 8dXJsPmphdmFzY3JpcHQ6c3dpdGNoVGFicyhkb2N1bWVudC5mb3Jtc1snYm9keSddLDApOzwvdXJs
 Pgo8Zm9ybUVsZW1lbnQgZGlyZWN0aW9uPSJpbmhlcml0IiBuYW1lPSJkYXRhLmVyY3VzdG9tZGlzc
 GxheSIgbGFiZWw9IiRlcmN1c3RvbWRpc3BsYXkiPgo8aW5wdXQgbmFtZT0iZGF0YS5lcmN1c3RvbW
 .../...

Ce fichier LDIF peut ensuite être importé dans l'annuaire LDAP via une commande ldapmodify :

ldapmodify -c -x -h $LDAPHOST -D $BINDDN -w $BINDPW -f myFormFile.ldif

Si on veut copier ce formulaire pour une autre entté (basée sur la même classe d'objet ou une classe d"objet dérivée), il suffit de changer le DN dans le fichier LDIF. Par exemple :

dn: erformname=ITIMInternalPerson,ou=formTemplates,ou=itim,ou=TENANT,o=ORGANIZATION-NAME
changetype: modify
replace: erxml
erxml:: PHBhZ2U+Cjxib2R5Pgo8dGFiYmVkRm9ybT4KPHRhYiBpbmRleD0iMCIgc2VsZWN0ZWQ9In
 RydWUiPgo8dGl0bGU+PCFbQ0RBVEFbaWlyRlJFWFRQZXJzb25dXT48L3RpdGxlPgo8aW1hZ2UvPgo
 8dXJsPmphdmFzY3JpcHQ6c3dpdGNoVGFicyhkb2N1bWVudC5mb3Jtc1snYm9keSddLDApOzwvdXJs
 Pgo8Zm9ybUVsZW1lbnQgZGlyZWN0aW9uPSJpbmhlcml0IiBuYW1lPSJkYXRhLmVyY3VzdG9tZGlzc
 GxheSIgbGFiZWw9IiRlcmN1c3RvbWRpc3BsYXkiPgo8aW5wdXQgbmFtZT0iZGF0YS5lcmN1c3RvbW
 .../...

Le fichier est ensuite importé par ldapmodify.