HCL Notes naar Lime CRM

In de afgelopen jaren zijn wij vaak bezig geweest met het converteren van IBM / HCL Notes data naar andere systemen.
Voor mail is dat vaak naar Exchange, pst bestanden, of via imap protocollen wanneer het Linux mail systemen betreft.
Documenten, vaak in maatwerk Notes applicaties is anders. Veelal ging de conversie naar PDF in een mappenstructuur met metainformatie in XML of CSV, of via database verbindingen naar SQL e.d.

Een aantal weken terug vroeg een klant, die na vele jaren helaas over moet naar een ander systeem, of wij een conversie konden uitvoeren van een maatwerk Notes ERM pakket naar Lime CRM.
Wij werden in contact gebracht met de technische mensen van Lime, in dit geval in Finland, die meteen de API documentatie beschikbaar stelde en heel behulpzaam waren met het beantwoorden van vragen.
Hierop hebben wij een Notes applicatie gemaakt gemaakt die met een combinatie van PDF afdrukken van Notes documenten, bestand export voor de bijlagen, en conversie van Notes velden naar Json API aanroepen, de Notes applicatie kon migreren naar Lime CRM.

Als vervolg hierop is nog een andere Notes applicatie op soortgelijke manier overgezet naar Lime en gekoppeld aan de relaties in Lime.

Het is natuurlijk heel erg jammer om een trouwe klant weg te zien gaan van HCL Notes, maar het geeft ook voldoening om dit technisch mogelijk te maken en met een goed resultaat af te kunnen sluiten.

HCL Domino Volt

Voeg een low-code tool toe aan uw arsenaal op een veilig platform dat u vertrouwt. Iedereen in IT kan webgebaseerde formulieren voor het vastleggen van gegevens en workflows bouwen met gegevens van Excel, meerdere gegevensbronnen of helemaal opnieuw.

Domino Volt maakt het mogelijk om nieuwe apps 60-70% sneller te bouwen, en maakt het voor ontwikkelaars en zakelijke gebruikers gemakkelijk om snel krachtige, veilige en enterprise-grade workflow-applicaties te ontwikkelen zonder gespecialiseerde vaardigheden.

Lees meer…

Terugvallen op de C API

Tussen de kerstdagen eigenlijk vrij gehouden, maar een klant heeft een redelijke simpele wens om alle encrypted berichten in een paar honderd IBM Notes mailfiles te decrypten voor een conversie naar Office 365, zonder tussenkomst van de gebruiker.
Met LotusScript liep ik helaas tegen een aantal bugs/beperkingen aan. Dus maar een virtuele Windows machine ingericht met de oude vertrouwde C compiler en Notes C API toolkit kijken of er om heen te programmeren valt.

Vanzelfsprekend is dit na enige hindernissen wel gelukt.
Met het notes.id van de gebruiker (dit is wel een noodzakelijk ding) kan een de versleuteling van een bericht in de postbus van die gebruiker opgeheven worden.
In dit geval heb ik een script gemaakt dat het ID van de gebruiker uit de ID Vault haalt, en het wachtwoord reset. Vervolgens wordt met dit ID en wachtwoord de berichten in de postbus ontsleutelt zodat de export naar Office 365 zonder problemen kan verlopen.

 

 

De Workspace instellen als standaard homepage bij uitrollen Notes 9.0.1

Voor klanten die bij een uitrol van nieuwe IBM Notes 9.0.1 werkplekken standaard de Workspace willen tonen zal er een kleine aanpassing gemaakt moeten worden aan de Bookmark.ntf.
Om de Bookmark.ntf aan te passen voor alle gebruikers:

In Notes 9.0.1

1. Start de Domino Designer client.
2. Open het Bookmark.ntf database sjabloon.
3. Klap de Shared Elements categorie aan de linker kant uit, en daarna Outlines uitklappen

4. Scroll naar beneden in de Outlines lijst en klik op  “UserBookmarkOrderTemplate”. De outline zal in het rechter venster openen.
5. Selecteer Design > Outline Properties. Hernoem de outline naar “UserBookmarkOrder” (ofwel verwijder het “Template” deel uit de naam).

6. Selecteer File > Save in het Designer menu.
7. Klap de Applications outline open.
8. Selecteer  de Workspace regel.

9. Wees er zeker van dat de InfoBox veranderd van Outline properties naar Outline Entry properties (of, als je eerder de InfoBox sloot deze opnieuwe opent door Design > Outline Entry Properties te kiezen). Ga naar het tweede tabblad (“shade” icoontje).
10. Houd de SHIFT ingedrukt en klik op ‘Hide Outline Entry From’ property labeled ‘Notes 4.6 or Later’.

