LCA Endommagée v6-v7
Je ne sais pas définir de titre correct à ce post...
Mais il s'agit d'un problème de LCA altérée
...
Je pensais au début avoir à faire à un cas isolé.
Cela fait par contre déjà trois fois que je tombe sur le cas en moins de 5 mois, et j'ai trouvé quelques questions sans réponses sur le sujet dans les forums sur notes.net.
Domino 6 - Domino 7
Les symptomes :
- la LCA des boites aux lettres positionne l'utilisateur (le compte créé) avec un niveau défini à pas d'accès, pas de type d'utilisateur affecté,
- la boite aux lettres est correctement accessible en mode web iNotes.
- l'accès s'avère par contre un peu plus problématique avec un ID Client lourd.
- il est impossible de renommer l'utilisateur dans la LCA.
- Il est impossible de changer le niveau d'accès de la personne dans la LCA.
- Il est par contre possible de créer un doublon d'entrée pour l'utilisateur dans la LCA.
Bizarre donc
La cause ?
Aucune idée là dessus. Et je n'ai pas vraiment eu le temps de creuser.
Le problème semble se poser dans un contexte de versions 6.5.5 à 7.x, et pour des comptes utilisateur générés de manière programmée à l'aide des classes LS NotesRegistration. Je ne serai pas affirmatif sur le point suivant, mais il semble que le code ait été développé dans une version 'n' et mis en production après une montée de version 'n+x'. Peut être un problème de compilation ?
Dans tout les cas, les boites aux lettres ont été crées avec une LCA altérée, et l'entrée correspondant à l'utilisateur ressemble à une entrée fantôme.
Solution :
A défaut d'avoir eu le temps d'identifier à coup sur la cause, la recompilation du code a résolu le problème pour les nouveaux comptes.
Reste le problème de reprise des LCAs existantes impossible manuellement.
La seule solution que j'ai trouvée (il y en a peut être d'autres) a consisté en un agent d'export XML de la LCA, de vérification du fichier généré (mais je n'ai à chaque fois pas trouvé de problème dans le XML), puis de réimport XML par écrasementde la LCA .
L'agent parcourt l'ensemble des bases à corriger, puis pour les bases à problème, effectue l'export puis le réimport de LCA.
Il y a peut être d'autres solution. Celle ci a super bien marché, je ne suis pas allé voir plus loin...
Export de la LCA :
Function export(db As notesdatabase)
Set stream = s.CreateStream
'attention, la base doit être ouverte
'on passe ensuite par une collection de NotesNotes :O)
Set nc = db.CreateNoteCollection(False)
nc.SelectACL=True
Call nc.BuildCollection
'génération d'un fichier de sortie
filename$ = "c:\temp\" & Left(db.FileName, Len(db.FileName) - 3) & "xml"
export=filename$
If Not stream.Open(filename$) Then
Exit Function
End If
Call stream.Truncate
'exécution de l'export DXL
Dim exporter As NotesDXLExporter
Set exporter = s.CreateDXLExporter
Call exporter.SetInput(nc)
Call exporter.SetOutput(stream)
Call exporter.Process
End Function
Réimport de la LCA :
Function import (fichierXML As String, db As notesdatabase)
'en arguments le fichier XML généré par l'export et la base à traiter
Set stream = s.CreateStream
If Not stream.Open(fichierXML) Then
Messagebox "Impossible d'ouvrir le fichier " & fichierXML,, "Error"
Exit Sub
End If
If stream.Bytes = 0 Then
Messagebox "Le fichier n'existe pas ou est vide",, fichierXML
Exit Function
End If
'Import DXL dans la base
Set importer = s.CreateDXLImporter(stream, db)
importer.ReplaceDBProperties = False
importer.ReplicaRequiredForReplaceOrUpdate = False
importer.ACLImportOption = DXLIMPORTOPTION_REPLACE_ELSE_IGNORE
importer.DesignImportOption = DXLIMPORTOPTION_IGNORE
Importer.DocumentImportOption=DXLIMPORTOPTION_IGNORE
Call importer.Process
End Function
Comment identifier une base problématique en LS
Le problème est assez simple à identifier de manière programmée. Dans les cas de figures que j'ai rencontrés, Lotus Script se met en boucle sur une entrée de LCA lorsque cette dernière semble fantôme.
Il suffit donc d'attaquer la LCA par la classe NotesAcl, puis de boucler sur les entrées en en récupérant le nom (propriété name) par la classe NotesAclEntry afin d'identier s'il est commun à plus d'une entrée.
-







Comments
Mieux que çà : dans le même évènement de masque le code est différent selon la version de designer !!!
A méditer ...
Posted by sat_ourne At 16:02:17 On 29/04/2008 | - Website - |