Autor Thema: Komplette Ordnerstruktur in andere Mail-Datenbank kopieren?  (Gelesen 23468 mal)

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
Hallo,

einer unserer Mitarbeiter hat über Jahre eingehende Mails in einer aufwendigen Ordnerstruktur gespeichert. Dieser Mitarbeiter verlässt demnächst das Unternehmen. Die komplette Ordnerstruktur (mehrere hundert Ordner) und natürlich auch die darin enthaltenen Dokumente sollen nun in die Mail-Datenbank eines Kollegen übertragen werden.

Geht das irgendwie, ohne dass ich das pro Ordner von Hand machen muss?

Ich habe auch angeboten, die ursprüngliche Mail-DB einfach zu kopieren und dann alles außer dieser Ordnerstuktur zu löschen - und dem neuen Mitarbeiter darauf dann Zugriff zu geben. Es ist aber ausdrücklich gewünscht, die Ordnerstruktur in die andere (bestehende) Mail-DB zu bringen. Die bestehende Mail-DB ist auch schon "relativ gewachsen", sonst könnte ich ja einfach umgekehrt vorgehen...

Any Ideas?

Wir haben hier derzeit noch eine Domino 7.x Umgebung.

Danke & Gruß,
Gregor

Offline m3

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Komplette Ordnerstruktur in andere Mail-Datenbank kopieren?
« Antwort #1 am: 08.01.09 - 17:38:32 »
Außer händisch und/oder mit einem Agent fällt mir auch nix ein.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline Heiggo

  • @Notes Preisträger
  • Senior Mitglied
  • ****
  • Beiträge: 368
  • Geschlecht: Männlich
  • Ich habe nix gemacht!
Re: Komplette Ordnerstruktur in andere Mail-Datenbank kopieren?
« Antwort #2 am: 08.01.09 - 20:47:09 »
Da gab es vor Jahren mal einen Beitrag zu der Thematik. War noch zu R5-Zeiten. Der daraus resultierende Agent rettete mich damals bei der Migration von R4 auf R5 einige Male.