Opmerking: Het gelijktijdig ingedrukt houden van de Shift en het klikken op de ‘hide option’ zal van deze outline (Workspace) de standaard bookmark maken!

11. Laat de SHIFT toets los .
12. De-selecteer de ‘Hide from’ eigenschap ‘Notes 4.6 or Later’.
13. De beheerder kan nu het sjabloon uitrollen bij elke gebruiker (door het sjabloon klaar te zetten bij de eerste keer starten van Notes of door bij bestaande gebruikers een database replace design uit te voeren op Bookmarks.nsf voor bestaande gebruikers)

SSLException: Could not generate DH keypair

Bij een klant had ik een Domino agent gemaakt met behulp van Java om gegevens uit te wisselen tussen Domino en AccountView via https.

Om dit goed te laten werken was Domino voorzien van de laatste JVM patches.

Afgelopen week had de beheerder echter de server waarmee de agent verbinding maakte voorzien van een nieuw wildcard SSL certificaat met een hogere versleuteling.
Hierna gaf de Java agent op de Domino server de volgende fout: javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair.

Policy bestanden

Keypair (copyright INECO)

Na wat zoeken op internet vond ik een artikel op de site van IBM waarbij gemeld werd dat de standaard JVM in Notes en Domino een restrictie hebben.

Op de site van IBM kunnen tevens twee policy bestanden, local_policy.jar en US_export_policy.jar worden gedownload waar die restricties niet op zitten.

Helaas bleek deze oplossing niet te werken bij de klant.

 

Bouncy Castle

De aanwezige software engineer had hiervoor echter wel een oplossing die ook voor Domino bleek te werken:

Op de site https://www.bouncycastle.org/ hebben we het bestand bcprov-ext-jdk15on-153.jar gedownload. (De Bouncy Castle Crypto package is een Java-implementatie van cryptografische algoritmes)

Vervolgens heb ik dit bestand in de map c:\IBM\Domino\JVM\lib\ext geplaatst.

In de map c:\IBM\Domino\JVM\lib\security het bestand java.security  aangepast:
security.provider.1=com.ibm.jsse2.IBMJSSEProvider2 veranderd in security.provider.10=com.ibm.jsse2.IBMJSSEProvider2.

Vervolgens de regel security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider toegevoegd en het bestand opgeslagen.

Na het herstarten van de Domino server werkte de agent weer.

Fijn Harry (G), bedankt…

 

WTF?

…. is een dienst op de site myfonts.com die ik toch wel het vermelden waard vind.
Onlangs lieten wij een bedrijf in Heteren een logo ontwerpen.
Omdat wij graag het bijbehorende lettertype willen gebruiken voor een nog te ontwikkelen WordPress thema vroegen wij de naam van het lettertype.
In afwachting van het antwoord zochten wij op internet in diverse databases met vrij te gebruiken lettertypes.
Er was echter zoveel aanbod, en geen van de duizenden lettertypes leek op het ontwerp dat wij gekregen hadden.

Onbegonnen werk

Bijna onbegonnen werk, tot we deze pagina vonden: https://www.myfonts.com/WhatTheFont/

Je bied een afbeelding met de tekst aan, en de website zoekt in de database of er een bijbehorend lettertype gevonden kan worden.
In ons geval was er direct het juiste resultaat en kon het lettertype gratis gedownload worden!

Opties in $Index veld in weergave ontwerp

Niet zo spannend maar wellicht toch handig om te weten is dat het veld $Index in een weergave ontwerp, als je deze bekijkt via de Designer of door middel van script, de opties voor de index van de weergave bevat.

Elke optie heeft een eigen letter met een notatie als /O enz.

Vernieuwen van de index (Refresh):

Als er geen /M, /O, of / R in het veld $Index staat, dan is de instelling “Auto, after first use”. Dit is de standaard waarde.

/O wil zeggen dat de Index “Automatic” dus automatisch wordt bijgewerkt wanneer dat nodig is.

/M staat voor de keuze “Manual” dus handmatig indexeren.

/R=3600 Dit staat voor “Auto, at most every x hours”, automatisch maar niet meer dan 1 keer per x uren waarbij de uren in ms opgegeven worden. In dit geval dus 1 keer per uur.

Verwijderen van de index na (Discard):

Wanneer er geen /P of /T in het veld $Index staat betekend dit de index na 45 dagen van inactiviteit wordt verwijderd, “If inactive for 45 days”. Dit is de standaard instelling.

/T wil zeggen dat de index na elk gebruik weer verwijderd wordt, “After each use”.

/P=24 De /P= is de parameter om de index te verwijderen (purge) in uren. /P=24 is dus na een dag van inactiviteit, instelling “If inactive for x days”.

