Datenbank ist riesig! Aber wo liegen die Daten?

Datenbanken brauchen oftmals viel Speicherplatz (ohne Logs), ohne dass wissentlich viel Daten darin abgelegt wurden. Gerade eine CRM-Datenbank kann sehr schnell wachsen, wenn besp. viele Mails mit Anhängen getracked werden.

Wie finde ich aber nun heraus, wo der Speicherplatz “verloren” geht? Nach ein wenig googlen bin ich auf dieverse SQL-Queries gestossen. Doch es geht einfacher. Einfach per Rechtsklick auf der gewünschten Datenbank zu den Standardreports navigieren und bsp. den “Disk Usage by Top Tables” ausführen.

image

Via Header kann der Report sortiert werden und so sieht man sehr schnell welche Tabelle am meisten Speicherplatz braucht:

image


Active Directory-Benutzer mit Powershell erstellen

Gerade bei Test- oder Entwicklungs-Umgebungen kommt es immer wieder vor, dass mehrere Benutzer auf einmal im CRM erfasst werden müssen. Ergo müssen auch die Benutzer im Active Directory her. Bei ein zwei Benutzern mit dem Wizard kein Problem. Bei mehr Benutzern kann das Geklicke aber sehr schnell mühsam werden.

Lösung: Powershell! Mit Powershell ist es sehr einfach möglich die AD-Beutzer automatisiert zu erstellen.

  1. Die Benutzer in einer CSV-Datei erfassen:
    image
  2. Die PowerShell-Datei mit folgendem Inhalt erstellen:
    Param(
          [string]$filePath,
          [string]$initPassword
    )
    
    Import-Csv $filePath | New-ADUser -Path 'DC=PROCRM,DC=CH' -PassThru | Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString -AsPlainText '$initPassword' -Force) -PassThru | Enable-ADAccount

    Bemerkung: Der Parameter “Path” ist optional. Wird dieser wegglassen werden die Benutzer einfach im Root erstellt.

  3. CMD-Datei zum Aufruf der PS-Datei erstellen:
    Powershell.exe Set-ExecutionPolicy –ExecutionPolicy RemoteSigned –Scope CurrentUser Powershell.exe -File CreateAdUsers.ps1 -filePath crmusers.csv -initPasswort 'Passw0rd'
  4. Zum Erstellen der Benutzer nun einfach die eben erstellte CMD-Datei ausführen

Data encryption key verloren – Was nun?

CRM 2013 verwendet in SSL-Umgebungen für diverse sensitive Attribute “Microsoft SQL Server cell level encryption”: http://technet.microsoft.com/en-us/library/dn531199(v=crm.6).aspx

Data encryption nach Installation ändern und speichern!

Wichtig dabei zu wissen, ist, dass dieser Key automatisch bei der Installation generiert wird. (Standardmässig irgendwelche asiatischen Zeichen. Beim Erstellen des Mandanten wird man darauf hingewiesen.). Nach der Installation resp. Upgrade also unbedingt den Key ändern und an einem sicheren Ort aufbewahren!

image clip_image002

Key nicht bekannt

Doch was nun, wenn man den Key nicht mehr findet? Genau diesen Fall hatte ich neulich. Wir mussten eine bestehende CRM-Org-DB in ein neues Environment importieren. Soweit alles gut und keine Probleme. Als nächster Schritt wollten wird dann Server-Side-Sync-Mailing aktivieren. Da sagte uns das System, dass wir Data encryption enablen müssen (die Passwörter der Postfächer sind encrypted in der DB abgelegt) . Doch dazu ist der besagte Key notwendig! Da wir diesen nicht mehr hatten, mussten wir diesen nun neu setzen.

Key neu setzen

