Posts Tagged: ‘AdminCamp’
AdminCamp 2016: Notes-Entwicklung für Domino-Admins
So kann man sich nämlich vieles vereinfachen, automatisieren oder leichter zugänglich machen. Das zeige ich u. a. an mehreren Beispielen in meinem Vortrag.
Hier die Präsentation zu meinem Vortrag in Track 1, Session 6: Notes-Entwicklung für Domino-Administratoren:
AdminCamp 2016: Notes-Entwicklung für Domino-Admins
So kann man sich nämlich vieles vereinfachen, automatisieren oder leichter zugänglich machen. Das zeige ich u. a. an mehreren Beispielen in meinem Vortrag.
Hier die Präsentation zu meinem Vortrag in Track 1, Session 6: Notes-Entwicklung für Domino-Administratoren:
AdminCamp 2016: Blick über den Tellerrand – IBM Business Analytics
IBM wirbt momentan massiv für die Watson-Dienste (Cloud-only) und baut Analytics in die vorhandenen Produkte ein (IBM Connections, IBM Domino Verse Edition).
Deshalb habe ich die Teilnehmer in dieser Session kurz theoretisch in das Thema eingeführt, gezeigt, welche Produkte IBM im Portfolio (subjektive Auswahl), und IBM Cognos TM1 live installiert.
Hier die Präsentation zu meinem Vortrag in Track 2, Session 1: Blick über den Tellerrand - IBM Business Analytics:
AdminCamp 2016: Blick über den Tellerrand – IBM Business Analytics
IBM wirbt momentan massiv für die Watson-Dienste (Cloud-only) und baut Analytics in die vorhandenen Produkte ein (IBM Connections, IBM Domino Verse Edition).
Deshalb habe ich die Teilnehmer in dieser Session kurz theoretisch in das Thema eingeführt, gezeigt, welche Produkte IBM im Portfolio (subjektive Auswahl), und IBM Cognos TM1 live installiert.
Hier die Präsentation zu meinem Vortrag in Track 2, Session 1: Blick über den Tellerrand - IBM Business Analytics:
AdminCamp 2016 – assono ist wieder dabei!
Vom 19. bis 21. September findet das AdminCamp dieses Jahr in Gelsenkirchen statt. Wir sind auch dieses Jahr wieder eingeladen, als Referent teilzunehmen. Beim AdminCamp geht es an drei Konferenztagen darum, im Rahmen von Workshops, Vorträgen und Diskussionsforen, Profis die Möglichkeit zu geben, ihr Wissen rund um Notes und Domino miteinander zu teilen.
Thomas Bahn wird in Track 2, Session 1 einen: "Blick über den Tellerrand" werfen. Hierbei geht es um die Verwendung von "Analytics" in ICS Produkten.
In Track 1, Session 5 wird Thomas Bahn praxisnah in die: "Notes Entwicklung für Administratoren einführen". Der Vortrag reicht von kleineren Änderungen an den Standard Datenbänken, bis hin zu einer kurzen Einführung in LotusScript.
Auch Manuel Nientit ist beim diesjährigen AdminCamp mit von der Partie. Er wird in Track 4 Session 7 einen Vortrag zum Thema: "Deine Guidelines zu Domino Richtlinien" halten. Er wird zeigen, wie mithilfe gut eingestellter Policies, schaden durch Nutzer und Aushilfsadmins an Notes verhindert werden kann.
Wir freuen uns Sie bei der Veranstaltung begrüßen zu dürfen. Beiträge zu den Vorträgen folgen in Kürze.
AdminCamp 2016 – assono ist wieder dabei!
Vom 19. bis 21. September findet das AdminCamp dieses Jahr in Gelsenkirchen statt. Wir sind auch dieses Jahr wieder eingeladen, als Referent teilzunehmen. Beim AdminCamp geht es an drei Konferenztagen darum, im Rahmen von Workshops, Vorträgen und Diskussionsforen, Profis die Möglichkeit zu geben, ihr Wissen rund um Notes und Domino miteinander zu teilen.
Thomas Bahn wird in Track 2, Session 1 einen: "Blick über den Tellerrand" werfen. Hierbei geht es um die Verwendung von "Analytics" in ICS Produkten.
In Track 1, Session 5 wird Thomas Bahn praxisnah in die: "Notes Entwicklung für Administratoren einführen". Der Vortrag reicht von kleineren Änderungen an den Standard Datenbänken, bis hin zu einer kurzen Einführung in LotusScript.
Wir freuen uns Sie bei der Veranstaltung begrüßen zu dürfen. Beiträge zu den Vorträgen folgen in Kürze.
AdminCamp 2015: Weil sicher sicher sicher ist – Sicherheit in IBM Domino, Edition 2015
Hier die Präsentation zu meinem heutigen Vortrag in Track 3, Session 4: Weil sicher sicher sicher ist - Sicherheit in IBM Domino, Edition 2015:
AdminCamp 2015: Wir sind dabei
Am Dienstag in Session 4 im Track 3 geht es um ein Steckenpferd von mir: Weil sicher sicher sicher ist, Edition 2015 - Sicherheit in IBM Domino
Sicherheit ist ein vielschichtiges Thema und IBM hat bei Notes und Domino sehr viel getan, so dass man damit eine äußerst sichere Lösung für Anwendungen, E-Mails und mehr implementieren kann. Man kann aber natürlich auch riesige Scheunentore aufmachen...
Damit dir das nicht passiert, erkläre ich dir in dieser Session die wichtigsten Grundlagen und wie man "Sicherheit" in den Server- und Konfigurationsdokumenten, in der notes.ini und an anderen Stellen praktisch und pragmatisch umsetzt.
Im letzten Jahr hat sich einiges in Punkto Sicherheit beim Domino-Server verändert, insbesondere beim HTTP-Task, SSL und TLS. POODLE (SSL und TLS), Bar Mitzvah (RC4), LogJam und andere Sicherheitslücken waren in aller Munde. Was solltest als Domino-Administrator jetzt unbedingt machen und wie kannst du das Plus an Sicherheit einfach nutzen?
Diese Session wendet sich an alle Domino-Administratoren, die ihr Domino-System sicher(er) machen möchten.
Ein Vortrag und eine Hands-on Session auf dem AdminCamp 2015
Vielen Dank an Rudi Knegt, dass er mir die Möglichkeit gibt auf dem AdminCamp zu sprechen. Ich freue mich schon darauf!
Session: IBM Verse und SmartCloud Notes in der Praxis
Als Ziel habe ich mir hierfür gesetzt einen Praxis orientierten Ansatz zu gehen und nicht nur schöne IBM Hochglanz Folien zu zeigen. Ich arbeite selbst schon lange ausschliessliche mit IBM Verse und möchte diese Arbeitsweise Live zeigen. Ich werde auch die negativen Seiten nicht aussparen, was noch fehlt oder noch nicht richtig funktioniert. Im zweite Teil werde ich dann etwas in die SmartCloud oder Connections Cloud einsteigen, wie man einen einfachen Umstieg schafft, oder auch nur ein paar Tests in einer hybriden Konfiguration machen kann.
Hands-on: Apache als Reverse Proxy für Domino
Der Browser wird als Client immer wichtiger, sei es für Mail oder für Applikationen. Ich zeige anhand einfacher Beispiele, wie man mit einem kostenfreien Apache Webserver einen Reverse Proxy konfigurieren kann. Dadurch kann man einen zentralen Proxy verwenden um schnell und einfach die eigene Domino Infrastruktur entweder von intern oder auch von extern verfügbar zu machen.
Hier zur Agenda und zur Anmeldung.
Filed under: Event, IBM Verse

AdminCamp 2014: Probier’s mal mit Gemütlichkeit
Alles war toll: Die Leute, die hochklassigen Vorträge, die Verpflegung, die Abendveranstaltungen, ... Ich werde schon ganz wehmütig.
Aber nach dem AdminCamp ist vor dem EntwicklerCamp, nächstes Jahr vom 2. bis 4. März, wieder hier in Gelsenkirchen. Ich freue mich schon darauf.

Die Präsentation zu meinem heutigen Vortrag in Track 1, Session 8: Probier's mal mit Gemütlichkeit:
Quick Tip: Benutzervalidierung durch erneute Passwort-Eingabe
Dafür gibt es ein @Command: ToolsUserLogoff. Wenn es ausgeführt wird, logt es den Benutzer aus. Wenn man dieses Kommando mit etwas Code kombiniert, mit dem man auf den Server zugreift, erscheint der Passworteingabe-Dialog, wie es zum Bespiel hier beschrieben wurde: Forcing user re-entry of passwords for electronic signatures in script.
Dieser Ansatz hat aber für mich drei Nachteile:
1. Er funktioniert nicht offline, also z. B. bei einer lokalen Replik, weil der Serverzugriff notwendig ist, um den Passworteingabe-Dialog zu öffnen.
2. Ich möchte es nutzen, um das Öffnen von existierenden Dokumenten abzusichern. Wenn der Benutzer den Dialog abbricht, wird das Dokument trotzdem geöffnet.
3. Der Formel-Code muss im QueryOpen-Ereignis der Maske eingetragen werden. Dort brauche ich aber zwangsläufig LotusScript.
Also musste ich weiter suchen nach einer Lösung in LotusScript. Und ich wurde fündig bei Eknori, der in 2004 diesen Blog-Eintrag verfasst hat: @Command(ToolsUserLogoff) in Lotus Script.
Diese Lösung muss für die aktuellen Versionen von Notes angepasst werden, weil man sich jetzt nicht mehr mit F5, sondern mit Strg-F5 auslogt.
Ich war immer noch nicht überzeugt, dass dies die bestmögliche Lösung für mein Problem sein sollte. Es ist wegen der Verwendung von Windows-DLLs nicht auf andere Plattformen übertragbar, der Benutzer bleibt ausgeloggt, wenn er den Passworteingabe-Dialog abbricht, es würde wohl auch nicht lokal funktionieren usw.
Ich suchte weiter und fand diese großartige Idee: Mittels Notes C-API auf den privaten Teil der Benutzer-ID-Datei zugreifen, genauer mit der REGGetIDInfoString-Function mit REGIDGetPrivateKey als infoType.
- Dies würde den Passworteingabe-Dialog erzwingen, aber gleichzeitig den Benutzer nicht abmelden.
- Es würde auch lokal ohne jeden Server-Kontakt funktionieren.
- Und ich könnte sogar feststellen, wenn der Benutzer den Dialog abgebrochen hätte und darauf falls nötig reagieren.
Vielen Dank an Davy Vanherbergen für seinen OpenNTF Code Bin-Beitrag (von 2003!): Call notes password prompt from lotusscript
Ich habe seine Idee genommen und auf "meine Art" neu implementiert. Dabei habe ich unsere C-API-Hilfsfunktionen genutzt, und ich lasse den Benutzer eine andere ID-Datei auswählen, wenn die in der notes.ini eingestellte nicht die seine ist.
Function ValidateCurrentUser As Boolean
'/**
' * validates current user by letting him enter his password
' *
' * @return True, if user has successfully entered his password
' *
' * @author Thomas Bahn/assono <tbahn@assono.de>
' * @version 2014-09-30
' */
Const MAXOUTBUFRLEN% = 4096
Dim idFileName As String
Dim returnCode As Integer
Dim userNameBuffer As String*MAXUSERNAME
Dim actualLen As Long
Dim currentUserName As String
Dim outBufrLen As String*MAXOUTBUFRLEN
If Not IsDebugMode() Then On Error GoTo errorHandler
ValidateCurrentUser = False
idFileName = session.GetEnvironmentString("KeyFileName", True)
returnCode = REGGetIDInfoString(idFileName, REGIDGetName, _
userNameBuffer, MAXUSERNAME, actualLen)
Call ShowCAPIErrorIfAnyAndEnd(returnCode, "REGGetIDInfo", _
NULLHANDLE)
currentUserName = Left(userNameBuffer, actualLen - 1)
Do While session.UserName <> currentUserName
' ID file configured in notes.ini is not the ID file of the
' current user
idFileName = uiws.OpenFileDialog(False, _
"Wählen Sie Ihre ID-Datei:", "*.ID|", _
GetNotesDataDirectory(), idFileName)(0)
returnCode = REGGetIDInfoString(idFileName, REGIDGetName, _
userNameBuffer, MAXUSERNAME, actualLen)
Call ShowCAPIErrorIfAnyAndEnd(returnCode, "REGGetIDInfo", _
NULLHANDLE)
currentUserName = Left(userNameBuffer, actualLen - 1)
Loop
returnCode = REGGetIDInfoString(idFileName, REGIDGetPrivateKey, _
outBufrLen, MAXOUTBUFRLEN, actualLen)
If returnCode = -32355 Then
Exit Function ' user cancelled dialog
Else
Call ShowCAPIErrorIfAnyAndEnd(returnCode, "REGGetIDInfo", _
NULLHANDLE)
End If
' when we get here, the user must have entered his password
' successfully
ValidateCurrentUser = True
Exit Function
errorHandler:
If HandleError() = RESUME_NEXT_LINE Then Resume Next
Exit Function
End Function
GetNotesDataDirectory() ist eine Hilfsfunktion, die das Notes-Datenverzeichnis zurück gibt. Ersetze diese Funktion durch deine eigene oder einfach eine String-Konstante.
Und passe den Fehlerbehandlungscode (IsDebugMode() and HandleError()) entsprechend deinen Standards an.
Ich benötige noch einige Deklarationen (Declarations):
Private Const LIBRARY = "Eintrag utils"
' WORD LNPUBLIC OSLoadString(HMODULE hModule, STATUS StringCode, char far *retBuffer, WORD BufferLength);
Declare Function OSLoadString Lib "nnotes" Alias "OSLoadString" (ByVal hModule As Long, ByVal stringCode As Integer, ByVal retBuffer As LMBCS String, ByVal bufferLength As Integer) As Integer
' STATUS LNPUBLIC REGGetIDInfo(char far *IDFileName, WORD InfoType, void far *OutBufr, WORD OutBufrLen, WORD far *ActualLen);
Declare Function REGGetIDInfoString Lib "nnotes" Alias "REGGetIDInfo" (ByVal idFileName As String, ByVal infoType As Integer, ByVal outBufr As String, ByVal outBufrLen As Integer, actualLen As Long) As Integer
Declare Function REGGetIDInfoBoolean Lib "nnotes" Alias "REGGetIDInfo" (ByVal idFileName As String, ByVal infoType As Integer, ByVal outBufr As Long, ByVal outBufrLen As Integer, actualLen As Long) As Integer
Const REGIDGetName = 7 ' Data structure returned Is char xx[MAXUSERNAME]
Const REGIDGetPrivateKey = 9 ' Data structure returned Is char xx[xx]
' STATUS LNPUBLIC NSFDbClose(DBHANDLE hDB);
Declare Function NSFDbClose Lib "nnotes.dll" (ByVal hDB As Long) As Integer
Const NOERROR = 0
Const NULLHANDLE = 0&
Const MAXUSERNAME = 256
And two support functions for the C API error handling:
Sub ShowCAPIErrorIfAnyAndEnd(errorCode As Integer, functionName As String, hDB As Long)
'/**
' * shows user the C API error and aborts execution.
' *
' * @param errorCode return code of the function's execution
' * @param functionName name of the C API function called
' * @param hDB handle to the open database
' *
' * @author Thomas Bahn/assono <tbahn@assono.de>
' * @version 2014-07-17
' */
If errorCode = NOERROR Then Exit Sub ' exit if no error occured
If hDB <> 0 Then
' if there is a valid handle, try to close database
Call NSFDbClose(hDB)
End If
Error Err, "Fehler in Bibliothek '" & LIBRARY & "'" & Chr$(10) & _
"Ein Fehler ist aufgetreten in der C-API-Funktion'" & _
functionName & "': " & Chr$(10) &_
"Fehler-Code: " & Trim$(Str$(errorCode)) & Chr$(10) & _
"Fehler-Text: " & Chr$(10) & GetCAPIErrorMsg(errorCode)
End Sub
Function GetCAPIErrorMsg(errorCode As Integer) As String
'/**
' * gets error message for the C API error.
' *
' * @param errorCode return code of the function's execution
' * @return error message for the C API error
' *
' * @author Thomas Bahn/assono <tbahn@assono.de>
' * @version 2014-07-17
' */
Dim length As Integer
Dim buffer As String
' initialize a buffer of adequate length to accept the error string
buffer = String$(256, 0)
' get the API error message from the internal Notes/Domino string
' tables
length = OSLoadString(NULLHANDLE, errorCode, buffer, Len(buffer))
If length > 0 Then
' remove any trailing characters from the string and
' return it to the caller
GetCAPIErrorMsg = Left$(buffer, InStr(1,buffer,Chr$(0))-1)
Else
' couldn’t locate the error message in the string tables
GetCAPIErrorMsg = "Unbekannter Fehler"
End If
End Function
Schließlich platziere Code ähnlich dem folgenden in das QueryOpen-Ereignis deiner Maske:
If continue Then
continue = ValidateCurrentUser()
If continue Then
' do some stuff if necessary
End If
End If
Da der Code ausschließlich Notes C-API-Aufrufe benutzt, kann er leicht auf weitere Plattformen erweitert werden. Momentan ist er auf Windows beschränkt.
AdminCamp 2014: Weil sicher sicher sicher ist – Sicherheit in IBM Domino
Hier schon mal die Präsentation zu meinem heutigen Vortrag in Track 2, Session 3: Weil sicher sicher sicher ist - Sicherheit in IBM Domino:
AdminCamp 2014: Wir sind dabei
Wir werden über zwei, aus meiner Sicht besonders wichtige und relevante Themen vortragen dürfen: Sicherheit und Arbeits(zeit)ersparnis.
Am Dienstag in Session 3 im Track 1 geht es um ein Steckenpferd von mir: Weil sicher sicher sicher ist - Sicherheit in IBM Domino
Sicherheit ist ein vielschichtiges Thema und IBM hat bei Notes und Domino sehr viel getan, so dass man damit eine äußerst sichere Lösung für Anwendungen, E-Mails und mehr implementieren kann. Man kann aber natürlich auch riesige Scheunentore aufmachen...
Damit dir das nicht passiert, erkläre ich dir in dieser Session die wichtigsten Grundlagen und wie man "Sicherheit" in den Server- und Konfigurationsdokumenten, in der notes.ini und an anderen Stellen praktisch und pragmatisch umsetzt.
Diese Session wendet sich an alle Domino-Administratoren, die ihr Domino-System sicher(er) machen möchten.
Am Mittwoch geht es in Session 8 im Track 3 darum, wie man sich das Leben als Domino-Administrator vereinfachen kann: Probier's mal mit Gemütlichkeit
Wie wäre es, sich einfach mal zurück zu lehnen und entspannen zu können?
Als Domino-Administratoren bestimmen viele kleinere (und vielleicht auch einige größere) Probleme unseren Tagesablauf. Meistens die gleichen Sachen - Woche für Woche, Monat für Monat. Da müsste sich doch was machen lassen...
Lasst uns eine Tour durch die kleinen und großen Helferlein unternehmen, die uns von IBM, OpenNTF.org und anderen Anbietern kostenlos zur Verfügung gestellt werden, und die unsere Arbeit deutlich vereinfachen und/oder beschleunigen können.
Wir werden dabei Werkzeuge sehen, die uns bei den wichtigsten bzw. häufigsten administrativen Tätigkeiten unterstützen: passives und aktives Monitoring, Konfiguration, Fehlersuche, Informationsbeschaffung usw.
Diese Session wendet sich an alle Domino-Administratoren, die sich ihre Arbeit vereinfachen möchten.