[Resolu] Agent Archivage depuis une date

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

[Resolu] Agent Archivage depuis une date

Messagepar rko » 03 Août 2011 à 14:27

Bonjour à tous,

Je viens soliciter l'aide d'un développeur

Ma requête est la suivante
Actuellement je suis entrain de préparer la migration Lotus to Exchange (suite à un rachat, et nos acheteurs ont Exchange, je ne peux pas grand chose pour expliquer qu'il faut garder Lotus)

L'archivage Lotus est en place sur mes bases courriers, mais ne marchent pas très bien pour beaucoup de bases, car elles ont héritées depuis des années de plusieurs migration de version.

Je souhaiterais ajouter un agent dans la base, qui peut-être éxécutée manuellement ou à partir d'une ligne commande serveur.
L'objectif du script est de se positionner dans la vue "Tous Documents", de sélectionner tous les mails ou documents avant le 01/09/2011, et de lancer l'archivage de tous ses documents.

L'objectif est d'éviter d'ouvrir toutes les bases courriers (350) et de faire cette tâche manuellement.

Je vous remercie par avance pour votre aide
Rko
Dernière édition par rko le 30 Août 2011 à 16:27, édité 1 fois.
Au bridge, on cherche la faille dans le jeu ; au Poker, la faille dans l'individu
Avatar de l’utilisateur
rko
Administrateur
Administrateur
 
Message(s) : 950
Inscrit(e) le : 16 Déc 2004 à 10:15
Localisation : Grenoble

Messagepar Raziel » 03 Août 2011 à 14:59

Salut,

rapidement je peux te proposer un truc de ce type :

Dim session As New NotesSession
Dim dbMail As NotesDatabase
Dim dbArch As NotesDatabase
Dim vue As NotesView
Dim doc As NotesDocument
Dim tmp_doc As NotesDocument
Dim dateArchive As New NotesDateTime("01/09/2011")
Dim dateDoc As NotesDateTime
Dim isArchive as boolean

Set dbMail = session.Currentdatabase
Set dbArch = session.Getdatabase("Local ou serveur", "Archive\a_" + dbMail.Filename, false)

If dbArch Is Nothing Then
MsgBox "Base d'archive introuvable"
Exit sub
End If

Set vue = dbMail.Getview("($All)")
Set doc = vue.getfirstdocument
While Not doc Is Nothing
Set dateDoc = New NotesDateTime(Format$(doc.Created, "dd/mm/yyyy"))
If dateArchive.Timedifference(dateDoc) > 0 Then
Call doc.Copytodatabase(dbArch)
isArchive = True
Else
isArchive = false
End If
' Passage au doc suivant
If isArchive Then Set tmp_doc = doc
Set doc = vue.Getnextdocument(doc)
If isArchive Then Call tmp_Doc.Remove(true)
Wend

Y'a possibilité d'améliorer le code notamment pour placer les mails archivés dans le bon dossier.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar rko » 03 Août 2011 à 15:14

Salut !
je te remercie pour ta réponse rapide

Concernant les bases archives, elles existent déjà pour mes users, je souhaiterais donc éviter qu'il m'en créer une nouvelle.

A la base j'ai une politique d'archivage mise en place avec une "Policy" et un paramètre d'archivage

Oui je souhaite qu'il archive en mettant le mail dans le bon dossier aussi

Merci encore pour ton aide
Raffi
Au bridge, on cherche la faille dans le jeu ; au Poker, la faille dans l'individu
Avatar de l’utilisateur
rko
Administrateur
Administrateur
 
Message(s) : 950
Inscrit(e) le : 16 Déc 2004 à 10:15
Localisation : Grenoble

Messagepar Raziel » 03 Août 2011 à 15:28

Je viens de modifier mon code. Alors ce qu'il fait :
1. Récupère le/les profils d'archive pour le user.
2. Si plusieurs profile d'archive, demande au user de sélectionner le bon profil.
3. Pour chaque dossier, scanne le contenu et déplace le mail dans le bon dossier de l'archive si le critère est remplie
4. Scanne le vue tous documents afin de traiter les mails qui ne sont pas contenu dans un dossier.

Je n'ai pas tester le code. Il recherche la base d'archive en local.

Code :
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim dbMail As NotesDatabase
Dim dbArch As NotesDatabase
Dim vue As NotesView
Dim doc As NotesDocument
Dim tmp_doc As NotesDocument
Dim dateArchive As New NotesDateTime("01/09/2011")
Dim dateDoc As NotesDateTime
Dim isArchive as Boolean

Dim policyList As Variant
Dim pathArchiveMail As Variant

Set dbMail = session.Currentdatabase

' Récupération des profils d'archivages
policyList = dbMail.ArchiveDestinations

If policyList(0) = "" Then
MsgBox "Vous ne possédez pas de profil d'archivage"
Exit Sub
End If

If UBound(policyList) = 0 Then
pathArchiveMail = dbMail.GetArchivePath(policyList(0))
Else
pathArchiveMail = ws.Prompt(PROMPT_OKCANCELLIST, "Sélection du profil d'archivage", "Sélectionnez le profil d'archivage que vous souhaitez récupérer", "", policyList)

If pathArchiveMail = "" Then
MsgBox "Veuillez sélectionner le profil d'archivage à récupérer"
Exit Sub
End If

pathArchiveMail = dbMail.GetArchivePath(pathArchiveMail)
End If

Set dbArch = session.Getdatabase("Local ou serveur", pathArchiveMail, false)

If dbArch Is Nothing Then
MsgBox "Base d'archive introuvable"
Exit sub
End If

' On boucle sur tous les dossiers de la base source afin de positionner les mails dans le bon dossier de la base d'archive
ForAll dossier In dbMail.Views
If dossier.isFolder Then
Set doc = dossier.getfirstdocument
While Not doc Is nothing
Set dateDoc = New NotesDateTime(Format$(doc.Created, "dd/mm/yyyy"))
If dateArchive.Timedifference(dateDoc) > 0 Then
Call doc.Copytodatabase(dbArch)
Call doc.Putinfolder(dossier.name, True)
isArchive = True
Else
isArchive = False
End If
' Passage au doc suivant
If isArchive Then Set tmp_doc = doc
Set doc = vue.Getnextdocument(doc)
If isArchive Then Call tmp_Doc.Remove(True)
Wend
End If
End ForAll

Set vue = dbMail.Getview("($All)")
Set doc = vue.getfirstdocument
While Not doc Is Nothing
Set dateDoc = New NotesDateTime(Format$(doc.Created, "dd/mm/yyyy"))
If dateArchive.Timedifference(dateDoc) > 0 Then
Call doc.Copytodatabase(dbArch)
isArchive = True
Else
isArchive = false
End If
' Passage au doc suivant
If isArchive Then Set tmp_doc = doc
Set doc = vue.Getnextdocument(doc)
If isArchive Then Call tmp_Doc.Remove(true)
Wend
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar rko » 03 Août 2011 à 16:34

Super merci beaucoup je vais tester ça au plus vite, je te tiens au courant !

A+ Good Work !
Au bridge, on cherche la faille dans le jeu ; au Poker, la faille dans l'individu
Avatar de l’utilisateur
rko
Administrateur
Administrateur
 
Message(s) : 950
Inscrit(e) le : 16 Déc 2004 à 10:15
Localisation : Grenoble

Messagepar rko » 19 Août 2011 à 16:29

Merci beaucoup pour ton aide mais je vais prendre une petite prestation pour avoir un truc bien qui alimenterais aussi une base journal avec nom de la base, nombre de documents avant / après archivage dans la base courrier !

Je ne suis pas développeur et je galère un peu
A+
Au bridge, on cherche la faille dans le jeu ; au Poker, la faille dans l'individu
Avatar de l’utilisateur
rko
Administrateur
Administrateur
 
Message(s) : 950
Inscrit(e) le : 16 Déc 2004 à 10:15
Localisation : Grenoble

Messagepar Raziel » 19 Août 2011 à 16:31

Y'a pas de mal... Dommage que tu sois pas sur Lille... On aurait pû s'en charger... ;-)
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar rko » 19 Août 2011 à 16:41

