Newsletter Benachrichtigungsintervalle für jeden Benutzer einsehen und setzen in HCL Connections 6.5

Newsletter Benachrichtigungsintervalle für jeden Benutzer einsehen und setzen in HCL Connections 6.5

Die standardmäßig gesetzten Benachrichtigungseinstellungen (Profil > Einstellungen) von HCL Connections 6.5 sind nicht für jeden Anwendungsfall optimal. So erhält man beispielsweise von Wikis nur wöchentliche Newsletter. Vor allem wenn diese Anwendung stark genutzt wird, macht es mehr Sinn, diesen Intervall auf täglich zu setzen.

Folgender Artikel soll aufzeigen, welche offiziellen Möglichkeiten es zur Anpassung gibt. Darüber hinaus wird vorgestellt, wie man die Newsletter-Einstellungen jedes Benutzers anzeigen und verändern kann. Als Datenbanksystem wird DB2 genutzt. Mit entsprechenden Anpassungen an den jeweiligen Dialekt lassen sich die Informationen ggf. auch für andere Systeme verwenden.

Newsletter Standard-Intervalle verändern (offizieller Weg)

Die E-Mail Benachrichtigungen werden in der folgenden Datei konfiguriert:

/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/config/cells/CnxCell/LotusConnections-config/notification-config.xml

Dmgr01 und CnxCell sind ggf. entsprechend dem Namen des Deployment-Managers bzw. der Zelle zu ersetzen.

In der notification-config.xml können wir für alle Anwendungen/Aktionen, die auf der Einstellungsseite unter https://cnx.host/news/ eingestellt werden können, die Standardwerte verändern. Im oberen <categories> Bereich befinden sich die anwendungsunabhängigen Elemente, wie beispielsweise Erwähnungen (@Mentions)

<category name="mentions" defaultFollowFrequency="INDIVIDUAL" frequencyLocked="false"/>

Hier steht defaultFollowFrequency auf INDIVIDUAL – Der Nutzer bekommt also bei jeder Erwähung eine einzelne E-Mail, was in meinen Augen Sinn macht. Man kann hier auch auch z.B. DAILY eintragen. Dann werden sämtliche Erwähungen gebündelt in einem Täglichen Newsletter versendet.

Im unteren <templates> Bereich befinden sich die einzelnen Anwendungen (Blogs, Foren etc). Im Beispiel möchten wir den Standardintervall von Wikis auf Täglich setzen. Hierfür suchen wir das Element der Anwendung:

<source name="wikis" enabled="true" defaultFollowFrequency="WEEKLY" frequencyLocked="false">

und setzen hier defaultFollowFrequency auf DAILY:

<source name="wikis" enabled="true" defaultFollowFrequency="DAILY" frequencyLocked="false">

Um die Änderungen zu übernehmen, per ISC oder wsadmin eine vollständige Neusynchronisation durchführen:

Anschließend die Anwendung News neu starten (Stop/Start nacheinander drücken)

Damit die Änderungen wirksam werden, muss man allerdings in den Benachrichtigungen zunächst den Standard wiederherstellen. Anschließend springt der Auswahlknopf bei Wikis von Wöchentlicher Newsletter zu Täglicher Newsletter.

Darüber hinaus gelten die neuen Standardeinstellungen für alle Benutzer, die nach dieser Änderung angelegt wurden.

Welche Benachrichtigungseinstellungen sind bei einem Benutzer gesetzt?

Leider bietet Connections keine Möglichkeit einzusehen, welche Benachrichtigungseinstellungen bei einem bestimmten Benutzer aktiv sind. Auch über IC360 ist dies nicht möglich. Meiner Erfahrung nach ist dies jedoch an verschiedenen Stellen sinnvoll. Beispielsweise wenn sich Nutzer beim Support melden, weil sie zu wenige oder keine E-Mails erhalten. Sofern der Nutzer nicht für eine Remote-Sitzung erreichbar ist, kann man in der Datenbank prüfen, was tatsächlich in Connections gesetzt wurde.

Die für jeden Nutzer gesetzten Benachrichtigungsintervalle sind in der Homepage-Datenbank, Tabelle EMD_RESOURCE_PREF gespeichert.

