Categories
Lync Snom

SNOM Telefon – Benutzer über das Webinterface einrichten

Geben Sie in Ihren Webbrowser https://(IP-Adresse Ihres Geräts) ein, um auf das Webinterface zu kommen, z.B. https://192.128.10.64.

Die IP-Adresse des Telefons findet man am Telefon unter: (Menü Taste) > 6 Information > 2 Systeminfo

Die Eingabe der SIP-URI am Telefon kann man umgehen, indem man 3 Mal hintereinander, ungefähr 3 Sekunden lang die X –Taste drückt. So kommen Sie auf die Startseite und können nach Ihrer IP-Adresse schauen.

Sobald Sie Ihre IP-Adresse im Webbrowser eingegeben haben, klicken Sie Links im Menü auf UC Zugangsdaten.

Zuerst wird nach der SIP-URI gefragt. Dort tragen Sie die E-Mail Adresse ein, die Sie auch in Lync nutzen, z.B. MMustermann@Beispiel.de.

Danach müssen Sie Domain\User eingeben, z.B. Beispiel\MMustermann.

Zum Schluss geben Sie Ihr Lync Passwort ein. Danach ist ihr Telefon mit Lync verbunden und funktionsfähig.

Ihre Lync- Kontakte werden auf das Telefon synchronisiert.

Anschließend gehen Sie auf Identität 1. Ihnen erscheint oben die Meldung: “Es gibt Änderungen, die noch nicht permanent gespeichert wurden” welche sie mit Speichern bestätigen.

Danach klicken Sie unten auf Übernehmen und dann auf Re-Registrieren.

Categories
Lync Server Windows

Lync/Skype4B: Nummern filtern in der Dialin-Page

Angenommen Sie haben in Ihrer Lync-/Skype for Business-Umgebung mehrere Dialin-Nummern, die aber zum Teil nicht von jedem gesehen werden sollen. Nun ist es aber so, dass auf der Dialin-Seite standardmäßig alle Einwahlnummern angezeigt werden. Um das zu unterbinden, kann man die Nummern in der PhoneList-Datei filtern. Diese finden wir wie folgt:

  • Melden Sie sich am Server an und öffnen Sie den IIS Manager
  • Navigieren Sie in der linken Baumstruktur auf folgenden Pfad:
    <Servername> → Sites → <Lync-/Skype-Version> External Web Site → dialin
  • Nun können Sie rechts in den Actions Explore auswählen, um im entsprechenden Dateiverzeichnis zu landen
  • Dort können Sie die Datei PhoneList.xslt finden. Diese können Sie erstmal nehmen und an den selben Ort nochmal kopieren mit dem Präfix “OLD_”. Somit haben Sie die originale Datei auf jeden Fall gesichert.
  • Nun öffnen Sie die PhoneList.xslt-Datei mit Hilfe des Notepads. (Zum anschließenden Speichern in den Pfad muss Notepad eventuell als Admin gestartet werden!)

Nun sollte sich in etwa ein solcher Eintrag öffnen:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
 <xsl:output method="xml" indent="yes"/>
 <xsl:template match="/PhoneList">
  <xsl:for-each select="Region/PhoneNumber">
   <tr>
    <td class="region">
     <xsl:value-of select="@Name"/>
    </td>
    <td class="number">
     <xsl:value-of select="@Value"/>
    </td>
    <td class="language">
     <span class="defaultLanguage">
      <xsl:value-of select="@Primary"/>
     </span>
     <xsl:value-of select="@Secondary"/>
    </td>
   </tr>
  </xsl:for-each>
 </xsl:template>
</xsl:stylesheet>

Interessant für uns ist eigentlich nur eine Zeile, an welche wir den Filter anbringen werden:

<xsl:for-each select="Region/PhoneNumber">

Mit Filter sieht das Ganze dann folgendermaßen aus:

<xsl:for-each select="Region/PhoneNumber[<Variable>='<Wert>']">

