Hallo Zusammen,
die Ursache lag darin, dass das Zertifikatsdokument der Domäne doppelt vorhanden war. Wir haben eines gelöscht und schon ging es...
Danke fürs Lesen, Helfen und Mitdenken...
Wolfgang
Hallo Zusammen,
die Ursache lag darin, dass das Zertifikatsdokument der Domäne doppelt vorhanden war. Wir haben eines gelöscht und schon ging es...
Danke fürs Lesen, Helfen und Mitdenken...
Wolfgang
Hallo Zusammen,
ich muss mein Serverzertifikat migrieren um einen CA-Prozess zu generieren.
Wenn ich die Maske ausfülle (Zertifzierer migrieren + SperrID (eigener User) + Administratoren (3 sollen da rein mit CAA und RA)
Wenn ich auf OK drücke, bekomme ich folgende Fehlermeldung:
"Der Namen kann nicht registriert werden. Mehrere Einträge mit diesem Namen wurden im Domino-Verzeichnis gefunden."
Mein Problem - es gibt zwei Adressbücher. Eines für den Standort und ein Globales Adressbuch. Ich vermute stark, dass genau dies das Problem ist.
Den Fehler hatte ich mal bei einer Entwicklungsgeschichte und dort war es so, dass der Fehler auftrat, weil der Name mehrfach gefunden wurde.
Um das Problem zu umgehen, haben wir in dem Verbindugnsdokumenten des Administrators die Suche durch alle Adressbücher deaktiviert. Wir haben die Konfiguration so angepasst, dass keine lokalen Adressbücher gefunden werden sollen. Wir haben von Arbeitsplatz alle Adressbücher gelöscht.
Es hatte keinen Erfolg.
Weiß jemand Rat?
Danke.
Wolfgang
Hallo Dirk,
wir verwenden 8.5.2 und hatten den Code in 8.5.1 so eingebaut ohne dort Probleme zu haben. Daher meine Frage, ob jemand da schon Erfahrungen gemacht hat.
PostOpen ist nach meinem derzeitigen wissen zu spät. Die Anwort wird (wenn der Debugger das korrekt anzeigt) zwischen QueryOpen und PostOpen verschickt.
In den MailDB-eigenen Bibliotheken gibt es soweit ich gesehen habe aber keinen Code der sichtbar ausgeführt wird, so dass man sehen kann was da eigentlich passiert.
In den CoreEmailClasses-de-DE gibt es nichts.
Nur in der Comon-de-DE findet man die Behandlung wenn man vermutlich aus den Web kommt. (wReturnReceipt). Welche aber im Endeffekt ReturnReceipt = "1" abfragt und dann die Bestätigung verschickt.
Die Suforms, die dort im Memo eine Rolle spielen könnten, haben auch keinen Code der dort was ausrichtet.
Jemand eine Idee wie man da weiter kommt ?
Danke
Wolfgang
Hallo Zusammen,
wir haben eine kleine Submaske die abfragt, ob eine Empfangsbstätigung zurückgeschickt werden soll oder nicht:
REM {JSW, 25.08.2010 Sonderbehandlung Empfangsbestätigung in einer Mail};
REM {================================================================================================================};
REM { Diese Teilmaske als erste berechnete Teilmaske im Memo einbinden, die nur aufgerufen wird, wenn eine Mail eine Empfangsbestätigung hat: Formel:
@If((ReturnReceipt = "1"); "(CDH ReturnReceiptManagement)"; "") };
REM { Wichtiger Hinweis: Lässt sich mit LotusScript zwar auch lösen, verursacht dort aber ein "Illegal Delete" beim Löschen einer Mail in folgendem Szenario:
Wenn die Vorschau aktiviert ist, die Mail in der Vorschau sichtbar, zugleich noch in einem Reiter geöffnet ist und die Löschung im Reiter erfolgt.
Reproduzierbar unter Lotus Notes 8.5.0 und 8.5.1};
REM {================================================================================================================};
@If(ReturnReceipt = "1"; "";@Return("") );
_Ret := @Prompt([YesNo]; "Empfangsbestätigung"; "Vorsicht Empfangsbestätigung! Soll eine Empfangsbestätigung verschickt werden?");
@If(_Ret = 0;
@Do(
@SetDocField(@Text(@DocumentUniqueID); "ReturnReceipt"; "0");
@Prompt([Ok]; "Empfangsbestätigung"; "Empfangsbestätigung deaktiviert. Keine Nachricht wird verschickt!")
);
"" )
Alles anzeigen
Mein Problem:
Egal welchen Wert ich versuche dem "ReturnReceipt" mitzugeben, er wird übergangen und eine Lesebestätigung verschickt.
Dies hat in 8.5.1 noch sauber funktioniert.
Hat jemand eine Idee für die Ursache und damit evtl. eine Lösung?
Ich habe folgendes schon probiert:
@SetField("ReturnReceipt"; "0");
@SetField("ReturnReceipt"; "");
@SetField("ReturnReceipt"; @Unavailable);
Ich habe die Subform wie ursprünglich an der ersten Stelle in der Memo-Form gehabt.
Ich habe die Subform als letzte Subform (4. Subform) in der Memo-Form gehabt.
Danke
Wolfgang
Hallo Rösing,
den einzigen brauchbaren Weg den ich bisher gefunden hate ist, dass man das "oneui" von IBM als Style benutzt. Dann sieht das RTF vernünftig auch und läßt sich verwenden.
Hallo Zusammen,
die Ursache des Problems lag in einem anderen Bereich, den Rechten...
session.userName bekommt in diesem Agenten nicht den Wert dessen unter den der Agent läuft ("Run on behalf of") sondern unter dem Namen des Servers.
Das bedeutet, dass der Server aus der ACL gelöscht wird.
Dann wird der DB Stub auf dem Backupserver erzeugt. Der Server kann aber nicht mehr darauf zugreifen. Daher kommt die Fehlermeldung. (Seltsamerweise wird die Gruppe "LocalDomainServers", wo beide Server eingetragen sind nicht berücksichtigt, was ich zumindest erwartet hätte.)
Ich habe den Code wie folgt geändert:
...
If Not serverReplic = "" Then
Call newDb.CreateReplica(serverReplic,pfad+dbname)
Call newDb.Replicate(serverReplic)
End If
Danke für Eure Hilfe
Wolfgang
Hallo Diali,
hatte ich um 20 pixel erweitert: funktionierte nicht...
Habe jetzt mal 50 pixel genommen und es geht ...
Werde mich jetzt an den kritischen Wert annähern...
Danke
Hallo Zusammen,
ich habe eine Navigation die eine Ansicht von Ordnern beinhaltet.
Wenn man jetzt recht viele Ordner hat und die Bildschirm-Auflösung nicht allzu groß ist, werden in dem Frame der Navigation die die Seite mit der Outline beinhaltet beide Scrollbalken angezeigt. Ich würde den horizontalen gerne verstecken, habe aber bisher keinen Weg gefunden.
Die Einstellungen im Frame lassen nur beide oder keinen Balken zu (Ich vermute, dass der Notesclient feststellt, dass die vertikale Darstellung zu groß ist, dann feststellt dass die Page generell zu groß ist und beide Scrollbalken darstellt.)
Programmatisch komme ich an die Page nicht heran, da ich nur Zugriff auf die Dokumente bekomme...
Hat jemand noch eine andere Idee ?
Danke
Wolfgang
Hat jemand eine Idee....
Danke.
Hallo Taurec,
Ich hoffe Du hattest ein gutes Wochenende
Der Code:
=======
DAs QuerySave-Object im Konfigurationsdokument:
Sub Querysave(Source As Notesuidocument, Continue As Variant) Dim db As NotesDatabase Dim doc As NotesDocument Set doc = source.document Set db = doc.ParentDatabase ' Eingabe in das Backend schieben Call source.refresh Call doc.Save(True,False) ' Agenten ausführen Dim agent As NotesAgent Set agent = db.GetAgent("newDB") Dim nid As String nid = doc.NoteID Call agent.RunOnServer(nid) ' doc "refreshen" Delete doc Set doc = db.GetDocumentByID(nid) ' Fehlermeldungen If (doc.getitemvalue("status")(0) <> "") Then Messagebox doc.getitemvalue("status")(0) , , "ERROR" Else Messagebox "database generated\n on " + server + dbpath , , "SUCCESS" End If ' doc schließen continue= False Call source.Close Call doc.Remove(True) End Sub
Der eigentliche Agent:
==============
Declaration:
Const strTemplate = "sp_projekttemplate.ntf"
Initialize:
'/**
' * Agent creates a database and a replication in the failoverserver<br>
' * The filename is generated in three parts, year + number + name<br>
' * <p></p>
' * @version 1.0
' * @author Wolfgang Martens
' * @param session:NotesSession actual Notessession
' * @param [GLOBAL] pdoc - the document that "called" the agent, containing the filename and returning the status
' * @return Boolean - true, if the agent has sucessfully run (status via the configurationdocument)
' */
Sub Initialize
On Error Goto errhandle
Dim session As New NotesSession
Dim strMessage As String
Dim server As String
Dim serverReplic As String
Dim pfad As String
Dim dbname As String
Dim titel As String
Dim accessManager As New StringList
Dim accessDesigner As New StringList
Dim accessEditor As New StringList
Dim accessAuthor As New StringList
Dim accessReader As New StringList
Dim accessDepositor As New StringList
Dim accessNone As New StringList
'Profiledoc "setup" (server, path, foserver)
Dim prfdoc As NotesDocument
Set prfdoc = session.CurrentDatabase.GetProfileDocument("setup")
'Configurationdoc: name settings
Dim agent As NotesAgent
Set agent = session.CurrentAgent
Dim pdoc As NotesDocument
Set pdoc = session.CurrentDatabase.GetDocumentByID(agent.ParameterDocID)
On Error Goto errorProfile
server = prfdoc.GetItemValue("projectsDBServer")(0)
serverReplic=prfdoc.GetItemValue("projectsDBServerFO")(0)
pfad = prfdoc.GetItemValue("projectsDBPath")(0)
If server = "" Then
server = session.CurrentDatabase.Server
End If
' setting ACL
'Call accessManager.add("&aAdmins_DSA",True) -> ACL Template
'Call accessManager.add("&aDevelopers",True) -> ACL Template
'Call accessManager.add("LocalDomainServers",True) -> ACL Template
'Call accessNone.add("-Default-",True) -> ACL Template
On Error Goto errorServer
'Enables Working at design :-)
If Lcase(server) = "[testserver]" Then
Call accessManager.add("Admin",True)
Call accessManager.add("Developer",True)
Call accessDesigner.add("Developer_apprentice",True)
End If
titel = pdoc.GetItemValue("sName")(0)
dbname = titel + ".nsf"
' generates the database
On Error Goto errorPfad
Dim template As New NotesDatabase (server, strTemplate )
Dim newDB As New NotesDatabase( server,pfad+dbname )
If newDB.IsOpen Then
Print ( "The database " + dbname + " already exists." )
Call pdoc.ReplaceItemValue("status", "The database " + dbname + " already exists." )
Call pdoc.Save(True,False)
Else
Print ( "Creating the database and replic for " + dbname)
If Not template.IsOpen Then
Goto errorTemplate
End If
On Error Goto errorNewDB
Set newdb = template.CreateFromTemplate( server, pfad+dbname, True )
newdb.Title = titel
' set acl
If accessManager.count > 0 Then
Call dbaccess(newDB, accessManager.toVariant(), ACLLEVEL_MANAGER)
End If
If accessDesigner.count > 0 Then
Call dbaccess(newDB, accessDesigner.toVariant(), ACLLEVEL_DESIGNER)
End If
If accessEditor.count > 0 Then
Call dbaccess(newDB, accessEditor.toVariant(), ACLLEVEL_EDITOR)
End If
If accessAuthor.count > 0 Then
Call dbaccess(newDB, accessAuthor.toVariant(), ACLLEVEL_AUTHOR)
End If
If accessReader.count > 0 Then
Call dbaccess(newDB, accessReader.toVariant(), ACLLEVEL_READER)
End If
If accessDepositor.count > 0 Then
Call dbaccess(newDB, accessDepositor.toVariant(), ACLLEVEL_DEPOSITOR)
End If
If accessNone.count > 0 Then
Call dbaccess(newDB, accessNone.toVariant(), ACLLEVEL_NOACCESS)
End If
' ACL Anpassen
Dim acl As NotesACL
Dim aclEntry As NotesACLEntry
Set acl = newdb.ACL
Print "Adding roles to " + session.userName
Set aclEntry = acl.GetEntry(server)
Forall r In acl.Roles
Call aclEntry.EnableRole(r)
End Forall
Set aclEntry = acl.GetEntry(session.UserName)
Call aclEntry.Remove
Call acl.Save
' On Error Goto errorServerFO
On Error Goto errhandle
If Not serverReplic = "" Then
[b] Call newDb.CreateReplica(serverReplic,pfad+dbname)
[/b] End If
End If
Exit Sub
errhandle:
strMessage = Lsi_info(2) & " aufgerufen von " & Lsi_info(12) & ": Fehler (" & Cstr(Err) & ") Zeile: " & Cstr(Erl) & " - " & Error$ & Chr(10)
strMessage = strMessage & "Fehler " & Cstr(Err) & ": " & Error(Cstr(Err)) & Chr(10)
Print "CRITICAL ERROR: " + strMessage
Call pdoc.ReplaceItemValue("status", "CRITICAL ERROR: " + strMessage)
Call pdoc.Save(True,False)
Exit Sub
errorProfile:
strMessage = "Profiledocument was not found. Please contact you administrator." & Chr(10)
strMessage = strMessage & "Fehler " & Cstr(Err) & ": " & Error(Cstr(Err)) & Chr(10)
Print "ERROR: " + strMessage
Call pdoc.ReplaceItemValue("status", "ERROR: " + strMessage)
Call pdoc.Save(True,False)
Exit Sub
errorNewDB:
strMessage = "Generated Database was not found. Please contact you administrator." & Chr(10)
strMessage = strMessage & "Fehler " & Cstr(Err) & ": " & Error(Cstr(Err)) & Chr(10)
Print "ERROR: " + strMessage
Call pdoc.ReplaceItemValue("status", "ERROR: " + strMessage)
Call pdoc.Save(True,False)
Exit Sub
errorTemplate:
strMessage = "Template to generate database not found. Please contact you administrator. (Templatename: " + strTemplate +")" & Chr(10)
strMessage = strMessage & "Fehler " & Cstr(Err) & ": " & Error(Cstr(Err)) & Chr(10)
Print "ERROR: " + strMessage
Call pdoc.ReplaceItemValue("status", "ERROR: " + strMessage)
Call pdoc.Save(True,False)
Exit Sub
errorServer:
strMessage = "Server for generating database not found. Please check setup (Project Databases - Server)." & Chr(10)
strMessage = strMessage & "Fehler " & Cstr(Err) & ": " & Error(Cstr(Err)) & Chr(10)
Print "ERROR: " + strMessage
Call pdoc.ReplaceItemValue("status", "ERROR: " + strMessage)
Call pdoc.Save(True,False)
Exit Sub
errorServerFO:
strMessage = "Server for generating failover database not found. Please check setup (Project Databases - FailoverServer)." & Chr(10)
strMessage = strMessage & "Fehler " & Cstr(Err) & ": " & Error(Cstr(Err)) & Chr(10)
strMessage = strMessage & serverReplic & " " & pfad+dbname & Chr(10)
Print "ERROR: " + strMessage
Call pdoc.ReplaceItemValue("status", "ERROR: " + strMessage)
Call pdoc.Save(True,False)
Exit Sub
errorPfad:
strMessage = "Path for generating database not found. Please check setup (Project Databases - Database Path)." & Chr(10)
strMessage = strMessage & "Fehler " & Cstr(Err) & ": " & Error(Cstr(Err)) & Chr(10)
Print "ERROR: " + strMessage
Call pdoc.ReplaceItemValue("status", "ERROR: " + strMessage)
Call pdoc.Save(True,False)
Exit Sub
End Sub
Alles anzeigen
Zeile 127 ist fett hinterlegt.
Auch über das Wochenende habe ich da leider keine andere Lösung gefunden / Idee gehabt, da man aus Gründen der Rechte die Erstellung der Replikation ebenfalls im Backend laufen lassen muss.
Danke.
Vielleicht hast Du ja einen Idee...
Wolfgang
Das weiß ich halt nicht, für mich sieht das leider so aus, als würde der Befehl "CreateReplica" das machen, da man dort auch die Replikdatenbank zurückgeben könnte.
(set replicdb = neueDB.CreateReplica(server,pfad))
Als Frontent-Agent in Clientcontext hat das mit den entsprechenden Rechten auch problemlos funktioniert. Da der Kontext aber Adminrechte benötigt, und die o.g. Herren diese Rechte nicht haben dürfen, habe ich daraus einen Agenten gestrickt der mit "runOnServer" angestoßen wird und die Rechte von Admin bekommt.
Danke
Wolfgang
(Wünsche dann ein schönes Wochenende und würde mich dann am Montag wieder melden)
Hallo Taurec,
hatte ich versucht, das Problem liegt darin, dass das öffnen der Datenbank in dem Moment passiert, wenn die Datenbank angelegt wird.
funktioniert nicht, da der Agent in der ersten Zeile schon aussteigt:
2009-06-19 15:36:18 Agent printing: CRITICAL ERROR: INITIALIZE aufgerufen von INITIALIZE: Fehler (4060) Zeile: 127 - User CN=[Name des OnBehalfOf]/OU=dor/OU=de/O=[FIRMA] cannot open database dor-lddev-02/[Firma]!!clients\aktionen\09-0007 projectname.nsf
Ich komme um das "öffnen" nicht herum, obwohl ich das weder benötige noch will....
Hallo Zusammen,
ich habe folgendes Problem:
Wir haben einen Agenten erstellt, der Editoren ermöglicht eine Datenbank in einen konfigurierten Ordner auf den Server zu erstellen. (Die Herren kommen gerne Freitags kurz von deren Feierabend und benötigen die DB dann Montags morgens um 8.00 Uhr )
Klappt auch alles soweit. Das Setup-Dokument ruft den Backend-Agenten auf welcher mit (onBehalfof) Adminrechten läuft, erzeugt die Datebank mit dem Template.
Das eigentliche Problem besteht darin, dass ich eine Replic auf den Failoverserver erzeuge, welche dann einen Fehler rückmeldet, weil die Datenbank erstmal nur als Stub generiert wurde. Diese soll aber wohl sofort geöffnet werden, was den Fehler verursacht.
On Error Goto errhandle
If Not serverReplic = "" Then
Call newDb.CreateReplica(serverReplic,pfad+dbname)
End If
Ich könnte den Fehler ignorieren, möchte das aber nicht, falls mal ein "echter" Fehler auftritt.
Hat jemand eine Idee wie das vernünftig handlebar ist ?
Danke.
Wolfgang
Liebe Gemeinde,
irgendwo mache ich einen ziemlich dummen Fehler. Ich bin aber nicht in der Lage den zu finden.
Ich habe eine Funktion die ein Notesdokument erstellt und diese an die übergeordnete Funktion zurückgibt. Dort kommt diese aber nicht an.
Könnt Ihr helfen ?
Function schreibeEintrag (...) As NotesDocument Dim oDoc As NotesDocument Set oDoc = oDB.CreateDocument oDoc.Form = "Eintrag" ... Felder setzen If oDoc.ComputeWithForm( False, True ) Then Call oDoc.Save(True, False) Set schreibeEintrag = oDoc Else Set schreibeEintrag = Nothing End IfEnd Function
die Aufrufende Funktion:
Function erstelleDocEintraege(...) As Variant
Dim oDoc As NotesDocument
Dim arlocal() As NotesDocument
Set oDoc = schreibeEintrag(objMsg,oEintrag,objEinstellungen)
Set arlocal(Ubound(arlocal)) = oDoc
erstelleNotesDocEintraege = arlocal
end Function
Die Variable oDoc der aufrufenden Funktion ist leer. Umbenennen und ähnliches hat nicht geholfen. Die Funktion "schreibeEintrag" hat das Notesdokument gespeichert.
Könnt Ihr helfen?
Danke.
Wolfgang
Ich bin einen Schritt weiter. Die Datei wird sauber geschrieben, kann aber nicht entschlüsselt werden. Es liegt offensichtlich an der Installation des GnuPG. Entweder hat sich der Pfad für die Schlüssel geändert, oder Notes darf GnuPG nicht ausführen.
Danke für die Hilfe.
Wolfgang
Guten Morgen,
erstmal danke für die Antworten.
Das Skript ist in LostusScript geschrieben und läuft unter der AdminID oder ähnlichen IDs sowohl auf dem Client als auch auf dem Server durch. Erst wenn der Agent von Agentmanager auf dem Server zeitgesteuert laufen soll hängt er sich auf.
Der Prozess sieht so aus.
- GnuPG verschlüsselte Mail kommt an.
- Agent nimmt verschlüsselten Anhang und legt den in einem temp-Ordner ab.
- Agent ruft GnuPG mit dem Pfad der Datei im tempOrdner auf und meldet zurück, dass dies scheitert. (Im Ordner ist die Datei nicht vorhanden.)
Dieses Verfahren funktioniert auf diversen Servern und ist dort auch getestet. Der Agent läuft halt auf dem einen Server nicht, obwohl wir das in einer vergleichbaren Umgebung auf laufen haben.
Also gibt es irgendwo eine Konfiguration (Lotus Notes oder WinServer2003), die verhindert, dass die Datei nicht im Temp-Ordner abgelegt wurde. Auf den ersten und zweiten Blick kann ich aber keinen Grund finden. Vielleicht habt Ihr eine Idee.
Danke.
Wolfgang
Liebe Gemeinde,
Ich habe eine Anwendung die aus einer Mail ein Attachment auf der lokalen Platte ablegt und von dort aus entschlüsselt und weiterverarbeitet werden soll.
Auf dem Rechner läuft Domino 7.02 und WinServer2003. Wir haben dort das Problem, dass der Agent von Hand gestartet sauber durchläuft. Wenn der Agent automatisch laufen soll (also im Systemkonto) kann er den Anhang nicht in den Ordner schreiben. Zwei weitere Server haben die gleiche Installation und dort läuft alles reibungslos.
- Der Agent versucht mittels obj.extractFile(Dateiname) die Daten abzulegen.
- Der Agent darf "beschränkte Operationen" ausführen.
- Der Server hat volle Rechte Agenten auszuführen.
- Es gibt keine Policy auf dem WinServer die das Schreiben verhindert.
- Der Ordner ist vorhanden und kann von dem Agenten über "chdir" auch angesteuert werden. (Wird vorher getestet).
Hat jemand eine Idee, welche Konfiguration (Notes oder WinServer) noch das Schreiben der Datei verhindern könnte ? Hatte jemand das Problem und kann evtl. eine Lösung nennen ?
Danke.
Wolfgang
Hallo Zusammen,
ich habe es mit einem nicht ganz so schönen Workaround hinbekommen.
Der Ordner, der die Ergebnisse speichert, ist eindeutig ("Ergebnis") und public, private on first use.
Falls es den Ordner nicht gibt, also bei der ersten Benutzung, wird der Benutzer aufgefordert auf diesen Ordner zu klicken und ihn damit anzulegen. Danach funktioniert alles reibungslos, bis der Ordner wieder gelöscht wird. Da ich ihn aber nicht lösche,sondern nur leere...
Nicht schön, aber wenn es die notwendigen Befehle erst ab Version 8 gibt
Hallo Zusammen,
Danke für das schön machen und für das Helfen. Mein Problem sieht grade so aus, dass der o.g. Befehl erst ab Notes 8 zur Verfügung steht und ich aber unter Notes 6.5 entwickeln muss
Ich habe also jetzt versucht mir die Outline zu holen, zu speichern und den Workspace anzuweisen, das Fenster neu zu laden. Klappt nicht. Ich habe dann einen OutlineEntry erzeugt der den gleichen Namen wie der Folder hat. Auch das hilft nicht.
app = "Search" + Replace(Replace(Replace(Cstr(uidoc .FieldGetText("User")), ".", ""),":","")," ","")
Set view = db.GetView(app)
If Not view Is Nothing Then
Call view.AllEntries.RemoveAllFromFolder(app)
Else
Call db.EnableFolder(app)
Dim otl As NotesOutline
Set otl = db.GetOutline("otlDefault")
Call otl.Save
Call workspace.ReloadWindow
End If
Alles anzeigen
Wie bekomme ich die outline neu geladen, so dass das Skript funktioniert. Das primäre Problem scheint darin zu liegen, dass wie oben geschrieben, der Ordner nicht in der outline erkannt wird. Als Entry kann man den auch nicht unterschieben....
Hat jemand eine Idee ?
Danke.
Wolfgang