SELECT RESOURCE_PREF_ID, PERSON_ID, RESOURCE_TYPE, 
(
	CASE 
		WHEN RESOURCE_TYPE = 1 THEN 'responses'
		WHEN RESOURCE_TYPE = 2 THEN 'profiles'
		WHEN RESOURCE_TYPE = 3 THEN 'communities'
		WHEN RESOURCE_TYPE = 4 THEN 'activities'
		WHEN RESOURCE_TYPE = 5 THEN 'blogs'
		WHEN RESOURCE_TYPE = 6 THEN 'bookmarks' 
		WHEN RESOURCE_TYPE = 7 THEN 'files'
		WHEN RESOURCE_TYPE = 8 THEN 'forums'
		WHEN RESOURCE_TYPE = 9 THEN 'wikis'
		WHEN RESOURCE_TYPE = 10 THEN 'tags'
		WHEN RESOURCE_TYPE = 22 THEN 'mention'
	END
) AS APP_NAME,
(
	CASE 
		WHEN FREQUENCY_TYPE = 1 THEN 'never'
		WHEN FREQUENCY_TYPE = 2 THEN 'immediately'
		WHEN FREQUENCY_TYPE = 3 THEN 'daily'
		WHEN FREQUENCY_TYPE = 4 THEN 'weekly'
	END
) AS NOTIFICATION_INTERVAL,
FREQUENCY_TYPE AS RAW_INTERVAL
FROM HOMEPAGE.EMD_RESOURCE_PREF
WHERE PERSON_ID = (
	SELECT PERSON_ID 
	FROM HOMEPAGE.PERSON p 
	WHERE p.EXID = 'daniel'
)
ORDER BY APP_NAME

Die PERSON_ID wird am einfachsten über die PERSON Tabelle ermittelt. Der Anmeldename EXID dürfte für die Zuordnung geeignet sein. Wahlweise kann man aber auch andere Attribute nutzen:

  • DISPLAYNAME
  • USER_MAIL

DISPLAYNAME und USER_MAIL existieren jeweils mit einem _LOWER Suffix. Dies würde ich bevorzugt nutzen, da manche Benutzer z.B. Ihren Namen in der E-Mail Adresse groß schreiben und daher ggf. nicht gefunden werden.

Als Ergebnis erhalten wir eine Liste aller Anwendungen mit einem lesbaren Benachrichtigungsinterval:

Verändern der Benachrichtigungseinstellungen per SQL-Abfrage

Diese Funktionalität lässt sich mit den Boardmitteln von Connections leider nicht abdecken, weswegen die folgenden Modifikationen nicht offiziell unterstützt werden. Allerdings ist diese Funktionalität doch ziemlich nützlich. Aus dem Alltag heraus habe ich die Erfahrung gemacht, dass nur die wenigsten aktiv ihre Benachrichtigungseinstellungen anpassen. Gerade in Kombination mit den teils ungünstigen Standardeinstellungen kommen Informationen zu spät oder ggf. sogar überhaupt nicht an.

Mit den obigen Informationen ist es nicht schwierig, eine entsprechende SQL-Anfrage zu erstellen:

AnwendungRESSOURCE_TYPE Wert
Aktivitäten4
Blogs5
Lesezeichen6
Communitys3
Dateien7
Foren8
Erwähnungen (@Mention)22
Profile2
Antworten (Responses)1
Tags10
Wikis9
Zuordnung von Connections-Anwendungen in der RESSOURCE_TYPE Spalte
IntervallFREQUENCY_TYPE
Nie1
Sofort (Einzelne Mails)2
Täglich3
Wöchentlich4
Zuordnung von Intervallen in der FREQUENCY_TYPE Spalte

Möchten wir also beispielsweise den Benachrichtigungsintervall für Wikis einen Benutzer auf sofort stellen, lässt sich dies mit folgender SQL-Abfrage

UPDATE HOMEPAGE.EMD_RESOURCE_PREF
SET FREQUENCY_TYPE = 2
WHERE RESOURCE_TYPE  = 9
AND PERSON_ID = (
	SELECT PERSON_ID 
	FROM HOMEPAGE.PERSON p 
	WHERE p.EXID = 'daniel'
)

Die Änderungen werden sofort ohne Caching und Neustarts wirksam. Sobald der betreffende Nutzer seine Einstellungsseite erneut aufruft, sieht er diese:

Da wir in diesem Beispiel den Intervall auf sofort gesetzt haben, erhält der Nutzer bei allen neuen Ereignissen eine E-Mail:

Hintergründe: Reverse Engineering von Connections und dessen Datenbank

