Mandantendatenbanken
Aus Melin DokuWiki
Die Melin Mehr-Mandanten-Datenbank ist dafür ausgelegt die Abonnenten aller Mandanten in einer Datenbank zu verwalten. Die Oberfläche stellt dabei sicher daß jeder Mandant nur Zugriff auf seine Abonnentendaten und Verteilerlisten hat. Die einzige Ausnahme ist der Superuser-Mandant der über alle Daten suchen kann.
Die Sicherung aller Daten in einer Datenbank ist die Standardeinstellung in Melin und bietet viele Vorteile:
- Änderungen an einer E-Mail-Adresse (z.B. Entfernen aller Abos, Aktualisieren der Anschrift, Sperren für alle Aussendungen) sind zentral möglich.
- Statistiken für eine Adresse können Systemübergreifend erfasst werden.
- Alle Aussendungen an eine E-Mail-Adresse, egal von welchem Geschäftsbereich, sind in einer Liste enthalten
- Es muss nur eine Datenbank im Rahmen der Datensicherung überwacht werden.
- Neue Mandanten können einfach hinzugefügt werden ohne daß jedesmal eine neue Datenbank angelegt werden muss.
- Einfacher Abgleich mit CRM-Systemen, da jeder Abonnent in Melin eindeutig ist.
- "Liste aller aktiven Abonnements" auf der Website einfach möglich ("Self Maintenance Bereich" in der jeder Abonnent seine Abos verwalten kann).
- Nur ein Double-Opt-In notwendig.
Die MMDB wird in dieser Betriebart in Installationen mit über 800 Mandanten eingesetzt so daß in der Regel keine Grenzen zu erwarten sind. Es gibt nur zwei Gründe hiervon abzuweichen:
- ASP-Betrieb einer Melin-Installation für unterschiedliche Kunden - hier will man im Normalfall nicht daß eine Emailadresse auf einmal mit Informationen eines anderen Kunden angereichert wird, zum Beispiel weil sich jemand zuerst bei Kunde A registriert mit seiner Emailadresse, bei B dann mit Name, bei einer Datenbank hätte auch Kunde A auf einmal den Namen zur Verfügung.
- Innerbetriebliche Anforderungen.
In den allermeisten Fällen gibt es gute Gründe alle Abonnenten eines Unternehmens eindeutig und in einer Datenbank zu speichern. In manchen Ländern z.B. gehört es zum Email Marketing den Abonnenten alle aktiven Abonnements die jemand bei einem Unternehmen hat in einer Liste darzustellen. Wenn die Datensätze komplett getrennt in verschiedenen Datenbanken liegen geht das nicht eindeutig.
Die Aufteilung von Datenbanken ist nur Mandantenweise möglich und daher nur in der Enterprise-Version verfügbar.
Inhaltsverzeichnis |
[bearbeiten] Einstellen der Datenbanken pro Mandant
Der Superuser kann im Menü Master-Datenbank unter MENÜ_Einstellungen für jeden Mandant einstellen, ob dieser die zentrale Systemdatenbank nutzen soll oder eine getrennte Datenbank.
Für jeden Mandant muss eine separate Datenbank angelegt werden bevor der Mandant mit dem System arbeiten kann.
Mit dieser Einstellung arbeiten bereits alle Funktionen auf der Oberfläche je nach Mandant mit der richtigen Datenbank. Am einfachsten lässt sich die Funktionsweise kontrollieren indem man als Mandant die Empfängerlisten aufruft und eine neue Empfängerliste anlegt. Bei einer Datenbank werden jeweils neue NEWSLETTER_ID's vorgeschlagen und vergeben damit die Listen eindeutig sind. Bei mehreren Datenbank kann jeder Mandant mit der NEWSLETTER_ID Nummer 1 starten.
Die Plugins im Workflow erkennen anhand des Hashfelds M_CLIENT_ID von welchem Mandant das Mailing ist.Das Feld M_CLIENT_ID wird automatisch gesetzt beim Veröffentlichen/Genehmigen. Zur Sicherheit kann man ein Testmailing verschicken und im Demon-Log nachsehen ob der Console Debugger dieses Feld richtig darstellt.
2008-12-31 12:02:21 DEBUG [M3 Universal Mailin] [35 ConsoleDebug] - Console Debugger: Console Debugger +------------------------------------------------------------------------------- | 2008-12-31 12:02:21 | | HASH: 53 Elements | CODE: 0 Elements | LIST: 0 Elements +------------------------------------------------------------------------------- EXPORT_HTML2XML : 1 FROM : webletter@melin.com IMAGE_BILD_HEADER : [CROP] /melin/images/cms/themes/rexroth/world. ISSUE : Ausgabe X | 30 12 2008 MAILING_ID : 1230630342372 M_CHARSET : UTF-8 M_CONTENTTYPE : text/html; charset=UTF-8 M_ID : 42969 M_IS_MULTIPART : 1 M_LINK_TRACK : [CROP] http://rexroth.melin2.de/p.php?ML=%M_MA M_MAILING_ID : 1230630342372 M_CLIENT_ID : 1 M_RECEIVER : seb@melin.de M_SENDER : Rexroth Webletter M_TEMPLATE : [CROP] SITE-DIR/templates/standalone_multipart M_UNIQUE_ID : [CROP] 1230721341_GM3UniversalMailing_F80_T123
Das Feld M_CLIENT_ID muss sowohl für Vorschauen als auch für Live-Versande gesetzt sein. Wenn es nicht gelistet wird muß in den Eingabetemplates mit
<INPUT TYPE=HIDDEN NAME="MELIN:M_CLIENT_ID" VALUE="%USER:CLIENTID%">
[bearbeiten] Vorbereitung Klick- und Öffnungsratentracking
Klicks und Öffnungen müssen auch jeweils in die richtige Datenbank geschrieben werden. Der einfachste Weg ist, pro Mandant ein Klicktracking-Script (z.B: j.jsp oder p.php abzulegen. In den ersten Zeilen des Scripts konfiguriert man die Datenbank die zum Script gehört.
Wenn man sich für getrennte Datenbanken entscheidet hat man es meist auch mit getrennten Homepages zu tun, dann kann man auf jedem Homepage-Server eine richtig konfiguerierte Kopie ablegen die immer gleich heisst.
In den Templates muss man dann natürlich auf die richtigen Scripte verlinken, am einfachsten gibt man den Namen der Server an:
Template Mandant 1:
#IF (("" EQ "EDIT") OR ("" EQ "NEW"))
<INPUT NAME="MELIN:M_LINK_TRACK" VALUE="http://rexroth.melin2.de/p.php?ML=_M_PERCENT_M_MAILING_ID_M_PERCENT_&T=" TYPE="HIDDEN">
#ENDIF
#IF ("" EQ "SAVE")
<img src="http://rexroth.melin2.de/p.php?ML=&OC=$UD[SYSTEM_CUSTOMER_ID]&NL=%NEWSLETTER_ID%">
#ENDIF
Template Mandant 2:
#IF (("" EQ "EDIT") OR ("" EQ "NEW"))
<INPUT NAME="MELIN:M_LINK_TRACK" VALUE="http://continental.melin2.de/p.php?ML=_M_PERCENT_M_MAILING_ID_M_PERCENT_&T=" TYPE="HIDDEN">
#ENDIF
#IF ("" EQ "SAVE")
<img src="http://continental.melin2.de/p.php?ML=&OC=$UD[SYSTEM_CUSTOMER_ID]&NL=%NEWSLETTER_ID%">
#ENDIF
[bearbeiten] Bounce-Mail-Management
Auch die Bounce-Mails werden mandantenabhängig abgelegt. Jeder Mandant braucht daher sein eigenes Bounce-Postfach. Beim Versand der Mailings ist darauf zu achten daß jeder Mandant auch nur mit "seiner" Absenderadresse mailt damit die Bounce-Mails richtig ankommen.
[bearbeiten] Plugins mit Mandantendatenbanken-Unterstützung
Wenn man eine ältere Melin-Version auf mehrere MMDB-Datenbanken umstellt sollte man die folgenden Plugins im Workflow prüfen ob die Funktionalität enthalten ist:
- MMDB Addsubscriber - Abonnent in interne SQL-Datenbank hinzufügen
- MMDB BounceSorter - Verschieben und Kategorisieren von Bounce Mails
- MMDB Deletesubscriber - Abonnent aus interner SQL-Datenbank löschen
- MMDB Emailsender - Personalisierter Mailversand an Abonnenten der internen SQL-Datenbank
- MMDB Exists - Prüfen ob Abonnent in interner SQL-Datenbank existiert
- MMDB Getbytargets - Abonnentenliste aus Zielgruppenfilter-Definition holen
- MMDB GetEmails - Empfängerliste nach Newsletter-Verteiler holen
- MMDB GetNLprofile - Basisdaten zu einer Verteilerliste holen (Absendername, ID, ...)
- MMDB Getprofile - Profil-Details zu Abonnent aus interner SQL-Datenbank holen
- MMDB Modifysubscriber - Profil-Details eines Abonnenten in interner SQL-Datenbank aktualisieren
Zur Kontrolle kann man im Quellcode nachsehen. In jedem Plugin ist die Zeile
String databaseFile = MelinDemon.siteDir + "/config/centraldb.xml";
enthalten. Diese muss gefolgt werden von einer Abfrage ob eine Alternativdatei für den Mandant existiert.
// get clientID and the database file
String databaseFile = MelinDemon.siteDir + "/config/centraldb.xml";
if (dataHash.containsKey("M_CLIENT_ID"))
{
String targetfile = MelinDemon.siteDir + "/classify/" + dataHash.get("M_CLIENT_ID") + "/centraldb.xml";
File tf = new File(targetfile);
if (tf.exists()) {
databaseFile = targetfile;
}
}
Wenn dieser Block nicht enthalten ist reicht es diesen Code im Plugin einzufügen um das Plugin zur Mandantendatenbanken-Funktion kompatibel zu machen.Anschließend muss das Plugin mit
./plugster.sh [PLUGIN_NAME]
neu compiliert werden (plugster.sh befindet sich im Ordner msite/demon)