Als Variable sind folgende Elemente verwendbar:

  • @Name – Das ist der Name der Dialin-Nummer, der in der Tabelle auf der Seite unter der Spaltenüberschrift “Region” zu finden ist.
  • @Value – Das ist die tatsächliche Telefonnummer, auch in der Tabelle unter “Nummer” zu finden.
  • @Primary – Die primäre Region, in der Tabelle dick abgebildet unter “Verfügbare Sprachen”
  • @Secondary – Die sekundären Regionen, in der Tabelle rechts von der primären Sprache unter “Verfügbare Sprachen” zu finden.

Der einzutragende Wert ist dann eben das, was man sehen möchte. Statt dem ‘=’ können auch noch die Operatoren ‘!=’ (ist nicht gleich), ‘&lt’ (kleiner als) und ‘&gt’ (größer als) verwendet werden.

Ein fertiger Filter kann dann zum Beispiel so aussehen:

<xsl:for-each select="Region/PhoneNumber[@Name!='Geheime Einwahl']">

Nach dem Speichern ist der Filter sofort aktiv und bereits beim nächsten Aktualisieren der Seite ist die Änderung zu sehen.

Categories
Lync Server SQL Windows

Lync 2013 Enterprise – Umzug der Datenbanken auf einen neuen SQL-Server

In diesem Beitrag werden wir den Umzug aller Datenbanken betrachten, die in einer Lync Enterprise-Umgebung auftreten. Diese nennen sich wie folgt:

— BackEnd —
CPSDYN – Dynamische Informationsdatenbank für das Call Parking-Feature
RGSCONFIG – In ihr liegt die Konfiguration aller Response Groups
RGSDYN – Dynamische Informationsdatenbank für Runtime-Daten der Response Groups
RTCAB – In ihr liegen die Daten aller Adressbücher
RTCSHARED – Beinhaltet Konferenzdaten
RTCXDS – Ist für das Backup der Benutzerdaten zuständig

— Persistent Chat —
MGC – Speichert alle Persistent Chats und deren Protokolle

— Monitoring —
LCSCDR – Speichert Details aller Calls
LCSLOG – Beinhaltet Daten aller Instant Messages und Konferenzen
QOEMETRICS – Beinhaltet QoE-Daten um die Qualität der Dienste für User sicherzustellen

Vorbereitung

Als erstes, und dies ist äußerst wichtig, muss dafür gesorgt werden, dass die Central Management Datenbank während des Umzugs nicht auf einem der FrontEnd-Server läuft. Da dessen Dienste während des Umzugs nur eingeschränkt bzw. gar nicht verfügbar sind, wir allerdings über die Topologie nachher auf den neuen SQL-Server verweisen, könnte dies fatale Folgen haben. Ist dies also der Fall, muss ein temporärer Lync-Server aufgesetzt werden, der keine Rolle besitzt, sondern nur den Central Managent Store besitzt. Erst wenn dies sichergestellt wurde und die CMS Replikation auf “healthy” steht, können wir fortfahren. Überprüfen können wir dies mit folgendem Befehl:

Get-CsManagementStoreReplicationStatus

Um sicherzustellen, dass keine Zugriffe mehr auf die Datenbank entstehen, müssen die Lyncdienste im gesamten FrontEnd- und auch im Persistent Chat-Pool beendet werden. Das heißt: Diese Arbeit ist auf jeden Fall außerhalb der Geschäftszeiten zu erledigen und kann sich ordentlich in die Länge ziehen.

Wie erwähnt gehen wir also als erstes auf sämtliche Server, die sich in den oben genannten Pools befinden und führen folgenden Befehl aus:

Stop-CsWindowsService

Dieser Befehlt stoppt sämtliche Lync-Dienste auf dem jeweiligen Server. Bitte notieren Sie sich die Reihenfolge der Abschaltung der Server in einer Handnotiz, um später zum Abschluss die Server wieder in entgegengesetzter Richtung zu starten.

Export

Als erstes müssen wir die Datenbanken für den Umzug vorbereiten. Dazu verwenden wir folgendes Script:

ALTER DATABASE cpsdyn SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE cpsdyn SET SINGLE_USER
ALTER DATABASE cpsdyn SET ONLINE
ALTER DATABASE rgsconfig SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rgsconfig SET SINGLE_USER
ALTER DATABASE rgsconfig SET ONLINE
ALTER DATABASE rgsdyn SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rgsdyn SET SINGLE_USER
ALTER DATABASE rgsdyn SET ONLINE
ALTER DATABASE rtcab SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rtcab SET SINGLE_USER
ALTER DATABASE rtcab SET ONLINE
ALTER DATABASE rtcshared SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rtcshared SET SINGLE_USER
ALTER DATABASE rtcshared SET ONLINE
ALTER DATABASE rtcxds SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rtcxds SET SINGLE_USER
ALTER DATABASE rtcxds SET ONLINE
ALTER DATABASE mgc SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE mgc SET SINGLE_USER
ALTER DATABASE mgc SET ONLINE
ALTER DATABASE LcsCDR SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE LcsCDR SET SINGLE_USER
ALTER DATABASE LcsCDR SET ONLINE
ALTER DATABASE LcsLog SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE LcsLog SET SINGLE_USER
ALTER DATABASE LcsLog SET ONLINE
ALTER DATABASE QoEMetrics SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE QoEMetrics SET SINGLE_USER
ALTER DATABASE QoEMetrics SET ONLINE

Von diesem Zeitpunkt an kann man nur noch eine Verbindung pro Datenbank öffnen. Das heißt man kann auch nur eine Query im Management-Studio gleichzeitig geöffnet haben. Die alten Hasen werden nun vermutlich lachen, aber ich bin fast verzweifelt, bevor ich das kapiert habe…

Nun denn, nachdem das erledigt wurde, können wir die Datenbanken in einem Ordner unserer Wahl sichern. Dies erledigen wir über folgendes Script:

USE Master;
GO
BACKUP DATABASE cpsdyn
TO DISK = 'D:\BackUp\cpsdyn.bak'
GO
BACKUP DATABASE rgsconfig
TO DISK = 'D:\BackUp\rgsconfig.bak'
GO
BACKUP DATABASE rgsdyn
TO DISK = 'D:\BackUp\rgsdyn.bak'
GO
BACKUP DATABASE rtcab
TO DISK = 'D:\BackUp\rtcab.bak'
GO
BACKUP DATABASE rtcshared
TO DISK = 'D:\BackUp\rtcshared.bak'
GO
BACKUP DATABASE rtcxds
TO DISK = 'D:\BackUp\rtcxds.bak'
GO
BACKUP DATABASE mgc
TO DISK = 'D:\BackUp\mgc.bak'
GO
BACKUP DATABASE lcscdr
TO DISK = 'D:\BackUp\lcscdr.bak'
GO
BACKUP DATABASE lcslog
TO DISK = 'D:\BackUp\lcslog.bak'
GO
BACKUP DATABASE qoemetrics
TO DISK = 'D:\BackUp\qoemetrics.bak'

Kopieren der Daten und Umstellung der Topologie

Die gesicherten Daten können wir nun nehmen und schon mal zum Zielserver verschieben. Damit es zu keinen Irritationen kommt: Wir haben auch auf dem Zielserver wieder unter dem Laufwerk D: einen “BackUp”-Ordner erstellt. Dieser Pfad ist noch nicht der entgültige Pfad, dieser wird später beim Import der Datenbanken gesetzt.

Nun gehen wir auf unseren CMS-Host, laden uns die Topologie herunter und passen die Einstellungen an:

  1. Erstellung des SQL Server Stores:
    Unter Lync Server ->  <Site> -> Shared Components rechtsklicken wir auf “SQL Server stores” und klicken dann auf New SQL Server Store… . Die hier benötigten Daten sollten klar sein, FQDN des Servers und der Instanzname. Im Anschluss mit OK bestätigen.
  2. Nun können wir auf den FrontEnd-Pool rechtsklicken und gehen dann auf Edit Properties… . Unter dem Punkt “Associations” können wir nun den neuen SQL Server store auswählen. Direkt darunter können wir auch noch für die Archivierung den Server auswählen.
  3. Nun werden wir die Topologie publishen. Dabei wird uns auch gesagt, dass er nun eine Datenbank auf dem Server anlegen wird. Das ist schön, denn das wollen wir. Wenn der Wizard mit einer Warning bei “Creating Database” erfolgreich abschließt, ist der erste Schritt getan.
  4. Nun widmen wir uns erneut der Topologie, rechtsklicken diesmal auf den Persistent Chat-Pool, öffnen wieder die Properties und wählen auch hier den neuen SQL Server store.
  5. Nun wiederholen wir Schritt 3 nochmal, publishen erneut die Topologie und lassen uns wieder eine Datenbank erstellen. Auch hier kann wieder eine Warnung beim letzten Schritt stehen.

Damit sind die Änderungen in der Topologie abgeschlossen.

Import der Bestandsdaten in die neue Datenbank

Bevor wir beginnen, müssen wir auf dem neuen Server die eben erstellten Datenbanken ebenfalls in diesen SingleUser-Modus bekommen. Dazu führen wir unser bereits von oben bekanntes Script erneut aus:

ALTER DATABASE cpsdyn SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE cpsdyn SET SINGLE_USER
ALTER DATABASE cpsdyn SET ONLINE
ALTER DATABASE rgsconfig SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rgsconfig SET SINGLE_USER
ALTER DATABASE rgsconfig SET ONLINE
ALTER DATABASE rgsdyn SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rgsdyn SET SINGLE_USER
ALTER DATABASE rgsdyn SET ONLINE
ALTER DATABASE rtcab SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rtcab SET SINGLE_USER
ALTER DATABASE rtcab SET ONLINE
ALTER DATABASE rtcshared SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rtcshared SET SINGLE_USER
ALTER DATABASE rtcshared SET ONLINE
ALTER DATABASE rtcxds SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE rtcxds SET SINGLE_USER
ALTER DATABASE rtcxds SET ONLINE
ALTER DATABASE mgc SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE mgc SET SINGLE_USER
ALTER DATABASE mgc SET ONLINE
ALTER DATABASE LcsCDR SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE LcsCDR SET SINGLE_USER
ALTER DATABASE LcsCDR SET ONLINE
ALTER DATABASE LcsLog SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE LcsLog SET SINGLE_USER
ALTER DATABASE LcsLog SET ONLINE
ALTER DATABASE QoEMetrics SET OFFLINE WITH ROLLBACK AFTER 10 Seconds
ALTER DATABASE QoEMetrics SET SINGLE_USER
ALTER DATABASE QoEMetrics SET ONLINE

Nun können wir unseren Bestand in die neuen Datenbanken integrieren. Hierzu ist folgendes Script nötig, wobei wieder der Quellpfad und Zielpfad auf die individuellen Einstellungen anzupassen sind:

USE Master;
RESTORE DATABASE [cpsdyn] FROM DISK = N'D:\BackUp\cpsdyn.bak' WITH FILE = 1,
MOVE N'cpsdyn_data' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\cpsdyn.mdf',
MOVE N'cpsdyn_log' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\CPSDYN.LDF',
NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [rgsconfig] FROM DISK = N'D:\BackUp\rgsconfig.bak' WITH FILE = 1,
MOVE N'rgsconfig_data' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\rgsconfig.mdf',
MOVE N'rgsconfig_log' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\rgsconfig.LDF',
NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [rgsdyn] FROM DISK = N'D:\BackUp\rgsdyn.bak' WITH FILE = 1,
MOVE N'rgsdyn_data' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\rgsdyn.mdf',
MOVE N'rgsdyn_log' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\rgsdyn.LDF',
NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [rtcab] FROM DISK = N'D:\BackUp\rtcab.bak' WITH FILE = 1,
MOVE N'rtcab_data' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\rtcab.mdf',
MOVE N'rtcab_log' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\rtcab.LDF',
NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [rtcshared] FROM DISK = N'D:\BackUp\rtcshared.bak' WITH FILE = 1,
MOVE N'rtcshared_data' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\rtcshared.mdf',
MOVE N'rtcshared_log' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\rtcshared.LDF',
NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [rtcxds] FROM DISK = N'D:\BackUp\rtcxds.bak' WITH FILE = 1,
MOVE N'rtcxds_data' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\rtcxds.mdf',
MOVE N'rtcxds_log' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\rtcxds.LDF',
NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [mgc] FROM DISK = N'D:\BackUp\mgc.bak' WITH FILE = 1,
MOVE N'mgc_data' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\mgc.mdf',
MOVE N'mgc_log' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\mgc.LDF',
NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [LcsCDR] FROM DISK = N'D:\BackUp\LcsCDR.bak' WITH FILE = 1,
MOVE N'LcsCDR_data' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\LcsCDR.mdf',
MOVE N'LcsCDR_log' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\LcsCDR.LDF',
NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [LcsLog] FROM DISK = N'D:\BackUp\LcsLog.bak' WITH FILE = 1,
MOVE N'LcsLog_data' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\LcsLog.mdf',
MOVE N'LcsLog_log' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\LcsLog.LDF',
NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE DATABASE [QoEMetrics] FROM DISK = N'D:\BackUp\QoEMetrics.bak' WITH FILE = 1,
MOVE N'QoEMetrics_data' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\QoEMetrics.mdf',
MOVE N'QoEMetrics_log' TO N'D:\MSSQL12.SKYPE4BUSINESS\MSSQL\DATA\QoEMetrics.LDF',
NOUNLOAD, REPLACE, STATS = 10
GO

Damit ist der Import an sich erledigt.

Abschließende Einstellungen

Zum Abschluss nehmen wir die Datenbanken wieder in den MultiUser-Mode. Erledigt wird das mit folgendem Script:

ALTER DATABASE cpsdyn SET multi_USER
ALTER DATABASE rgsconfig SET multi_USER
ALTER DATABASE rgsdyn SET multi_USER
ALTER DATABASE rtcab SET multi_USER
ALTER DATABASE rtcshared SET multi_USER
ALTER DATABASE rtcxds SET multi_USER
ALTER DATABASE mgc SET multi_USER
ALTER DATABASE LcsCDR SET multi_USER
ALTER DATABASE LcsLog SET multi_USER
ALTER DATABASE QoEMetrics SET multi_USER

Dann muss man noch ein sogenanntes “Cross-Database Ownership Chaining” auf der RTCshared-Datenbank aktivieren. Hierzu rechtsklicken wir auf die Datenbank und führen eine neue Query aus mit folgendem Inhalt:

ALTER DATABASE rtcshared SET DB_CHAINING ON;

Reaktivierung der Lync-Dienste + Funktionsüberprüfung

Dank der Notizen, die wir bzgl. der Reihenfolge der Abschaltungen der Frontend-Serverdienste gemacht hatten, können wir nun in entgegengesetzter Richtung die Server wieder anfahren. Dies geschieht mit folgendem Befehl:

Start-CsWindowsService

Währenddessen können wir zur Funktionsprüfung den Eventlog aufmachen (RUN -> eventvwr). Dort sehen wir dann schön die Statusmeldungen beim Starten der einzelnen Dienste und auch die sich öffnenden Verbindungen auf den neuen Datenbankserver.

Damit sind wir durch. Lediglich den CMS können wir noch zurückverlagern auf einen FrontEnd-Server.