Mandantendatenbanken

Aus Melin DokuWiki

Wechseln zu: Navigation, Suche

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.

Master-Datenbank erzeugen für einen Mandant
Master-Datenbank erzeugen für einen Mandant


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:

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)