Alleen een ontwerper of beheerder mag de index aanmaken:

/B zal in het veld staan wanneer “Restrict initial index build to designer or manager” is aangevinkt.

Deze opties samen in het veld $Index van een view object maken de Index opties. Zo kan het veld $Index bijvoorbeeld de waarde “/T/O/B” hebben of “/P=168/R=43200/B” enzovoort.

Ja en?

Ik had deze gegevens nodig om te bepalen of een onderhoudstaak geschreven in Visual Basic bepaalde weergaven moest vernieuwen of niet.

Met de NotesNoteCollection Class kun je eenvoudig de weergaven in een database krijgen en de eigenschappen uitlezen.

Dim nc As NotesNoteCollection
Set nc = db.CreateNoteCollection(False)
nc.SelectViews = True
Call nc.BuildCollection

 

 

 

 

Automatisch nieuwe gebruikers aan de site toevoegen waarop ze inloggen.

Voor onze WordPress Multisite heb ik de volgende Plug-in geschreven om gebruikers die zich registeren automatisch toe te voegen aan de site waar de gebruiker kan inloggen.
Dit wordt veel gevraagd op internet en eerlijk gezegd begrijp ik niet goed waarom dat niet een standaard functie is.
Om het helemaal mooi te maken zou er nog een instellingen pagina bij gemaakt moeten worden, dat komt later nog wel.

if (!function_exists(‘ineco_join_site’)){
function ineco_join_site($user_id){
global $current_user,$blog_id,$wp_version;
wp_cookie_constants();
if(version_compare($wp_version,”3.7″,”<“)){
exit(‘This plug-in is not supported on pre-3.7 WordPress releases.’);
}

if(!is_multisite()){
exit(‘This plug-in only is only supported on WordPress Multisite.’);
}
$user = new WP_User( (int) $user_id );
//error_log(‘user = ‘ . $user_id);
//error_log(‘site = ‘ . $blog_id);

if( !is_user_member_of_blog($user_id,$blog_id) ) {
//error_log(‘is_user_member_of_blog = false’);
$role = get_option(‘default_role’);
if ($role == “”){
$role = get_site_option(‘default_user_role’,’subscriber’);
}
//error_log(‘default role = ‘ . $role);
add_user_to_blog($blog_id, $user_id, $role);
//error_log(‘add_user_to_blog(‘.$blog_id.’,’.$user_id.’,’.$role.’);’);
}
return false;
}
}

add_action ( ‘wpmu_activate_user’, ‘ineco_join_site’);

Gebruik van de mu-plugin directory in WordPress

Enige maanden geleden heb ik onze Domino site vervangen door een WordPress Multi User omgeving.
Er zijn best wat dingen die je in het gebruik wilt aanpassen in de code, en gelukkig is dat eenvoudig te doen.

Voor een aantal wensen kun je beter plug-ins maken of gebruiken zodat je niet bij elke update je wijzigingen opnieuw hoeft te doen.
Een van de aanpassingen die ik had gemaakt was het aanpassen van de berichten die verstuurd worden na registratie van nieuwe gebruikers in ms-functions.php.
Nu was ik dat weer vergeten aan te passen na een update vroeg mij af of dat niet eenvoudiger kon.
Het antwoord was snel gevonden op internet: je kunt voor veel dingen een eenvoudige plug-in maken die je plaatst in de mu-plugin map in WordPress.

Mu-plugin

Mu-plugin staat in dit geval voor Must Use plugin (en niet voor Multi User…), ofwel wat hier in staat moet altijd gebruikt worden.
Het plug-in bestand hoeft dan ook niet geactiveerd te worden o.i.d.
Die map was bij onze installatie niet aanwezig, maar na het aanmaken ervan en plaatsen van een php functie in die map werkte het direct.

NoteID

De NoteID van een document is een hexadecimale waarde van maximaal 8 tekens die een document uniek identificeert in een bepaalde database.

Een typische NoteID ziet er zo uit: 20FA.

Een NoteID vertegenwoordigt de locatie van een document in een specifiek databasebestand, dus documenten die replica’s van elkaar zijn, hebben over het algemeen verschillende NoteID’s.
Tenzij het document wordt verwijderd verandert een NoteID niet.

Speciale NoteID’s

Er zijn enkele speciale gereserveerde NoteID’s in Notes:

  • FFFF0002: “Over deze database” -document
  • FFFF0100: “Gebruik van deze database” -document
  • FFFF0004: Standaardformulier
  • FFFF0008: Standaardweergave
  • FFFF0010: Databasepictogram
  • FFFF0020: Database Design Collection (weergave)
  • FFFF0040: Database ACL
  • FFFF0800: Replicatieformule