Wichtig: Der Key kann nur dann neu gesetzt werden, wenn in der DB keine encrypteden Daten vorhanden sind. Folgende Schritte müssen also durchgeführt werden, um den Key neu zu setzen:

  1. In order to be able to set a new encryption key, you will first need to delete existing data that has been encrypted. A SQL script has been suggested by our development team for this purpose.
  2. Prior to running the script that will delete all existing encrypted data, please take a backup of the Org database and the MSCRM_CONFIG database.
  3. The script to be executed against the Org DB is as follows:
  4. Update EmailServerProfileBase set IncomingPassword = null, OutgoingPassword = null;
    Update MailBoxBase set Password = null;
  5. After running the above script, go in to the Data Encryption form Settings > Data Management > Data Encryption and specify a new encryption key.
  6. Once a new encryption key is set, you can add back the data that was deleted.

Connector for Microsoft Dynamics – Installation

Microsoft bietet zur Integration von Dynamics-Produkten den “Connector for Microsoft Dynamics” an. So kann z.B. relativ einfach ein CRM-Mandant mit einem NAV- oder AX-System integriert werden.

Architecture: Connector for Microsoft Dynamics

Bereits vor ein paar Jahren bin ich mit dem Connector in Kontakt gekommen, er konnte mich aber zu diesem Zeitpunkt nicht wirklich überzeugen. Dies hat sich in der letzten Zeit jedoch stark geändert, da ich mich während mehreren Wochen sehr stark mit dem Connector (Integration CRM 2013 mit AX 2009) auseinander setzen durfte/musste.

In den nächsten Posts werde ich daher meine Erkenntnissse teilen und auf folgende Themen eingehen:

  • Installation Connector
  • Der Connector in der Übersicht
  • Standardmappings und Adapters verwenden
  • Eigener Adapter schreiben

Bevor ich nun auf die Installation eingehen will, eins vorne weg: Der Connector kann auch sehr gut für andere System-Integrationen als Dynamics verwendet werden. Und da wird es wirklich interessant!

Software-Anforderungen

Was Beschreibung
Installation-File Der Connector wird auf dem Customer-Source-Website von Microsoft heruntergeladen: https://mbs.microsoft.com/customersource/northamerica/AX/downloads/service-packs/mdax_dynamicsconnector#Downloads
image
Bemerkung: Der angegebene Link führt zu den Sourcen für eine Integration zw. CRM und AX. Der Connector kann aber auch bsp. für NAV heruntergeladen werden. Die Connector-SW bleibt aber immer die selbe.
Installations-Account Muss ein Domänen-User mit lokalen Admin-Rechten auf dem Server, auf welchem der Connector installiert wird sein.Sysadmin auf dem SQL Server, auf welchem die Connector-Datenbank erstellt wird.
Service-Account Zum Betrieb des Connectors wird ein Service-Account verwendet.
SQL-Server Microsoft SQL Server 2005 SP4, SQL Server 2008 SP2, SQL server 2008 R2, SQL Server 2012, or SQL Server 2014

Nun aber zur Installation, Step-by-Step:

1. Die Installation starten und 2x “Next” klicken:imageimage
2. SQL-Server angeben, auf welchem die Microsoft Dynamics Integration (MSDI) Datenbank angelegt werden soll und anschliessend mit “Next” einen Schritt weiter gehen.image
3. In diesem nächsten Schritt muss der Service-Account angegeben werden.
Folgende Berechtigungen werden durch die Installation dem Account zugewiesen:
- Assigns the service account to the public SQL server role.
- Creates a SQL server logon for the account if a logon does not exist.
- Assigns the service account to the db_datareader and db_datawriter database roles on the MSDI-DB
image
4. Mit “Install” kann nun die Installation gestartet werden.
image
image
image
5. Somit ist der erste Schritt getan und der Connector erfolgreich installiert. Die Integration kann beginnen. (folgt in einem nächsten Blog-Post)

Installation prüfen: Wer sicher gehen will, ob die Installation wirklich erfolgreich war, kann prüfen, ob die MSDI-DB erstellt worden ist

image

und der Connector-Service gestartet ist:

image


CRM Server Installation mit XML-Config-Datei

