Möchte man eine Instanz in eine andere Infrastruktur migrieren (möglicherweise aufgrund einer Aktualisierung), sollten folgende Schritte beachtet werden.

  • Bevor die Instanz in der „alten Umgebung“ abgeschaltet wird, sollte der aktuelle Schlüssel für die Datenverschlüsselung kopiert werden. Diesen finden Sie ab Dynamics CRM 2011 unter Einstellungen > Datenverwaltung > Datenverschlüsselung > [X] Schlüssel anzeigen. Sie benötigen diesen nach der Migration, um die Datenverschlüsselung wieder zu aktivieren.
  • Stellen Sie zudem sicher, dass es einen CRM-User gibt, der alle der folgenden Eigenschaften besitzt.
    • Zugriffsmodus: Lesen-Schreiben (NICHT Administrator und erst recht nicht Lesezugriff)
    • Rolle: Mindestens Systemadministrator
  • Anschließend können Sie auf dem Anwendungsserver die Instanz deaktivieren und löschen. Hierbei wird die Datenbank nicht gelöscht.
  • Besagte Datenbank können Sie anschließend auf dem SQL-Server entweder im Rahmen eines Backups sichern, oder aber die Datenbank einfach aushängen.
  • In beiden Fällen können Sie die Datenbank entweder durch simples Wiedereinhängen oder durch das Wiederherstellen der Sicherung im neuen SQL-Server einhängen.
  • Auf dem neuen CRM- / Dynamics 365-Server können Sie dann die Organisation importieren. Nach der erneuten Eingabe der Namen sowie der Auswahl des Report-Servers kommen wir hier zum Benutzermapping. Dies können Sie automatisiert durchlaufen lassen, sofern die Domäne gleich bleibt. Anderenfalls müssen Sie die CRM-Benutzer manuell den AD-Benutzern zuweisen.
  • Im Falle des Fehlers „You must map your Active Directory user account to at least one enabled Microsoft Dynamics CRM user who has the System Administrator role before the organization can be imported“ sind folgende Ursachen möglich:
    • Sie führen den Import mit einem Benutzer durch, den Sie nicht gemappt haben > Sie müssen sich entweder den Import mit dem Benutzer durchführen, auf den die Anforderungen aus Schritt 2 passen, oder Ihren aktuellen Benutzer auf den besagten CRM-User mappen.
    • Sie führen den Import mit einem Benutzer durch, dessen CRM-User nur administrativen Zugriff auf das CRM hat > Führen Sie folgende Query in der Datenbank Ihrer Instanz aus:
      UPDATE SystemUserBase
      SET AccessMode = 0
      WHERE DomainName = 'DOMAIN\User'
    • Sie führen den Import mit einem Benutzer durch, dessen CRM-User deaktiviert ist > Führen Sie folgende Query in der Datenbank Ihrer Instanz aus:
      UPDATE SystemUserBase
      SET IsDisabled = 0
      WHERE DomainName = 'DOMAIN\User'

      Es kann sein, dass Sie davor einen anderen Benutzer deaktivieren müssen, um die maximale Anzahl von Benutzern nicht zu überschreiten:

      UPDATE SystemUserBase
      SET IsDisabled = 1
      WHERE DomainName = 'DOMAIN\OtherUser'
  • Danach wird der Import durchgeführt. Dies lief bei uns fehlerfrei durch. Sollten uns bei kommenden Migrationen noch gängige Fehler auffallen, werden wir diese an der Stelle ebenfalls festhalten.
  • Nach dem erfolgreichen Umzug müssen Sie bei der Verwendung von ADFS spätestens jetzt die alte Instanz löschen. Aktualisieren Sie anschließend beide Relying Party Trusts (mangels deutscher Server fehlt mir hier die Übersetzung) – die der alten Instanz und die der neuen.
  • Der A-Record muss ebenfalls auf die neue Infrastruktur zeigen.
  • Tragen Sie nach dem erfolgten Zugriff auf das neue CRM den in Schritt 1 gespeicherten Verschlüsselungskey wieder unter Einstellungen > Datenverwaltung > Datenverschlüsselung ein. Danach ist das CRM / Dynamics 365 wieder voll benutzbar.

