Microsoft „90 Days reassigned“-Lizenzklausel überwachen (MYSQL)

Das Microsoft-Lizenzrecht ist aus Sicht eines Users (und nicht nur für ihn) ein Dschungel aus Berechtigungen und Klauseln. Oftmals stolpert man über die „90 Days reassigned“-Klausel. Während in großen Unternehmen Software zur Lizenzüberwachung zum Einsatz kommt, ist bei kleinen Firmen/Handwerksbetrieben die Überwachung oftmals „händisch“ auszuführen.

„90 Day reassigned“ bedeutet, dass eine Lizenz, die einem User/Gerät zugeteilt wurde, erst nach 90 Tagen wieder für die Verwendung eines anderen Users/Gerätes hergenommen werden darf. Diese Einschränkung findet sich in etlichen Microsoft-Lizenzbestimmungen* wieder und muss auch von verantwortlicher Stelle dokumentiert werden.
* Als Beispiel ein Auszug aus den Lizenzbestimmungen von Office 2010:
„Sie sind berechtigt, die Lizenz beliebig oft einem anderen Gerät neu zuzuweisen, jedoch nicht öfter als einmal alle 90 Tage. Wenn Sie eine Neuzuweisung ausführen, wird das entsprechende andere Gerät das „lizenzierte Gerät“. Wenn Sie das lizenzierte Gerät aufgrund eines Hardwarefehlers außer Dienst stellen, sind Sie berechtigt, die Lizenz früher neu zuzuweisen.“

Hauptsache ist bei dieser Klausel, daß überhaupt dokumentiert wird und weniger in welcher Form.

Hier ein kleiner Lösungsansatz mit HTML(Apache, PHP) und MYSQL. Ich beschränke mich hier auf die minimalsten Angaben, denn dieser Beitrag soll eher als Anregung gesehen werden und nicht als Endlösung.

Die Grundproblematik ist die Berechnung der Zuteilungsdauer.
Hier ein Beispiel der Vorgehensweise.
Errechnen der Differenz von Zuteilungsdatum und dem heutigem Datum geteilt durch 90Tage. Das Ergebnis muss danach auf die nächste Ganzzahl aufgerundet und diese wieder mit 90 multipliziert werden. Damit hat man die, auf je 90 Tage aufgerundete, Zuteilungsdauer mit Bezug auf das Zuteilungsdatum.
Jetzt errechnet man noch das Ablaufdatum in dem man die errechnete Tagesdifferenz auf das Zuteilungsdatum aufrechnet.
Als kleine Fleißaufgabe könnte man dann noch die Differenz zwischen dem heutigem Datum und den errechneten Enddatum ausgeben.

Umsetzung in der Praxis:
Über den phpmyadmin erzeuge ich eine Datenbank und darin eine Tabelle mit 3 Spalten. ID (autoincrement), Name(Text), Zuteilungsdatum (Datum).
Die Datenbank nenne ich MS-Lizenz und die Tabelle MS90D
MS-liz90d_01 MS-liz90d_02 MS-liz90d_03
Und erzeuge einen Eintrag: Name: Hans Meier, Zutrittsdatum 1.1.2015
MS-liz90d_04 MS-liz90d_05

Aufbau der SQL-Abfrage.
Jetzt errechne ich die Differenz in Tagen zwischen dem Zuteilungsdatum und dem heutigen Datum

MS-liz90d_06
Diese teile ich durch 90 Tage

MS-liz90d_07
Das Aufrunden erledige ich durch die Nutzung des floor Befehls, welcher die Kommastellen einer Zahl abschneidet. Zum Aufrunden addiere ich dann einfach 1.

MS-liz90d_08
Dies multipliziere ich jetzt wieder mit 90, um die Anzahl der Tage bis zum Ablauf der Zuteilungsfrist zu errechnen

MS-liz90d_09
Diese Tage addiere ich jetzt zu dem Datum der Zuteilung, so erhalte ich das Ablaufdatum der Lizenzzuteilung für diesen User

MS-liz90d_10
In einem weiteren Feld könnte ich jetzt noch die Restlaufzeit in Tagen errechnen.

MS-liz90d_11

Diese Abfrage lässt sich jetzt in phpmyadmin einfach durch Klick auf „Create View“ eine View (Sicht) erzeugen, welche dann z.B.: in einem Browser abgerufen werden kann. Als Name vergebe ich auf die Schnelle mal „MS90D-View“
MS-liz90d_12 MS-liz90d_13
Diese Sicht kann auch im phpmyadmin ausgeführt werden und man muss nicht mehr den langen SQL-Code eingeben, um ein Ergebnis zu erhalten.

Zeit, die View noch etwas komplexer zu gestalten.
Jetzt soll noch das Ausscheidedatum mit aufgenommen werden, um Lizenzen welche mehr als 90 Tage nach dem Ausscheidedatum liegen, nicht mehr angezeigt werden.
Hinzufügen der Spalte „Ausscheidedatum“.
MS-liz90d_14 MS-liz90d_15 MS-liz90d_16

Und die Erweiterung des SQL-Befehls

So werden mir nur noch die Einträge angezeigt, welche
– kein Ausscheidedatum
– ein Ausscheidedatum nach dem heutigen Datum und dem innerhalb der errechneten Vorhaltezeit bei Ausscheiden eines Mitarbeiters bei Ausscheidatum vor dem heutigem Tag
haben.
Letzteres errechne ich, in dem ich nicht das Enddatum zum aktuellen Datum berechne, sondern zum angegebenen Ausscheidedatum.
Kleine Beweisführung:
Ich lege noch 2 weitere User an, jeweils mit dem Eintrittsdatum 1.1.2015. User 1 bekommt als Ausscheidedatum den 20.1.2015 und User 2 den 30.5.2015
MS-liz90d_17 MS-liz90d_18 MS-liz90d_19 MS-liz90d_20

Ich erzeuge aus der aktuellen Abfrage eine weitere View mit dem Namen „MS90D-ALL“
MS-liz90d_21 MS-liz90d_22

Um die Abfrage nun in einer HTML-Seite (oder besser PHP-Seite) abrufen zu können, vergebe ich jetzt die Userrechte im MySQL.
Ein neuer User wird (unter Rechte) angelegt. Ich nenne ihn mal „keiner“ und als Passwort bekommt er „test“
Als datenbankspezifisches Recht bekommt er auf die View „MS90D-ALL“ das „Select“-Recht.
MS-liz90d_23 MS-liz90d_24 MS-liz90d_25 MS-liz90d_26 MS-liz90d_27

Eine simple Abfrage als Beispiel:
Ich erzeuge eine „index.php“ mit folgendem Inhalt:

MS-liz90d_28
Diese simple Abfrage ist natürlich noch nicht ausreichend um die Dokumentationspflicht der Lizenzen zu erfüllen.
Hierzu gehört eine genauere Angabe des Users, z.B.: mit Personalnummer.
Ebenso sollten die Liste der Lizenzen regelmäßig, oder bei Änderung der Mitarbeiter, ausgedruckt und an Besten noch unterschrieben werden.
Auch sind einzelne Listen für jedes MS-Produkt notwendig (sofern es diese Sperre der 90tägigen Zuteilung verlangt).
Wie Eingangs erwähnt, sollte dies aber eher eine Anregeung sein und keine Endlösung.