Salut !
ça peut se faire à distance, tu m'envois le script, je teste si ça marche pas, tu redeveloppe, au mieux je te donne un accès live sur mon serveur ! ou un poste avec designer et une base de test etc... et tu bosses en remote access.

Si tu veux tu peux me faire passer une proposition pour ce script ! je vois après si c'est accepté par mon responsable !

Je viens d'envoyer un mail à un développeur local pour une prestation, avec pour demande les points suivants :

1. Récupére le profil d'archivage pour le user
2. Pour chaque dossier scanne le contenu et déplace le mail dans le bon dossier de l'archive si le critére date est rempli
3. Scanne la vue "tous documents" afin de traiter les mails qui ne sont pas contenu dans un dossier
4. Alimenter une base journal dans laquelle on aurait le nom de la base courrier avec nombre de documents avant et après archivage dans la base, en gros avant d'éxécuter l'archivage l'agent compte le nombre de documents

Pour le point 4 c'est vraiment optionel si trop lourd à faire

Merci
Au bridge, on cherche la faille dans le jeu ; au Poker, la faille dans l'individu
Avatar de l’utilisateur
rko
Administrateur
Administrateur
 
Message(s) : 950
Inscrit(e) le : 16 Déc 2004 à 10:15
Localisation : Grenoble

Messagepar Raziel » 22 Août 2011 à 08:18

Salut,

je vois ça avec mon boss.
Je te tiens informé.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar rko » 30 Août 2011 à 16:25

Je te remercie Raziel, mais j'ai une proposition pour ce développement !
A+
Au bridge, on cherche la faille dans le jeu ; au Poker, la faille dans l'individu
Avatar de l’utilisateur
rko
Administrateur
Administrateur
 
Message(s) : 950
Inscrit(e) le : 16 Déc 2004 à 10:15
Localisation : Grenoble

Messagepar Raziel » 30 Août 2011 à 16:25

ok.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar rko » 30 Août 2011 à 16:27

Je te fournirais Bases Logs + Scripts :-) ça pourra toujours servir
Au bridge, on cherche la faille dans le jeu ; au Poker, la faille dans l'individu
Avatar de l’utilisateur
rko
Administrateur
Administrateur
 
Message(s) : 950
Inscrit(e) le : 16 Déc 2004 à 10:15
Localisation : Grenoble

Messagepar Raziel » 30 Août 2011 à 16:29

Cool. Merci. ;-)
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar rko » 09 Sep 2011 à 14:30

Hello Raziel,

C'est ok ma base d'Audit qui comprend 2 agents (Audit et Archivage) est en place et fonctionne à merveille ;-)

Elle intégre un document de configuration dans lequel on stipule
. Le nom du serveur Domino
. La date des mails qui doivent être archivés
. Log ou Archivage
. Le répertoire des bases
. * (pour traiter toutes les bases), oubien nom des bases à indiquer

Un Agent AuditSeul, qui va analyser toutes les bases courriers et log
User, Chemin Base, Taille (Mo), Nombre de document, Date document le plus ancien

Un Agent ArchiveMails, qui va Archiver tous les mails jusqu'à la date indiquée dans le document de configuration et log
User, Chemin Base, Taille (Mo), Nombre de document Avant, Nombre de document Après

Voilà si besoin n'hésite pas à me contacter par MP, je te la fournirais à la fin de la migration vers Exchange, car elle risque d'évoluer un petit peu

A+
Au bridge, on cherche la faille dans le jeu ; au Poker, la faille dans l'individu
Avatar de l’utilisateur
rko
Administrateur
Administrateur
 
Message(s) : 950
Inscrit(e) le : 16 Déc 2004 à 10:15
Localisation : Grenoble


Retour vers Développement

cron