Wenn die /boot Partition nur noch über wenig freien Speicher verfügt, reicht es meistens aus, die alten Kernel Versionen zu löschen.

Gehen Sie hiebei wie folgt vor:

Mit folgendem Befehl kann man sich alle installierten – jedoch nicht verwendeten – Kernel anzeigen lassen:

kernelver=$(uname -r | sed -r 's/-[a-z]+//')
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve $kernelver

Alle in dieser nun angezeigten Liste können gelöscht werden. Um Diese zu löschen, muss folgender Befehl verwendet werden (Hier am Beispiel mit linux-image-4.4.0-104-generic):

sudo apt-get purge linux-image-4.4.0-104-generic

Man kann sich wenn man die letzten 2 Kernel behalten möchte, jedoch nicht sicher ist ob schon genug Speicher freigegeben wurde, mit folgendem Befehl die aktuellen Daten für die /boot Partition ausgeben lassen:

df -h /boot

Bei frisch installierten Windows 10- und Windows Server 2016-Systemen wird beim Öffnen des Explorers der „Schnellzugriff“ statt „Dieser PC“ angezeigt. Diese Änderung sorgte für viel Unmut, auch weil nicht sofort ersichtlich war, wie man das ändert.

Manuell:

  • Rechtsklicken Sie auf „Schnellzugriff“ in der linken Navigationsleiste des Explorers und gehen Sie auf „Optionen“.
  • Wählen Sie im Reiter „Allgemein“ unter der Einstellung „Datei-Explorer öffnen für:“ die Option „Dieser PC“.
  • Bestätigen Sie mit Klick auf „OK“.

Gruppenrichtlinie:

  • Erstellen Sie eine neue Gruppenrichtlinie mit einem treffenden Namen.
  • Navigieren Sie in der GPO zu folgender Einstellung: „Computer Configuration“ -> „Preferences“ -> „Windows Settings“ -> „Registry“
  • Rechtsklicken Sie in den freien Raum und wählen dann „Neu“ -> „Registry Item“
  • Füllen Sie die Maske wie folgt aus:
    Action: „Update“
    Hive: „HKEY_LOCAL_MACHINE“
    Key Path: „SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced“
    Value Name: „LaunchTo“
    Value type: „REG_DWORD“
    Value data: „1“
    Base: „Decimal“
  • Diese Eingaben per Klick auf „OK“ bestätigen.
  • Die restlichen Fenster können geschlossen werden.

In der zweiten Januarwoche ’18 häuften sich bei uns die Meldungen, dass Outlook 2016 wiederholt das Kennwort abfrägt. Dass das richtige Passwort übermittelt wurde, konnten die Benutzer zuvor über OWA sicherstellen. Teilweise war auch der Versand und Empfang von Mails dennoch möglich.

Wir suchten zuerst an unseren Servern verzweifelt nach dem Fehler, da wir in jüngster Zeit tatsächlich infrastrukturelle Veränderungen durchgeführt hatten. Wir haben dann sogar über Nacht noch das aktuellste Cumulative Update für Exchange ausgerollt. Doch alle Bemühungen waren erfolglos, die Probleme blieben.

Was wir jedoch herausfinden konnten, war, dass das Problem nur mit dem 1711er Build von Outlook bestand. Als Workaround boten wir unseren Kunden daraufhin an, updatetechnisch auf den Build 1710 zurückzugehen. Sounds good – didn’t work: Über Nacht haben sich alle Outlooks wieder aktualisiert…

Heute Morgen wurden wir dann auf einen Reddit-Post aufmerksam, der Licht ins Dunkel brachte: https://www.reddit.com/r/sysadmin/comments/7pk33j/outlook_2016_password_prompt/

Scheinbar hat eine in Outlook reingepatchte Office 365-Änderung das Problem verursacht. Mit folgendem Registry-Eintrag:

[HKEY_CURRENT_USER\Software\Microsoft\Office\X.0\Outlook\AutoDiscover]
"ExcludeExplicitO365Endpoint"=dword:00000001

… unterbinden Sie die Abfrage der Office 365-Endpunkte beim Autodiscover-Vorgang. An diesen möchte sich Outlook 2016 scheinbar seit neuestem authentifizieren, was logischerweise nicht funktioniert – haben wir doch unsere eigene Infrastruktur.

Für kurz angebundene bieten wir auch eine ZIP-Datei mit den Fixes für die Outlook-Versionen 2010 – 2016 an. Ob tatsächlich ältere Versionen betroffen sind, ist uns aber nicht bekannt. Sie können die Datei unter folgendem Link beziehen: http://c4y.eu/passfix

Wir haben mehrere CentOS-basierte Zabbix-Proxies. Damit diese auch nach dem Neustart noch ihren Zweck erfüllen und nicht irgendwie in der Luft hängen, haben sich folgende Schritte etabliert.

nano /etc/rc.d/rc.local

Hinter diesem Pfad verbirgt sich ein Startup-Script. Dieses kann schon einige Zeilen enthalten. Wir ergänzen es einfach um folgende Einträge:

# eth1 ist die NIC in unser Netzwerk. eth0 ist die NIC mit Default Gateway in das zu überwachende Netz
# Zu Beginn starten wir diese NIC einmal neu, um sicherzustellen, dass sie aktiv ist
ifdown eth1
ifup eth1

# Dann setzen wir die Route für das Netz, in dem der Zabbix-Server letztendlich steht
ip route add [MgmtNetz]/[Hostbits] via [IP des Gateways der NIC] dev eth1 proto static metric 10
# Bsp.: ip route add 192.168.1.0/24 via 172.16.1.1 dev eth1 proto static metric 10

# SELinux Konfiguration „Eine Bastion gegen Angriffe“
setsebool zabbix_can_network 1
setsebool httpd_can_connect_zabbix 1

# Sicherstellen dass die Dienste laufen
systemctl start zabbix-proxy
systemctl start zabbix-agent
systemctl start postgresql

Anschließend stellen wir sicher, dass das Script ausführbar ist:

chmod +x /etc/rc.d/rc.local

Damit sollte der Proxy künftige Neustarts überleben.

Szenario:

Über ein beliebiges Tool wird versucht, per SMTP eine Mail unter Verwendung des Exchange-Servers als Relay zu versenden. Die Authentifizierung klappte tadellos und als Absenderadresse wird die Antwortadresse des Accounts verwendet, mit dem man sich zuvor angemeldet hat. Und doch sagt der Exchange-Server:

5.7.1 Client does not have permissions to send as this sender

Grund / Lösung:

Man muss obige Fehlermeldung nur in Google eingeben, um herauszufinden, dass es so einige Ansätze zur Problemlösung gibt. Bei uns war es jedoch ein sehr unüblicher Grund: Vor zwei Tagen hatte ich die Domain, die die Mailadresse des Benutzers hinter dem @ stehen hat, als „External Relay“ definiert. Damals wollte ich sicherstellen, dass der Exchange immer versucht, die Mail über das Internet zu versenden, auch wenn das Empfängerpostfach lokal vorliegt. Das oben beschriebene Szenario ist hier jedoch ein unangenehmer Nebeneffekt. Verwendet man also den Exchange-Server als Relay für andere Programme, so sollte die sendende Domain immer als „Authorative“ oder „Internal Relay“ eingerichtet sein.

Multiline TAPI Installieren:

  • Zuerst müssen alle 3CX Plugins deinstalliert und anschließend der Terminalserver neugestartet werden.
  • Danach muss der Installer für die Multiline heruntergeladen werden.
  • Wenn Sie dann die Installation ausführen, erscheint ein kleines Fenster wo Sie die Nebenstellen Nummern und den Namen eintragen können.
  • Danach die aktuelle Version des 3CX Clients installieren.
  • Um die anderen Nebenstellen einzutragen, müssen sie die 3CXTAPI.ini unter C:\ProgramData\3CXMultiLineTapi editieren.
  • Es muss sichergestellt werden, dass es für jeden Benutzer in der INI-Datei, eine Windows Session gibt mit provisionierten Client des Benutzers.