Das Mapping aus obiger Abfrage erhalten wir beim Export und anschließenden Reverse Engineering der News-Anwendung. Am hilfreichsten war die Datei news.core.data.jar.src/spring/news/database/StaticDatabaseDao.xml. Sie liefert uns am Ende der Datei das Mapping der Intervalwerte:

<bean name="DATABASE:emdFrequencyTypeDao" class="com.ibm.lconn.news.data.dao.impl.ibatis.emd.EmdFrequencyTypeDao">
		<property name="emdFrequencyTypeList">
			<list>
				<bean class="com.ibm.lconn.news.data.model.emd.EmdFrequencyType">
					<property name="frequencyTypeId" value="never_____0fdf1xc9cax4cc4x8b0bx51af2"/>	
					<property name="frequencyType" value="1"/>	
					<property name="frequencyTypeName" value="%never"/>
					<property name="frequencyTypeDesc" value="never"/>	
				</bean>
				<!-- ... -->

Darüber befinden sich zwei Beans com.ibm.lconn.news.data.dao.impl.ibatis.ResourceTypeDao und com.ibm.lconn.news.data.dao.impl.ibatis.CategoryTypeDao. Auch wenn ersteres von der Bezeichnung her nach unserer Datenbankspalte RESOURCE_TYPE klingt, befindet sich das Mapping tatsächlich in CategoryTypeDao. Hier ist außerdem zu beachten, dass weitere Mappings vorhanden sind, die in unseren Benachrichtigungen nicht auftauchen. In meinen Tests habe ich diese in das Mapping eingebaut, konnte jedoch keine Übereinstimmungen feststellen. Im folgender Abfrage sind diese mit dem Kommentar /* non-checked */ gekennzeichnet:

SELECT RESOURCE_PREF_ID, PERSON_ID, RESOURCE_TYPE, 
(
	CASE 
		WHEN RESOURCE_TYPE = 1 THEN 'responses'
		WHEN RESOURCE_TYPE = 2 THEN 'profiles'
		WHEN RESOURCE_TYPE = 3 THEN 'communities'
		WHEN RESOURCE_TYPE = 4 THEN 'activities'
		WHEN RESOURCE_TYPE = 5 THEN 'blogs'
		WHEN RESOURCE_TYPE = 6 THEN 'bookmarks' 
		WHEN RESOURCE_TYPE = 7 THEN 'files'
		WHEN RESOURCE_TYPE = 8 THEN 'forums'
		WHEN RESOURCE_TYPE = 9 THEN 'wikis'
		WHEN RESOURCE_TYPE = 10 THEN 'tags'
		WHEN RESOURCE_TYPE = 11 THEN 'status_updates'  /* non-checked */
		WHEN RESOURCE_TYPE = 12 THEN 'external'  /* non-checked */
		WHEN RESOURCE_TYPE = 13 THEN 'saved_readers'  /* non-checked */
		WHEN RESOURCE_TYPE = 14 THEN 'actionable_directed_notification'  /* non-checked */
		WHEN RESOURCE_TYPE = 15 THEN 'actionable_todo'  /* non-checked */
		WHEN RESOURCE_TYPE = 16 THEN 'actionable_action_required'  /* non-checked */
		WHEN RESOURCE_TYPE = 17 THEN 'discovery'  /* non-checked */
		WHEN RESOURCE_TYPE = 18 THEN 'profiles-view'  /* non-checked */
		WHEN RESOURCE_TYPE = 19 THEN 'notification-sent'  /* non-checked */
		WHEN RESOURCE_TYPE = 20 THEN 'notification-received'  /* non-checked */
		WHEN RESOURCE_TYPE = 21 THEN 'topics'  /* non-checked */
		WHEN RESOURCE_TYPE = 22 THEN 'mention'
	END
) AS appName,
(
	CASE 
		WHEN FREQUENCY_TYPE = 1 THEN 'never'
		WHEN FREQUENCY_TYPE = 2 THEN 'immediately'
		WHEN FREQUENCY_TYPE = 3 THEN 'daily'
		WHEN FREQUENCY_TYPE = 4 THEN 'weekly'
	END
) AS mailInterval,
FREQUENCY_TYPE
FROM HOMEPAGE.EMD_RESOURCE_PREF
WHERE PERSON_ID = (
	SELECT PERSON_ID 
	FROM HOMEPAGE.PERSON p 
	WHERE p.EXID = 'daniel'
)
ORDER BY APP_NAME

Leave a Reply