Code
Sub Initialize
'Datenübernahme aus einer bestehenden Datenbank in eine neu angelegte Datenbank
'Autor: Heiko 1 Siebert/WBV SÜD/TerrWV/BMVg/DE
'Stand: 18.08.2004
Dim s As New NotesSession
Dim w As New NotesUIWorkspace
Dim destDb As New NotesDatabase("","")
Dim sourceDb As New NotesDatabase("","")
Dim AllDocs As NotesDocumentCollection
Dim AllDocsView As NotesView
Dim sourceDoc As NotesDocument
Dim destDoc As NotesDocument
Dim tempDoc As NotesDocument
Dim docCount As Variant
Dim current As Variant
Dim choices (0 To 2) As Variant
choices(0) = "Diese Datenbank"
choices(1) = "Lokale Databank"
choices(2) = "Datenbank auf einem Server"
' Quelldatenbank
sourceDbType = w.Prompt(PROMPT_OKCANCELLIST, "Wählen Sie den Datenbankort", _
"Wählen Sie den Datenbankort, von dem aus Sie Dokumente kopieren wollen:", _
choices(2), choices)
If sourceDbType = "" Then
Messagebox "Aktion wurde vom Benutzer abgebrochen"
Exit Sub
End If
If sourceDbType = choices(0) Then
Set sourceDb = s.CurrentDatabase
Else
If sourceDbType = choices(1) Then
sourceDbServer = ""
sourceDbNameReturn = w.OpenFileDialog(False, _
"Wählen Sie die Datenbank aus der Sie kopieren wollen:", "*.nsf", _
s.GetEnvironmentString("Directory", True))
If Isempty(sourceDbNameReturn) Then 'Wenn Nutzer auf ESC oder Abbrechen drückt
Msgbox("Abbruch: Ohne Angabe des Dateinamen kann die Aktion nicht durchgeführt werden!")
Exit Sub
End If
sourceDbName=SourceDbNameReturn(0)
Else
sourceDbServer = Inputbox("Geben Sie den Namen des Domino-Servers an")
sourceDbName = Inputbox("Geben Sie Pfad und Dateinamen der Datenbank (relativ zum DATA des Servers)")
If sourceDbName = "" Then
Msgbox("Abbruch: Ohne Angabe des Dateinamen kann die Aktion nicht durchgeführt werden!")
Exit Sub
End If
End If
If Not (sourceDb.Open(sourceDbServer, sourceDbName)) Then
Msgbox("Ich kann die angegebene Datei nicht finden oder öffnen: " + sourceDbName)
Exit Sub
End If
End If
' Zieldatenbank
destDbType = w.Prompt(PROMPT_OKCANCELLIST, "Ziel-Datenbank", _
"Wählen Sie den Ort der Datenbank, in die die Dokumente und Ordner hineinkopiert werden sollen", _
choices(2), choices)
If destDbType = "" Then
Messagebox "Abbruch durch Benutzer"
Exit Sub
End If
If destDbType = choices(0) Then
Set destDb = s.CurrentDatabase
Else
If destDbType = choices(1) Then
destDbServer = ""
destDbNameReturn = w.OpenFileDialog(False, _
"Bitte wählen Sie die Datenbank, aus der die Dokumente kopiert werden sollen:", "*.nsf", _
s.GetEnvironmentString("Directory", True))
If Isempty(destDbNameReturn) Then 'Wenn Nutzer auf ESC oder Abbrechen drückt
Msgbox("Abbruch: Ohne Angabe des Dateinamen kann die Aktion nicht durchgeführt werden!")
Exit Sub
End If
destDbName=destDbNameReturn(0)
Else
destDbServer = Inputbox("Geben Sie den Namen des DOMINO-Servers an")
destDbName = Inputbox("Wählen Sie den Ort der Datenbank, in die die Dokumente und Ordner hineinkopiert werden sollen")
If destDbName = "" Then
Msgbox("Abbruch: Ohne Angabe des Dateinamen kann die Aktion nicht durchgeführt werden!")
Exit Sub
End If
End If
If Not (destDb.Open(destDbServer,destDbName)) Then
Msgbox("Ich kann die angegebene Datenbank nicht finden oder öffnen: " + destDbName)
Exit Sub
End If
End If
If destdb.server=sourcedb.server And destdb.filename=sourcedb.filename And destdb.filepath=sourcedb.filepath Then
Msgbox("Quell- und Zieldatenbank sind zu unterschiedlich")
Exit Sub
End If
' Dokumenten-Collection in Quelldatenbank (nach Selektion) aufbauen
' anhand der Ansicht ($All)
AllDocsSelect = "@IsNotMember(""A""; ExcludeFromView) & IsMailStationery != 1" + _
"& Form != ""Group"" & Form != ""Person"""
Set AllDocs = sourceDb.Search(AllDocsSelect, Nothing, 0)
' Anzeige des Fortschritts der Aktionen, sofern möglich
docCount = AllDocs.Count
current = 0
Print Cstr(Round(current / docCount * 100, 0)) + "% copied"
' Alle Ordner, die in der Zieldatenbank nicht vorhanden sind werden durchgegangen (auch Systemordner) sofern nicht $Inbox
Forall folder In sourceDb.Views
If folder.IsFolder And (Instr(1, folder.Name, "(", 0)<>1 Or folder.Name="($Inbox)") Then
' Sicherstellung, das auch leere Ordner übernommen werden
' um die Struktur so zu belassen, wie diese vorher war
Set destFolder = destDb.GetView(folder.Name)
If destFolder Is Nothing Then
Set sourceFolder = sourceDb.GetDocumentByUNID(folder.UniversalID)
Call sourceFolder.CopyToDatabase(destDb)
Set destFolder = destDb.GetView(folder.Name)
If destFolder Is Nothing Then
Msgbox("Ich kann in der neuen Datenbank keine Ordner erstellen!")
Exit Sub
End If
End If
' Durchgang aller Dokumente im jeweiligen Ordner
Set sourceDoc = folder.GetFirstDocument
While Not (sourceDoc Is Nothing)
Set destDoc = sourceDoc.CopyToDatabase(destDb)
' Kopieren der Dokumente eines Ordners in die Zieldatenbank in den gleichnamigen Ordner
Call destDoc.PutInFolder(folder.Name, True)
' Entfernen des bearbeiteten Dokuments aus der aufgebauten Collection der Ansicht ($All) in der Datenbank
Set tempDoc = AllDocs.GetDocument(sourceDoc)
Set sourceDoc = folder.GetNextDocument(tempDoc)
Call AllDocs.DeleteDocument(tempDoc) 'remove from collection
' Anzeige des Fortschritts der Aktion, sofern möglich
         current = current + 1