Outlook Integration:

  • Für die Outlook Integration, muss in der Nebenstelle unter dem Reiter „Integration“ die „Outlook.zip“ ausgewählt werden.
  • Anschließend muss der Client neugestartet bzw. neu provisioniert werden.
  • Wenn Sie Outlook nun öffnen, dann wird die 3CX ein Plugin installieren wollen.
  • Dieses Plugin muss installiert werden, danach kann aus Outlook gewählt werden.

Mögliche Fehler:

  1. Sollte die TAPI einen Fehler werfen, kann es sein, dass es in der 3CXWin8Phone.user.config Datei einen Fehler gibt.
    • Wir hatten das Problem, dass hier im Text anstatt „Plugin“ ->„Plugi“ stand.
  2. Wenn Sie aus Outlook heraus wählen, und das Rufnummernformat nicht stimmt, dann müssen Sie folgendes tun:
  • Schauen Sie in der Anrufliste der 3CX nach, ob die 3CX das „+“ bei „+49“ möglicherweise nicht erkannt hat bzw. es eine Regel gibt welche das „+“ abfängt.
    • Falls nicht, entweder
      1. eine Ausgehende Regel erstellen, welche dann aus „+“ eine „00“ macht.
      2. in dem Client unter „Konten“ -> auf das Konto Klicken->  „Erweitert“ -> ganz unten „+ ersetzen durch 00“.
  • Wenn Sie die falsche Vorwahl haben, müssen Sie dies in der Telefon und Modem Einstellungen ändern.
    • Hier gehen Sie zu diesen Einstellungen „Telefon und Modem“ -> „Bearbeiten“ und ändern die „Amtskennziffer für Ortsgespräche“  ab.
    • Ihnen wird in dem sich öffnenden Fenster unten angezeigt, wie die Nummer dann beim wählen aussieht, während Sie das Format ändern.

  • In der 3CX eine Nebenstelle anlegen, welche von der Behnke SIP-Sprechstelle verwendet werden kann
  • IP Adresse auf statisch setzen
  • In dem Reiter „Netzwerk“ auf „SIP-Einstellungen“
    • Dort in dem Feld „SIP Authentifizierungs ID“ die Nebenstellen Nummer eingeben
    • In dem Feld „SIP Authentifizierungs Kennwort“ das Kennwort der Nebenstelle eingeben
    • Unter „SIP Domain“ und „SIP Server“ die IP-Adresse des 3CX Servers eingeben
  • Danach auf der Seite unten auf „Übernehmen“ klicken

In einem relativ aktuellen Fall hatten wir das Problem, dass unter einer CentOS7-VM ein LVM-Volume volllief:

sudo lvm vgdisplay
 --- Volume group ---
 VG Name centos
 System ID
 Format lvm2
 Metadata Areas 3
 Metadata Sequence No 8
 VG Access read/write
 VG Status resizable
 MAX LV 0
 Cur LV 3
 Open LV 3
 Max PV 0
 Cur PV 3
 Act PV 3
 VG Size 1.27 TiB
 PE Size 4.00 MiB
 Total PE 332622
 Alloc PE / Size 332622 / 1.27 TiB
 Free PE / Size 0 / 0
 VG UUID xxxx

Nun wurde über Hyper-V eine weitere 500GB große Disk hinzugefügt. Diese muss nun zum logischen Volume hinzugefügt werden. Hierzu gehen wir erstmal in die LVM-Umgebung:

> Sudo LVM

Nach erneuter Eingabe des Passworts können wir loslegen. Über den Befehl lvmdiskscan können wir den Pfad der neuen Disk bestimmen:

lvm> lvmdiskscan
 /dev/centos/root [ 1.03 TiB]
 /dev/sda1 [ 200.00 MiB]
 /dev/centos/swap [ 2.00 GiB]
 /dev/sda2 [ 500.00 MiB]
 /dev/centos/home [ 247.25 GiB]
 /dev/sda3 [ 299.31 GiB] LVM physical volume
 /dev/sdb [ 500.00 GiB]
 /dev/sdc [ 500.00 GiB] LVM physical volume
 /dev/sdd1 [ 500.00 GiB] LVM physical volume
 4 disks
 2 partitions
 1 LVM physical volume whole disk
 2 LVM physical volumes

Mit dieser Disk werde ich das Beispiel durchmachen, Sie aber zur Verdeutlichung auch immer rot markieren. Als erstes wollen wir erreichen, dass die Disk über den LVM verwendet werden kann. Hierzu verwenden wir folgenden Befehl:

lvm> lvm pvcreate /dev/sdb
 Physical volume "/dev/sdb" successfully created

Führen wir nun erneut den Befehl lvmdiskscan aus, so sehen wir, dass die neue Disk hinzugefügt wurde:

lvm> lvmdiskscan
 /dev/centos/root [ 1.03 TiB]
 /dev/sda1 [ 200.00 MiB]
 /dev/centos/swap [ 2.00 GiB]
 /dev/sda2 [ 500.00 MiB]
 /dev/centos/home [ 247.25 GiB]
 /dev/sda3 [ 299.31 GiB] LVM physical volume
 /dev/sdb [ 500.00 GiB] LVM physical volume
 /dev/sdc [ 500.00 GiB] LVM physical volume
 /dev/sdd1 [ 500.00 GiB] LVM physical volume
 3 disks
 2 partitions
 2 LVM physical volume whole disks
 2 LVM physical volumes

Jetzt können wir die Disk nehmen, und sie unserer bestehenden LVM-Gruppe hinzufügen. Den Gruppennamen bekommt man über den Befehl vgdisplay heraus:

lvm> vgdisplay
 --- Volume group ---
 VG Name centos
 System ID
 Format lvm2
 Metadata Areas 3
 Metadata Sequence No 8
 VG Access read/write
 VG Status resizable
 MAX LV 0
 Cur LV 3
 Open LV 3
 Max PV 0
 Cur PV 3
 Act PV 3
 VG Size 1.27 TiB
 PE Size 4.00 MiB
 Total PE 332622
 Alloc PE / Size 332622 / 1.27 TiB
 Free PE / Size 0 / 0
 VG UUID x6THwj-1ybf-7UZD-GSb4-OJU0-ByTg-dyQL7h

Somit können wir folgenden Befehl abfeuern:

vgextend "centos" /dev/sdb
Volume group "centos" successfully extended

Sollten hier schon Fehlermeldungen wie diese hier kommen:

Couldn't create temporary text file name.
Backup of volume group centos metadata failed.

…so werden wir nachher noch was beachten müssen. Dies tritt vor allem dann auf, wenn das bestehende Volume wirklich komplett voll ist.

Nachdem nun die Gruppe vergrößert wurde, muss das Volume entsprechend vergrößert werden. Bei uns war es das root-Volume, dessen Pfad wir über den Befehl lvmdiskscan schon ausmachten:

lvm> lvmdiskscan
 /dev/centos/root [ 1.03 TiB]
 /dev/sda1 [ 200.00 MiB]
 /dev/centos/swap [ 2.00 GiB]
 /dev/sda2 [ 500.00 MiB]
 /dev/centos/home [ 247.25 GiB]
 /dev/sda3 [ 299.31 GiB] LVM physical volume
 /dev/sdb [ 500.00 GiB] LVM physical volume
 /dev/sdc [ 500.00 GiB] LVM physical volume
 /dev/sdd1 [ 500.00 GiB] LVM physical volume
 3 disks
 2 partitions
 2 LVM physical volume whole disks
 2 LVM physical volumes

Wir müssen uns nun also die zukünftige Größe des Volumes erschließen. Dies geschieht in zwei Schritten:

lvm> vgdisplay
 --- Volume group ---
 VG Name centos
 System ID
 Format lvm2
 Metadata Areas 4
 Metadata Sequence No 9
 VG Access read/write
 VG Status resizable
 MAX LV 0
 Cur LV 3
 Open LV 3
 Max PV 0
 Cur PV 4
 Act PV 4
 VG Size 1.76 TiB
 PE Size 4.00 MiB
 Total PE 460621
 Alloc PE / Size 332622 / 1.27 TiB
 Free PE / Size 127999 / 500.00 GiB
 VG UUID x6THwj-1ybf-7UZD-GSb4-OJU0-ByTg-dyQL7h

lvm> lvdisplay /dev/centos/root
 --- Logical volume ---
 LV Path /dev/centos/root
 LV Name root
 VG Name centos
 LV UUID 6wSo4q-yRO7-dZiZ-TwBf-QYeq-iTjf-O1Uk6Z
 LV Write Access read/write
 LV Creation host, time localhost.localdomain, 2016-03-14 13:42:03 +0100
 LV Status available
 # open 1
 LV Size 1.03 TiB
 Current LE 268814
 Segments 3
 Allocation inherit
 Read ahead sectors auto
 - currently set to 8192
 Block device 253:0

Addieren wir die aktuelle Größe des Volumes mit dem neu gewonnenen freien Speicherplatz (127999 + 268814), so bekommen wir als Endergebnis die neue Größe des Laufwerks (396813). Sofern es vorher keine Fehlermeldung bei Ausführung des Befehls vgextend „centos“ /dev/sdb gab, so können Sie nun mit folgendem Befehl das Volume erweitern:

lvm> lvresize -l 396813 /dev/centos/root
Size of logical volume centos/root changed from 1.03 TiB (268814 extents) to 1.51 TiB (396813 extents).
Logical volume root successfully resized.

Anderenfalls müssen wir noch das Autobackup deaktivieren, was aber durch eine kleine Abänderung des Befehls noch in der selben Line möglich ist:

lvm> lvresize -A n -l 396813 /dev/centos/root
 Size of logical volume centos/root changed from 1.03 TiB (268814 extents) to 1.51 TiB (396813 extents).
 WARNING: This metadata update is NOT backed up
 Logical volume root successfully resized.

Abschließend muss noch das Dateisystem erweitert werden. Dies erfolgt über den folgenden Befehl (außerhalb der LVM-Umgebung):

> sudo xfs_growfs /dev/centos/root

Das sollte es gewesen sein. Überprüfen kann man es mit dem Befehl df -h:

df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 1.6T 1.1T 500G 68% /
devtmpfs 5.8G 0 5.8G 0% /dev
tmpfs 5.8G 8.0K 5.8G 1% /dev/shm
tmpfs 5.8G 8.3M 5.8G 1% /run
tmpfs 5.8G 0 5.8G 0% /sys/fs/cgroup
/dev/sda2 494M 134M 361M 28% /boot
/dev/sda1 200M 9.5M 191M 5% /boot/efi
/dev/mapper/centos-home 248G 33M 248G 1% /home
tmpfs 1.2G 0 1.2G 0% /run/user/1001

Installation von Debian:

Debian mit dem 9.1.0 ISO-Image installieren.
Mit dem Befehl „ip a“ herausfinden, ob man die  gewünschte IP hat.
Wenn nicht, dann mit dem Befehl nano /etc/network/interfaces die IP wie folgt ändern:
auto eth0
iface eth0 inet static
address 192.0.2.7
netmask 255.255.255.0
gateway 192.0.2.254
Es müssen alle weiteren nicht gebrauchten Netzwerke deaktiviert bzw. gelöscht werden.
Danach muss die source.list (nano /etc/apt/source.list) wie folgt bearbeitet werden:

deb http://httpredir.debian.org/debian stretch main 
deb-src http://httpredir.debian.org/debian stretch main

deb http://httpredir.debian.org/debian stretch-updates main
deb-src http://httpredir.debian.org/debian stretch-updates main

deb http://security.debian.org/debian-security stretch/updates main
deb-src http://security.debian.org/debian-security  stretch/updates main

Danach führen Sie folgende Befehle aus:
  • wget -O- http://downloads-global.3cx.com/downloads/3cxpbx/public.key | apt-key add -
  • echo "deb http://downloads-global.3cx.com/downloads/debian stretch main" | tee /etc/apt/sources.list.d/3cxpbx.list
  • apt-get update
  • apt-get install 3cxpbx
Nun kann die 3CX unter http://IPADDRESSE:5051 erreicht werden.