giovedì 6 dicembre 2018

IBM Connections, come automatizzare la rimozione delle foto dagli utenti disabilitati

Uno dei miei clienti mi ha chiesto se fosse possibile rimuovere le foto dai profili degli utenti disabilitati da un certo numero di mesi in IBM Connections .

Questa non è una funzionalità disponibile nel prodotto con strumenti preconfezionati  ma fortunatamente Connections mette a disposizione tutte le informazioni per poterci riuscire.


Analizzate le varie possibilità , per semplicità  ho deciso di procedere con 2 script separati, uno sul server database ed uno su connections, dove il primo si occupa di estrarre gli utenti e di preparare in output uno script che viene eseguito su Connectons che rimuove le foto.

Come detto questa è una delle possibili soluzioni a questa richiesta e può essere risolta in modi alternativi.


Script Database server (nel mio caso Db2)

Le informazioni sono tutte disponibili nel db dei profili il PEOPLEDB

La parte fondamentale dello script da eseguire è questa select


select EMPINST.EMPLOYEE.PROF_GUID FROM EMPINST.EMPLOYEE
INNER JOIN EMPINST.PHOTO ON EMPINST.PHOTO.PROF_KEY = EMPINST.EMPLOYEE.PROF_KEY INNER JOIN EMPINST.PROFILE_LAST_LOGIN ON EMPINST.PROFILE_LAST_LOGIN.PROF_KEY = EMPINST.EMPLOYEE.PROF_KEY
WHERE EMPINST.EMPLOYEE.PROF_STATE='1' and timestampdiff (64, CURRENT TIMESTAMP -EMPINST.PROFILE_LAST_LOGIN.PROF_LAST_LOGIN) > X"

 dove X è il numero di mesi in cui l'utente disabilitato che ha una foto non si collega al suo profilo di connections.

se aggiungete dopo la query un | con awk simile al seguente 

 awk "{print \"ProfilesService.deletePhotoByUserId('\"\$1\"')\" }" >> clearphotos.py

ecco che ottenete un elenco di UID pronto per essere dato in pasto ad un wsadmin


con un utente per riga
...
ProfilesService.deletePhotoByUserId('11111111-222A-AA22-1122-11B222B11B22')
...

In testa a questo script se aggiungete 2 echo  il file è pronto per essere eseguito

echo "batchMode = 1" > clearphotos.py
echo "execfile('profilesAdmin.py')" >> clearphotos.py

batchMode =1 è necessario se avete un connections con più nodi, qui i dettagli,
Per completezza ho condiviso lo script , in questo repo di GitHub.

Script su DMGR di Connections

Qui non c'è nulla di particolare , quindi lo lascio alla vostra interpretazione, i passi da fare sono 3

  1. copia clearphotos,py in locale
  2. esecuzione dello script tramite wsadmin ( wsadmin.sh -lang jython -user connAdmin -password password -f clearphotos.py )
  3. log delle operazioni eseguite



In conclusione ho schedulato 2 crontab per eseguire i 2 script , partendo ovviamente dallo script per eseguire estrazione dati db,

Nessun commento:

Posta un commento