Print Cstr(Round(current / docCount * 100, 0)) + "% kopiert"
Wend
End If
End Forall
' Kopieren der Dokumente, die in keinem Ordner vorhanden sind in die Zieldatenbank
Set sourceDoc = AllDocs.GetFirstDocument
While Not (sourceDoc Is Nothing)
Call sourceDoc.CopyToDatabase(destDb)
' Anzeige des Fortschritts der Aktion, sofern möglich
   current = current + 1
Print Cstr(Round(current / docCount * 100, 0)) + "% kopiert"
Set sourceDoc = AllDocs.GetNextDocument(sourceDoc)
Wend
'That´s all :-)
Msgbox("Dokumente und Ordner wurden kopiert. Schliessen Sie die neue Datenbank (falls diese geöffnet ist) und öffnen Sie diese wieder!")
End Sub

Ich baumel die Datenbank mit dem Agent mal hier ran. Hab's eben mal mit meinem Client (R7.0.2) gecheckt. Scheint auch heute noch zu funktionieren :-)

Gruß aus Stuaget

Heiggo
« Letzte Änderung: 08.01.09 - 20:52:39 von heiggo »
(¯`·._ (¯`·._-=- ...und für Bernhard... nur OFw d.R. :-) -=-_.·´¯)_.·´¯)

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: Komplette Ordnerstruktur in andere Mail-Datenbank kopieren?
« Antwort #3 am: 09.01.09 - 06:46:39 »
Moin!

Nimm doch einfach und simpel den Archivierungsagenten und archiviere alle Dokumente in die Datenbank des Kollegen.
Anschließend das Archivflag wieder wegnehmen (Button mit der Formel: @SetProfileField("Archive Database Profile"; "ArchiveDatabase"; "") erstellen) und fertig.
Hab ich auch schon ganz oft gemacht und funktioniert ganz wunderbar  :D

Hth!

Gruß
Jens
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Komplette Ordnerstruktur in andere Mail-Datenbank kopieren?
« Antwort #4 am: 09.01.09 - 07:25:53 »
Nimm den "Mail Merger" von OpenNTF.org http://www.openntf.org/Projects/pmt.nsf/HomeLookup/B81E5D182CE4BE558625751F005FDC09?OpenDocument. Der funktioniert einwandfrei und ohne Programmierung.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline meleg

  • Aktives Mitglied
  • ***
  • Beiträge: 104
  • I love YaBB 1G - SP1!
Re: Komplette Ordnerstruktur in andere Mail-Datenbank kopieren?
« Antwort #5 am: 13.01.09 - 15:38:45 »
@ Jens_1

Hallo,

bei uns sind die Archivierungseinstellungen vernagelt und ich kann es nicht testen. Ich arbeite im Support auf Level 2 Ebene, und solche Anfragen können jederzeit auch bei uns reinkommen, deswegen interessiert es mich.

Nur zur vergewisserung: Das Zurücksetzen des Archivierungsflags, macht man das in der Ziedatenbank (dem Archiv) oder in der Quelldatenbank?

Danke

meleg

Offline Jens_1

  • Senior Mitglied
  • ****
  • Beiträge: 440
  • Geschlecht: Männlich
Re: Komplette Ordnerstruktur in andere Mail-Datenbank kopieren?
« Antwort #6 am: 14.01.09 - 06:51:07 »
Guten Morgen!

Das Zurücksetzen des Archivflags machst Du in der Zieldatenbank. In dieser wird es vom Agenten gesetzt.
Unabhängig davon ist das aber imho ein Fall für den dritten wenn Du als 2nd. nicht an die entsprechenden Einstellungen rankommst. Denn dann mit einem Script anzufangen kann auch zu Problemen führen wenn die Berechtigungen usw. nicht hin hauen und das ganze eventuell noch nicht mal legitimiert ist...  :-\

Gruß
Jens
CLP Domino R5 System Administrator
CLP IBM Lotus Domino 6 System Administrator
CLP IBM Lotus Domino 7 System Administrator
IBM Certified System Administrator - Lotus Notes and Domino 8

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz