Tag: Notes

  • IBM Domino en Notes 9.0.1 FP1 is beschikbaar

    IBM Domino en Notes 9.0.1 FP1 is beschikbaar op http://www.ibm.com/support/fixcentral/

    Informatie over deze fix: http://www-10.lotus.com/ldd/fixlist.nsf/(Progress)/901%20FP1

  • IBM laat de naam Lotus vallen

    Wellicht is het u opgevallen: IBM heeft de afgelopen maanden de naam Lotus laten vervallen uit hun producten reeks.

    In plaats van Lotus Notes en Lotus Domino spreken we nu van IBM Notes en IBM Domino.

    IBM Notes (voorheen Lotus Notes) en IBM Domino (voorheen Lotus Domino) zijn respectievelijk de cliënt en server, van een cliënt-server groupware-toepassing oorspronkelijk gecreëerd door de Lotus Development Corp. in 1989.
    En eigenlijk was het niet Lotus maar het bedrijf Iris Associates, een partner software ontwikkelingsbedrijf uit Littleton, Massachusetts, dat onder leiding van Ray Ozzie het product Lotus Notes bedacht.

    Na de aankoop door IBM in 1995 werd langzaam de naam IBM toegevoegd aan de producten, en werd het IBM Lotus Domino, IBM Lotus Notes, IBM Lotus Traveler enz.

    In november 2012 kondigde IBM al aan het merk Lotus te laten vallen om in de toekomst producten uitsluitend met het IBM merk te identificeren.

    Op 13 maart 2013 kondigde IBM dan ook de nieuwste versie aan als IBM Notes 9 Sociale Edition , waarmee er een einde komt aan de al jaren vertrouwde Lotus naam.

     

  • IBM Notes Roadmap / Toekomst

    Bijna elk bedrijf dat nu IBM Notes gebruikt vraagt ons regelmatig wat nu de toekomst van Notes/Domino is.
    Al jaren roepen tegenstanders of onwetende mensen dat Notes dood is. Door deze geruchten worden wel eens verkeerde beslissingen genomen.

    IBM zelf promoot Notes niet, dit laten ze over aan hun Business Partners, die echter zelf ook vaak met deze vraag rondlopen.

    De plannen voor de nieuwe versies van Notes gaan echter onverminderd door. Bijna elk kwartaal komen er Fixpack’s uit voor de huidige versies en groeit het lijstje met aanpassingen aan de komende nieuwe versie van Notes.

    Is Notes dood? Wij vinden van niet, en gelukkig delen nog veel meer klanten en collega’s deze mening ook.

    Het volgende plaatje geeft een beeld van hoe IBM de toekomst tot 2015 ziet, verder is er nog geen materiaal voor handen.

    notes_roadmap_2015

     

  • Bijlage dialoog aanpassen

    Vanaf Notes versie 8.01 is het mogelijk om het “Open bijlage” dialoogvenster te manipuleren.

    De volgende notes.ini instellingen zijn beschikbaar:

    AttachmentActionDefault=1
    Zet de standaard instelling op “Openen”. Dit zorgt er voor dat de bijlage wordt geopend zonder tussenkomst van een dialoog.

    AttachmentActionDefault=2
    Zet de standaard instelling “Bewerken”.

    AttachmentActionDefault=3
    Zet de standaard instelling op “Weergeven”.

    AttachmentActionDefault=4
    Zet de standaard instelling op “Opslaan”.

    Deze notes.ini instellingen zijn natuurlijk ook met een Desktop policy aan te passen.

  • Nieuw in Lotus Notes 8.5: ID Vault

    Er was eens een tijd waar Notes beheerders het zwaar hadden….

    Nu worden we verwend met nieuwe functies die het werk wel erg makkelijk maken.
    Neem nu het in Notes 8.5 geïntroduceerde ID Vault (of vrij vertaald in het Nederlands een kluis om Notes ID’s in te bewaren).
    Pfff, hoor ik de die-hard-domino beheerder al roepen, dat hadden we altijd al, eerst de Escrow agent in versie 4 en vanaf versie 5 Password Recovery.

    Wat is er dan zo belangrijk aan dat ID Vault?

    Welnu, eindelijk hebben beheerders de mogelijkheid om zelf wachtwoorden te resetten.
    Vergeten wachtwoord, iets dat bij de meeste bedrijven als erg vervelend wordt ervaren.
    Zeker als (altijd de zelfde) personen na hun vakantie het Notes wachtwoord (alweer) vergeten zijn.
    Meestal was de oplossing om een oud ID met het initiële wachtwoord terug te plaatsen, met kans op verlies van certificaten en sleutels of inmiddels verlopen geldigheidsduur, of door middel van de ernstig vermoeiende Password Recovery procedure.

    Is dit niet herkenbaar? Lees dan niet verder.

    Anders is het volgende wellicht toch interessant.

    Instellen ID Vault.

    Het opzetten van een ID Vault is een eenvoudige taak:

    Start de Domino Administrator.
    Open de server waar de ID Vault moet komen.
    Klik het tabblad configuration, selecteer de server en klik rechts op Tools > ID Vaults > Create

    ineco-lotus-domino-aanmaken-id-vault

    Een dialoogvenster geeft uitleg over de ID Vault.
    0-ineco-lotus-domino-aanmaken-id-vault-splash

    Klik Next om door te gaan.

    Geef een naam voor de Vault, dit mag niet de zelfde naam als de Notes Organisatie naam zijn.
    1-ineco-lotus-domino-aanmaken-id-vault-naamgeving

    Geef eventueel een omschrijving op.
    Klik Next.

    Geef een nieuw wachtwoord op voor het Vault ID en controleer de locatie aan waar het ID opgeslagen wordt.
    2-ineco-lotus-domino-aanmaken-id-vault-wachtwoord

    Klik Next

    Controleer nogmaals of de server juist is.
    3-ineco-lotus-domino-aanmaken-id-vault-server
    Klik Next.

    Selecteer de beheerders voor deze Vault.
    Dit zijn overigens niet de personen die wachtwoorden mogen resetten, dit komt later.
    4-ineco-lotus-domino-aanmaken-id-vault-beheerder

    Klik Next.

    Geef op welke Organisaties of Units met deze Vault mogen werken.
    In het voorbeeld is dat er slechts 1 organisatie (/INECO).
    5-ineco-lotus-domino-aanmaken-id-vault-organisatie

    Klik Next.

    Nu komen de personen aan bod die wachtwoorden mogen resetten.
    Ook als er ID’s zijn waarmee applicaties gesigneerd worden die wachtwoorden mogen herstellen, en de server waarop zo’n applicatie draait dienen hier toegevoegd te worden.
    Natuurlijk is dit later allemaal nog aan te passen.
    6-ineco-lotus-domino-aanmaken-id-vault-terugzetten
    Klik Next.

    Geef op of er een bestaande Policy bijgewerkt moet worden, een nieuwe moet worden gemaakt, of dat je dit later handmatig wilt aanpassen.
    7-ineco-lotus-domino-aanmaken-id-vault-policy
    In ons geval kiezen we om een bestaande aan te passen.
    Klik Next.

    Hier de gekozen Master policy in beeld.
    8-ineco-lotus-domino-aanmaken-id-vault-policy-toevoegen
    Klik Add Vault Name om het Security settings formulier automatisch aan te passen.
    Klik Next.

    Selecteer het certifier ID van de organisatie.
    9-ineco-lotus-domino-aanmaken-id-vault-certifier
    Klik OK
    Klik Next

    Controleer of alles naar wens is in het dan volgende overzicht.
    9-ineco-lotus-domino-aanmaken-id-vault-overzicht
    Klik Create Vault wanneer je door wilt gaan.

    In de volgende dialoog kan een tekst worden ingegeven die aan een gebruiker wordt getoond wanneer deze klikt op wachtwoord vergeten.
    9-ineco-lotus-domino-aanmaken-id-vault-vergeten-prompt
    Type de tekst en klik OK.

    Wanneer alles goed is komt er een dialoog met een samenvatting van alle handelingen die zijn verricht.
    10-ineco-lotus-domino-aanmaken-id-vault-gereed
    De ID Vault is klaar voor gebruik!

    ID bestanden van de gebruikers worden periodiek overgezet in de ID vault wanneer de gebruiker verbonden is met de server.
    Het is dus belangrijk dat de gebruiker eerst een keer verbinding heeft gemaakt alvorens er een poging wordt ondernomen om het wachtwoord te resetten omdat het ID bestand anders niet aanwezig is!
    Wanneer een ID in de Vault aanwezig is kan de beheerder via de Administrator Client naar de weergave Personen gaan, het slachtoffer selecteren, en rechts een keuze maken uit de nu beschikbare acties zoals Reset Password en Extract ID from Vault:
    ineco-lotus-notes-wachtwoord-reset-persoon
    De meest voorkomende actie zal zijn Reset Password, een simpele dialoog verschijnt:

    ineco-lotus-notes-wachtwoord-resetten
    Vul de velden in en het wachtwoord is gereset.

    Leuker kunnen we het niet maken, wel makkelijker was de leus van belastingdienst, die ook hier goed past.

  • LotusScript en Excel import van tekst bestand

    Om 12000 documenten te exporteren naar Excel was een LotusScript agent te lang bezig met het vullen van de cellen.
    Daarom is er gekozen om het bestand naar een comma gescheiden bestand weg te schrijven.
    De klant vond het echter lastig om dit weer te openen in Excel, vandaar dat er een stukje code moest komen om dit te automatiseren.
    Een stukje van de code:

    Sub Initialize

    Dim OfficeApplication As Variant
    Dim workbook As Variant
    Dim xlsheet As Variant
    Dim ar() As Integer
    Const xlNone = -4142
    Const xlAutomatic = -4105
    Const xlUnderlineStyleNone = -4142
    Const xlThemeFontNone = -4142
    Const xlInsertDeleteCells = 1
    Const xlDelimited = 1
    Const xlTextQualifierDoubleQuote = 1
    Const xlTextFormat = 2

    ….. declareer dingen …

    fList(“Form”) = “Form”
    …. etc…

    Set ws = New NotesUIWorkspace
    filenames = ws.SaveFileDialog(False,”File name”,, “c:\”, “export” & Format(Today,”ddmmyyyy”) & “.txt”)
    If (Isempty(filenames)) Then
    Exit Sub
    End If

    Set curDB = Session.CurrentDatabase
    Set View = curDB.GetView(“myView”)
    View.AutoUpdate = False

    fileNum% = Freefile()
    Open filenames(0) For Output As fileNum%

    Forall i In fList
    mString$ = mString$ & “,” & i
    End Forall
    Print #fileNum%, Strright(mString$,”,”)

    Set Doc = View.GetFirstDocument
    Do Until Doc Is Nothing
    mString$ = “”

    Forall i In fList
    If Doc.HasItem(Listtag(i)) Then
    Set item = Doc.GetFirstItem(Listtag(i))
    Select Case item.Type
    Case 768
    mString$ = mString$ & “,” & Replace(Doc.GetFirstItem(Listtag(i)).Text,”,”,”.”)
    Case 1024
    mString$ = mString$ & “,” & Replace(Format(item.Values(0),”dd-mm-yyyy”),”-“,”/”)
    Case Else
    mString$ = mString$ & “,” & Replace(Doc.GetFirstItem(Listtag(i)).Text,”,”,”;”)
    End Select
    Else
    mString$ = mString$ & “,”
    End If
    End Forall
    Print #fileNum%, Strright(mString$,”,”)

    Set Doc = View.GetNextDocument(Doc)

    Loop

    Close fileNum%

    con = “TEXT;” & filenames(0)
    If Not (setOfficeApplication(“Excel.application”)) Then Exit Sub ‘ start Excel met een functie

    rgbColor& = xlNone

    x = 0
    Forall i In fList
    Redim Preserve ar(x) As Integer
    ar(x) = xlTextFormat
    x = x + 1
    End Forall

    Set workbook = OfficeApplication.Workbooks.Add ()
    Set xlsheet = OfficeApplication.Workbooks(1).Worksheets(1)
    With xlsheet.QueryTables.Add(con,xlsheet.Range(“A1″) )
    .Name = Strright( filenames(0),”\”)
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 1252
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = ar
    .TextFileTrailingMinusNumbers = True
    .Refresh
    End With

    ExcelClose:

    On Error Resume Next
    OfficeApplication.Cells.EntireColumn.Autofit
    OfficeApplication.Rows(“1:1″).Select
    OfficeApplication.Selection.AutoFilter
    OfficeApplication.Visible = True

    Exit Sub
    ErrorHandler:
    Msgbox Lsi_info(2) & ” ” & Error & ” (” & Err & “) on line ” & Erl
    Resume ExcelClose

    End Sub

  • PDFCreator aansturen met LotusScript

    PDFCreator aansturen met LotusScript

    Voor een klant moest er een export gemaakt worden van alle Notes documenten in een database.
    Dit moest gebeuren door deze als PDF af te drukken.
    Als PDF printer heb ik gekozen voor de open source applicatie PDFCreator, dat makkelijk aan te sturen is en erg nette afdrukken maakt.
    Omdat er geen tijd was om te onderzoeken of dit op de achtergrond kon gebeuren heb ik gekozen om een eenvoudig script te maken dat via de Notes cliënt door een weergave loopt, elk document opent, de bestandsnaam aan PDFCreator doorgeeft via COM, afdrukt naar de default (PDF) printer, en het document sluit.

    Code

    Sub Initialize
    On Error GoTo ErrorHandler
    '....... Declare And Set items.....
    
    sPDFPath$ = "C:\"
    If Dir(sPDFPath$,16) = "" Then
    MsgBox sPDFPath$ & " kan niet worden geopend",16,"Export"
    End If
    
    Set PDFCreator = CreateObject("PDFCreator.clsPDFCreator")
    If Not PDFCreator.cStart("",True) Then
    MsgBox "PDF printer kan niet worden gestart",16,"Export"
    GoTo TheEnd
    End If
    
    Set Doc = View.GetFirstDocument
    Do Until Doc Is Nothing
    
    sPDFName$ = doc.NoteID & ".pdf"
    FileName$ = sPDFPath$ & sPDFName$
    If Not Dir(FileName$) = "" Then
    Kill FileName$
    End If
    
    With PDFCreator
    .cOption("UseAutosave") = 1
    .cOption("UseAutosaveDirectory") = 1
    .cOption("AutosaveDirectory") = sPDFPath$
    .cOption("AutosaveFilename") = sPDFName$
    .cOption("AutosaveFormat") = 0
    .cClearCache
    End With
    
    Set uiDoc = ws.EditDocument(False,Doc,True,"",True,True)
    Call uiDoc.Print(1)
    Call uiDoc.Close(True)
    Set uiDoc = Nothing
    
    If Not isFileCreated(FileName$) Then
    'Foutafhandeling
    End If
    Set Doc = View.GetNextDocument(Doc)
    Loop
    
    TheEnd:
    On Error Resume Next
    PDFCreator.cClose
    Set PDFCreator = Nothing
    Exit Sub
    
    ErrorHandler:
    MsgBox GetThreadInfo(1) & " " & Error & " (" & Err & ") op regel " & Erl & "."
    Resume TheEnd
    End Sub
    
    Function isFileCreated ( filePath As String ) As Boolean
    On Error GoTo errorHandler
    Dim counter As Integer
    Dim fSize As Long
    
    isFileCreated = False
    Do While Dir$(filePath$, 0) = ""
    If counter > 30 Then
    Exit Function
    End If
    Sleep 1
    counter = counter + 1
    Loop
    
    fSize = FileLen(filePath$)
    Counter = 0
    Do While (FileLen(filePath$) = 0 Or FileLen(filePath$) > fSize)
    fSize = FileLen(filePath$)
    If counter > 30 Then
    Exit Function
    End If
    Sleep 1
    counter = counter + 1
    Loop
    
    isFileCreated = True
    
    Exit Function
    ErrorHandler:
    MsgBox GetThreadInfo(1) & " " & Error & " (" & Err & ") op regel " & Erl & "."
    Exit Function
    Resume Next
    End Function
  • Aantal dagen in een bepaalde periode met LotusScript

    Voor een applicatie moest herhaaldelijk uitgerekend worden hoeveel dagen er in een bepaalde periode zitten.
    De volgende functie voldeed hier goed:

    Input: getDaysBetween(“31-12-2007″,”01-01-2007”, “1,7” ,”25/12/07 – 26/12/07,05-12-2007″,Doc)  

    Output: 258

    Function getDaysBetween(strStart As String, strEnd As String,daysToExclude As String , datesToExclude As String ,Doc As NotesDocument) As Long
    On Error GoTo ErrorHandler
    Dim Formula As Variant
    Dim dLow As String
    Dim dHigh As String

    If strStart = “” Or strEnd = “” Then GoTo ErrorHandler

    strStart = {@TextToTime(“} & strStart & {“)}
    strEnd= {@TextToTime(“} & strEnd & {“)}

    If daysToExclude = “” Then
    dLow = {;0}
    Else
    dLow = {;@TextToNumber(@Explode(“} & daysToExclude & {“;”,”))}
    End If

    If Not datesToExclude = “” Then
    dLow = dLow & {;@TextToTime(@Explode(@TextToTime(@Explode(“} & datesToExclude & {“;”,”))))}
    End If

    dHigh$ = {@BusinessDays(} & strStart$ & {;} & strEnd$ & dLow & {)}
    dLow$ = {-@BusinessDays(} & strEnd$ & {;} & strStart$ & dLow & {)}

    Formula = Evaluate({@If(} & strStart & {>} & strEnd & {;} & dLow$ & {;} & dHigh$ & {)} ,Doc)

    getDaysBetween = CLng(Formula(0))

    Exit Function
    ErrorHandler:
    MsgBox GetThreadInfo(1) & ” ” & Error & ” (” & Err & “) op regel ” & Erl & “.”
    getDaysBetween = 0
    Exit Function
    Resume Next
    End Function

  • Kleurfuncties zoals RGB en Webkleuren

    Soms is het nodig om kleuren te vertalen naar andere formaten.
    Excel wil bijvoorbeeld graag een RGB kleur als type Long zien, in style sheets e.d. gebruik je de Webkleuren in Hex formaat e.d.
    Meestal gebruik ik het kleurenpallet van Notes om een kleur te bepalen, en gebruik de RGB waarden om verder te werken.

    Een aantal LotusScript functies die ik dan gebruik zijn de volgende:

    Van RGB waarden naar Long (gelijk aan VBA functie, bijv. voor export naar Excel) :

    Function RGB(Byval lRed As Long, Byval lGreen As Long, Byval lBlue As Long) As Long
    ‘input 255,255,255
    Dim tmpLong As Long
    tmpLong = lRed
    tmpLong = tmpLong + (lGreen*256)
    tmpLong = tmpLong + (lBlue*Clng(65536))
    RGB = tmpLong
    ‘Output 16777215
    End Function

    Van HEX naar RGB String (met kleine aanapssing voor bijv. weergavekolommen e.d.) :

    Function HEX2RGB(Byval HexColor As String) As String
    ‘Input #FFFFFF
    HexColor = Replace(HexColor, “#”, “”)
    HEX2RGB = Val(“&H” & Mid(HexColor, 1, 2))  & “,” & Val(“&H” & Mid(HexColor, 3, 2)) & “,” & Val(“&H” & Mid(HexColor, 5, 2))
    ‘Output 255,255,255
    End Function

    Van RGB waarden naar Hex (voor Web, css e.d.):

    Function RGB2HEX(Byval lRed As Long, Byval lGreen As Long, Byval lBlue As Long) As String
    ‘ input 255,255,255
    RGB2HEX = Right(Cstr(Hex(lBlue + 256*(lGreen+256*lRed))),6)
    ‘ Output FFFFFF
    End Function

    RGB kleur naar Notes kleuren (Richtext item e.d.):

    Function RGB2NOTES(Byval lRed As Long, Byval lGreen As Long, Byval lBlue As Long) As Integer
    Dim session As New NotesSession
    Dim color As NotesColorObject
    Set color = session.CreateColorObject
    RGB2NOTES = color.SetRGB(lRed,lGreen,lBlue)
    End Function

  • Aantal dagen in een maand

    Aantal dagen in een maand

    In een applicatie was het nodig om van een willekeurige maand het aantal dagen te kunnen tonen.
    Met de formule @BusinessDays( startDates ; endDates ; daysToExclude ; datesToExclude ) is dat goed mogelijk.
    Voor startDates kan simpelweg de eerste van de maand worden genomen, voor endDates zou je kunnen werken met @Adjust(@Adjust(startDates;0;1;0;0;0;0);0;0;-1;0;0;0) waarmee je dus eerst een maand optelt bij de startdatum en daarna een dag terug gaat.

    Voor LotusScript zou je de formule kunnen evalueren met de Evaluate functie.