Viele vor allem grössere Unternehmen erlauben es nicht, dass das CRM während der Installation, selbständig Gruppen im Active Directory anlegen darf. Dies ist nur ein Grund, wieso man das CRM mit Hilfe des config-Files installieren sollte.

Dazu müssen die folgenden Schritte durchgeführt werden:

image

Das folgende Beispiel zeigt auf, was in den einzelnen Prozessschritten gemacht wird. (Das Beispiel kann gleichzeitig auch als Checkliste für die Installation dienen.)

Schritt Beschreibung
Vorbereitung durch IT Die folgenden Informationen müssen VOR der Installation bekannt sein: (Die Daten in der Spalte “Wert” sind Beispieldaten.)
Was Beschreibung Wert(e)
OU Die OU, in welcher die AD-Gruppen liegen werden.
(Die OU wird nicht benötigt, wennn vorgängig erstellte Gruppen verwendet werden)
OU=value,DC=sales,DC=domain,DC=com
AD-Gruppen Die Namen der folgenden AD-Gruppen (Security, Universal oder Domain Local) müssen bekannt sein:

- PrivUserGroup
- SQLAccessGroup
- ReportingGroup
- PrivReportingGroup

CN=PrivUserGroup,OU=CRM,DC=sales,DC=domain,DC=com
CN=SQLAccessGroup,OU=CRM,DC=sales,DC=domain,DC=com
CN=ReportingGroup,OU=CRM,DC=sales,DC=domain,DC=com
CN=PrivReportingGroup,OU= CRM,DC=sales,DC=domain,DC=com
Service Accounts Es müssen sechs Service Accounts für die folgenden Dienste zur Verfügung stehen:

- CrmServiceAccount
- SandboxServiceAccount
- DeploymentServiceAccount
- AsyncServiceAccount
- VSSWriterServiceAccount
- MonitoringServiceAccount

domain\sa-crm-crmservice
domain\sa-crm-sandbox
domain\sa-crm-deployment
domain\sa-crm-async
domain\sa-crm-vsswriter
domain\sa-crm-monitoring

Website-Pfad Website, welche vom CRM benutzt werden soll. /LM/W3SVC/1
Installations-Pfad Dort hin, wird das CRM installiert. c:\Program Files\Microsoft Dynamics CRM
Reporting Services URL   http://MyReportingServer/ReportServer
Datenbank Servername Servername in Form von SERVER\INSTANZ srv-sql.domain.com
Lizenz-Key Gültiger Lizenz-Key CQWW3-TNXBF-HRQWC-CVTW9-M968H
XML-Config-Datei Mit den obenstehenden Informationen kann nun die XML-Datei erstellt werden und sieht wie folgt aus:


<CRMSetup>			
	<Server>		
		<Patch update="false"></Patch>	
		<LicenseKey>CQWW3-TNXBF-HRQWC-CVTW9-M968H</LicenseKey>	
		<SqlServer>srv-sql.domain.com</SqlServer>	
		<Database create="true"/>	
		<Organization>Default</Organization>	
		<OrganizationUniqueName>Default</OrganizationUniqueName>	
		<muoptin optin="false" />	
			
		<Reporting URL="http://MyReportingServer/reportserver"/>	
		<OrganizationCollation>Latin1_General_CI_AI</OrganizationCollation>	
		<basecurrency isocurrencycode="CHF" currencyname="Schweizer Franken" currencysymbol="Fr." currencyprecision="2"/>	
			
		<WebsiteUrl Create="False" port="80">/LM/W3SVC/1</WebsiteUrl>	
		<SQM optin="false"/>	
		<InstallDir>c:\Program Files\Microsoft Dynamics CRM </InstallDir>	
			
		<CrmServiceAccount type="DomainUser">	
			<ServiceAccountLogin>domain\sa-crm-crmservice</ServiceAccountLogin>
			<ServiceAccountPassword></ServiceAccountPassword>
		</CrmServiceAccount> 	
			
		<SandboxServiceAccount type="DomainUser">	
			<ServiceAccountLogin>domain\sa-crm-sandbox</ServiceAccountLogin>
			<ServiceAccountPassword></ServiceAccountPassword>
		</SandboxServiceAccount> 	
			
		<DeploymentServiceAccount type="DomainUser">	
			<ServiceAccountLogin>domain\sa-crm-deployment</ServiceAccountLogin>
			<ServiceAccountPassword></ServiceAccountPassword>
		</DeploymentServiceAccount> 	
			
		<AsyncServiceAccount type="DomainUser">	
			<ServiceAccountLogin>domain\sa-crm-async</ServiceAccountLogin>
			<ServiceAccountPassword></ServiceAccountPassword>
		</AsyncServiceAccount>	
			
		<VSSWriterServiceAccount type="DomainUser">	
			<ServiceAccountLogin>domain\sa-crm-vsswriter</ServiceAccountLogin>
			<ServiceAccountPassword></ServiceAccountPassword>
		</VSSWriterServiceAccount> 	
			
		<MonitoringServiceAccount type="DomainUser">	
			<ServiceAccountLogin>domain\sa-crm-monitoring</ServiceAccountLogin>
			<ServiceAccountPassword></ServiceAccountPassword>
		</MonitoringServiceAccount>	
			
		<Groups autogroupmanagementoff="true">	
			<PrivUserGroup>CN=PrivUserGroup,OU=CRM,DC=sales,DC=domain,DC=com</PrivUserGroup>
			<SQLAccessGroup>CN=SQLAccessGroup,OU=CRM,DC=sales,DC=domain,DC=com</SQLAccessGroup>
			<ReportingGroup>CN=ReportingGroup,OU=CRM,DC=sales,DC=domain,DC=com</ReportingGroup>
			<PrivReportingGroup>CN=PrivReportingGroup,OU= CRM,DC=sales,DC=domain,DC=com</PrivReportingGroup>
		</Groups>	
			
	</Server>		
</CRMSetup>			
	


Tipp
: Damit die XML-Datei nicht bei jeder Installation immer wieder neu gemacht werden muss, kann die folgende Excel-Datei zur Generierung des XML verwendet werden: Download

Weitere Informationen und Beispiel-XML-Dateien können hier gefunden werden:
http://technet.microsoft.com/en-us/library/hh699830(v=crm.6).aspx

Installation Nachdem die XML-Datei erstellt worden ist, kann die Installation wie folgt gestartet werden: 

SetupServer.exe /config crminstall.xml

Weitere informationen zu der Installation mit Hilfe des Command-Prompts können hier gefunden werden:
http://technet.microsoft.com/en-us/library/hh699659(v=crm.6).aspx


Neues CRM, neue Server Rollen, neue Services

Wer schon einmal einen CRM 2013 Server installiert hat, dem ist sicher aufgefallen, dass zwei neue Server-Rollen dazugekommen sind:

image

Nebst diesen beiden neuen Rollen resp. Services ist der Service “Monitoring Service” dazu gekommen.

Folgende Tabelle gibt einen Überblick der neuen Server-Rollen und Services:

Server-Rolle Windows-Service Bechreibung
VSS Writer Service - Dieser Service stellt ein Interface für Backup und Wiederherstellung von CRM Daten mit Hilfe einer Server Volume Shadow Copy Service (VSS) Infrastruktur zur Verfügung.
Email Integration Service - Die Rolle ist zuständig für das Empfangen und Senden von E-Mails mit Hilfe eines E-Mail-Servers. Diese Rolle ist eine Teil des Server-Side Synchronisation Features, welches mit CRM 2013 neu eingeführt worden ist und in diversen Szenarien den E-Mailrouter ersetzt.
- Monitoring Service Dieser Service wird zusammen mit jeder CRM Rolle installiert. Er überwacht die installierten Server-Rollen und hat ausserdem die Aufgabe, abgelaufene Zertifikate zu finden, welche das CRM System beinflussen könnten. Der Service logged alle Befunde im Event Log. (Source: MSCRMMonitoringServerRole)