Wie man Katzen weidet. Die Geschichte des Aufbaus eines Kontroll- und Abrechnungssystems für die Arbeitszeit eines IT-Unternehmens


    Diese Geschichte basiert auf einer Reihe erfolgreicher Zufälle, bei denen wir, wie es uns scheint, den richtigen Trend erkennen und ein Produkt entwickeln konnten, das vielen Menschen wie uns zusagt. Weil ... aber über alles in Ordnung.

    Wir sind also ein Unternehmen, das seinen Kunden Hightech-Dienstleistungen anbietet - Auslagerung von IT-Know-how, Remote-Support, kundenspezifische Softwareentwicklung usw. usw. Wie bei jedem anderen Unternehmen ist es für uns wichtig, die Arbeitsdisziplin einzuhalten und die Präsenz unserer hochqualifizierten Mitarbeiter am Arbeitsplatz zu kontrollieren. Aufgaben dieser Art werden relativ erfolgreich gelöst, wenn Mitarbeiter a) nach einem strengen Zeitplan im Büro arbeiten und b) ihre Einstellung zu dem, was befolgt wird, vernachlässigt werden können. Das heißt, Sie können herkömmliche ACS am Eingang des Büros installieren, die Tracking-Software auf Bürocomputern installieren und die Funktionen von Big Brother leise implementieren. Wenn Sie jedoch mit einem Expertenteam zusammenarbeiten, werden alle diese Maßnahmen mit größerer Wahrscheinlichkeit in den roten Zahlen angezeigt, und aus diesem Grund.

    Erstens ist ein typischer Angestellter eines High-Tech-Unternehmens (im Folgenden als „Experte“ bezeichnet) eine Person, die nicht nur bei der Arbeit und nicht nur während der traditionellen Arbeitszeit arbeitet. Es hat viel mit etwas zu tun ... es kann viel mit etwas zu tun haben - mit der tatsächlichen Notwendigkeit, nachts etwas zu tun, mit dem Unterschied der Zeitzonen zu den Kunden, und schließlich mit der Tatsache, dass der Höhepunkt der Produktivität unseres genialen Entwicklers in der Zeitspanne zwischen 23:00 und 4:00 Uhr liegt. 00, und zu dieser Zeit wirkt er Wunder. Dementsprechend ist nicht der Aufenthalt in unmittelbarer Nähe des Arbeitscomputers zu berücksichtigen, sondern die tatsächliche Arbeit daran (möglicherweise von zu Hause aus).

    Zweitens ist ein Experte ein freiheitsliebendes Wesen. Die bloße Idee, dass ein Programm ausschließlich zur Kontrolle seiner Aktivitäten eingesetzt wird, demotiviert, den Geist innovativer Teams untergräbt und sich dementsprechend negativ auf die Arbeitsproduktivität auswirkt.

    Drittens ist ein Experte ein Experte mit seinen beruflichen Ambitionen. Die Existenz von Software, die sich ihm widersetzt (dem Experten), kann die Talente dieser Person anweisen, diese Software zu bekämpfen. So wird unser Experte an seinem Arbeitsplatz in seiner Arbeitszeit Energie ausgeben ... für den Kampf mit dem System der Arbeitszeitabrechnung! Stimmen Sie zu, hier stimmt etwas nicht =).

    Und viertens stehen High-Tech-Unternehmen Programmen zur Erfassung von Benutzerdaten selbst misstrauisch gegenüber. Wer weiß wo dann diese Daten wegschweben ...

    Im Allgemeinen waren wir uns des Problems bewusst, aber wie ein echter „Schuhmacher ohne Stiefel“ hatten wir es nicht eilig, es zu lösen. Bisher hat uns unser Kunde nicht mit dem gleichen Problem kontaktiert. Hier beginnen die bereits angekündigten Zufälle.

    Unser Kunde ist also ein Unternehmen, das seinen Kunden High-Tech-Dienstleistungen anbietet. Ein Startup, das sich auf den Dedicated Developers Team-Service spezialisiert hat (wenn Programmierer an einen Kunden vermietet sind). Nach und nach wuchs die Zahl der Programmierer im Kunden, und die Frage nach der Arbeitsdisziplin und der Kontrolle der Arbeitszeit stellte sich. Der Kunde wollte jedoch aus Gründen, die völlig mit den oben beschriebenen übereinstimmen, keine traditionellen Mittel anwenden. Die Bedarfe stimmen also zu hundert Prozent überein. Mit dem Vorschlag, dieses Problem für ihn zu lösen, wandte sich der Kunde an uns, und wir begannen mit Begeisterung (mit mindestens doppeltem Nutzen =)), das Problem zu untersuchen.

    Es stellte sich heraus, dass unser Client wie wir hauptsächlich unter Windows arbeitet. Und die Anwendungen, mit denen er (wie wir!) Arbeitet, sind eher schwergewichtig, wie zum Beispiel SharePoint. Auf einem normalen Heim-Laptop und vor allem auf einem iPad funktionieren Sie nicht. Daher verwenden Mitarbeiter ihre Arbeitsmaschine auch von zu Hause aus - sie stellen eine Verbindung über den RDG-Dienst (Remote Desktop Gateway) her. Alles ist wie bei uns!

    Es stellte sich heraus, dass sowohl wir als auch der Kunde Skype for Business (ehemals MS Lync) als Bürotelefonzentrale und universelles Kommunikationsinstrument verwenden. Dieses Programm führt zusätzlich zu seiner unmittelbaren Verantwortung eine weitere aus - es kann jederzeit den Status der Anwesenheit des Benutzers im System feststellen. Ein Mitarbeiter nutzt also immer einen funktionierenden Computer für die Arbeit - Skype for Business steht immer drauf - Skype kennt immer den Status der Benutzerpräsenz ... Ein wenig geistiger Aufwand - und die Idee, eine Historie der Statusänderungen zu sammeln und einen darauf basierenden Arbeitsplan zu erstellen, war fest in unserem kollektiven Denken verankert. Es bleibt nur zu realisieren, was wir begonnen haben.

    Das Sammeln von Statistiken beim Kunden ergab natürlich keinen Sinn, weil Es ist nicht sichtbar, an welchem ​​Gerät der Mitarbeiter gerade arbeitet. Aus diesem Grund musste der Inhalt der Skype-Server-Datenbanken überprüft werden (wir sprechen natürlich über Skype4B-Unternehmensserver). Die entsprechenden Informationen zur Datenbankstruktur von Skype4B-Servern waren zwar nicht dokumentiert, der Zugriff darauf erforderte jedoch keine Entschlüsselungs- oder Dekompilierungsvorgänge. Unter Katze gibt es einige technische Details für Interessierte.

    Technische Details
    Plan:
    1. Datenbanken Skype For Business Server.
    2. RTCDYN-Basis:
      • Das Konzept des Kunden in RTCDYN.
      • Wir bekommen Kunden. Tabelle [RegistrarEndpoint].
      • Wir arbeiten mit Änderungen im Kundenstatus. Tabelle [PublishedInstance].
      • Kundenstatus. Spalte Verfügbarkeit.
    3. Journal der Anwesenheitsprotokolle.

    Skype For Business Server-Datenbanken


    Es gibt zwei Datenbanken, mit denen wir bei der Überwachung von Statusänderungen arbeiten:

    [rtc] - Enthält statische Informationen, die sich im Laufe der Zeit nicht ändern. Diese Datenbank enthält Informationen zu Benutzern, Kontaktdaten, Profilfotos, Statusmeldungen usw.

    [rtcdyn] - Enthält dynamische Informationen zu Statusänderungen von Clients (Programmen), die mit dem Skype For Business-Server verbunden sind.

    RTCDYN-Basis


    Wie oben erwähnt, enthält diese Datenbank dynamische Informationen zu Statusänderungen von Clients (Programmen), die mit dem Skype For Business-Server verbunden sind.

    Konzept des Kunden in RTCDYN

    Zuallererst sollte es mit dem Konzept des "Kunden" vereinbart werden. Dies ist in erster Linie ein Programm oder ein Webbrowser, über den die Verbindung zum Skype For Business-Server hergestellt wird. "Client" für die Verbindung erfordert einen Benutzernamen und ein Kennwort und enthält zusätzliche Informationen zum Gerät und zur Zeitzone. Es ist wichtig zu verstehen, dass die auf dem „Client“ gesammelten Informationen nur für den „Client“ gelten und nicht für den tatsächlichen Benutzer. Das heißt Die Informationen, die wir sammeln, hängen davon ab, wo der Benutzer den „Client“ startet.

    Betrachten Sie ein Beispiel:
    1. Benutzer A kann den Client innerhalb der Remotedesktopsitzung starten. Daher überträgt sein Client Informationen über den Computer innerhalb der Remotedesktopsitzung an den Skype For Business-Server.
    2. Benutzer A kann den Client auf einem Mobiltelefon starten, und daher werden ebenfalls Daten bezüglich des Mobiltelefons übertragen.

    Alle Informationen der "Kunden" sind voneinander unabhängig.

    Wir bekommen Kunden. Tabelle [RegistrarEndpoint]

    Nach dem Herstellen einer Verbindung zur Datenbank rtcdyn werden mehrere Tabellen angezeigt. Unter ihnen finden Sie die RegistrarEndpoint-Tabelle. Versuchen wir, einige Informationen aus dieser Tabelle zu extrahieren.

    select top 5 ContactInfo 
    from [rtcdyn].[dbo].[RegistrarEndpoint];



    Nach der Konvertierung der empfangenen Informationen werden Informationen zur Quelle der Verbindung zum Skype For Business-Server angezeigt.

    Zum Beispiel:

    P;sip:212.3.112.68:51024;transport=tls;ms-opaque=b68b30d990;ms-received-cid=608500;] ;;sip:lyncedge1-uk.point.local:5061;transport=tls;opaque=state:Ee.ag8rxSddCvwU5-K8q7K742RAAA;lrbwbyztosJ7NpwKGhwBHTHlngAA70f2c5f712 

    In dieser Zeile können Sie die IP-Adresse des Geräts extrahieren, von dem der „Client“ eine Verbindung herstellt.

    Ebenso können Sie Informationen aus der Spalte ClientApp extrahieren. Diese Spalte enthält Informationen zu der Anwendung, von der aus die Verbindung zum Skype For Business-Server selbst hergestellt wird.

    Beispiele für Werte, die in ClientApp enthalten sein können, sind:

    UCCAPI / 15.0.4753.1000 OC / 15.0.4753.1000 (Skype for Business)
    RTCC / 5.0.0.0 OWA / 15.00.1076.009


    Auf der Grundlage von ClientApp können Sie den Namen, den Clienttyp und dessen Version bestimmen.

    Wir arbeiten mit Änderungen im Kundenstatus. Tabelle [PublishedInstance]

    Die PublishedInstance-Tabelle wird automatisch ausgefüllt, wenn Informationen über die Änderung des Status (Aktivität) des "Clients" empfangen werden. Unter allen Spalten sind sie besonders interessant:

    PublisherId - Benutzerkonto-ID, die eine Verbindung zu Skype For Business herstellt;

    LastPubTime - Datum und Uhrzeit, zu der sich der Status des „Clients“ geändert hat;

    Daten - der Hauptteil der Informationen über den geänderten Status. Ermöglicht es Ihnen zu verstehen, was genau mit dem Status in einem bestimmten Zeitraum passiert ist. Eine ausführlichere Beschreibung der Informationen in der Spalte finden Sie in Kapitel 6 von Enhanced Presence Lync 2010.

    Wir extrahieren nur Informationen aus Daten zu Verfügbarkeit, TimeZoneBias, Gerät und PublisherId aus Daten.

    Separat sollte es über BoundEndpointId gesagt werden. Diese Spalte gibt die Kennung der Sitzung an, die jedes Mal festgelegt wird, wenn der Client mit dem Skype For Business-Server verbunden ist. Anhand dieser Kennung können wir zusätzliche Informationen zu dem Gerät ermitteln, von dem aus der „Client“ eine Verbindung herstellt. Auf diese Weise können Sie Statusänderungen für jedes Gerät einzeln vornehmen.

    Als Ergebnis erhalten wir nach Anwenden der Auswahl aus der Datenspalte, Gruppieren und Sortieren das folgende Ergebnis:


    Kundenstatus. Spalte Verfügbarkeit


    Alle Status in der Datenbank werden nur nach Zahlen geschrieben, und Microsoft gibt keine Informationen darüber, welcher Status was bedeutet. Es gibt nur allgemeine Informationen zu den Bereichen, die für verschiedene Aktivitäten reserviert sind.

    Zum Beispiel 15500 - weg, mobil. Oder 6700 - beschäftigt, präsentierend.

    Ich musste Zeit damit verbringen, Statistiken zu recherchieren und zu sammeln, um eine Tabelle mit Nachschlagewerken für Aktivitätsbereiche zu erstellen:

    In diesem Fall wird basierend auf dem Nachschlagewerk und der isav-Spalte bestimmt, ob die Zeit als aktiv angesehen wird oder nicht.

    Journal der Anwesenheitsprotokolle


    Neu eingehende Statusinformationen werden in einer separaten Datenbank gespeichert, die in keiner Weise den Datenbanken rtc und rtcdyn zugeordnet ist. Gleichzeitig sammeln wir allgemeine Informationen für die vergangenen Tage, um die Ausgabe von Berichten über die aktive und inaktive Zeit des „Kunden“ zu beschleunigen. Protokolle werden mit TimerJob oder bei Verwendung von SQL Express mit Windows-Zeitplänen gespeichert.


    Als Ergebnis haben wir vollständige Informationen darüber, wann und wie sich der Status des Benutzers geändert hat und von welchem ​​Gerät dieser Status bezogen wurde (in unserem speziellen Fall waren wir nur an Bürocomputern interessiert, aber niemand hat sich die Mühe gemacht, die Fantasie einzuschalten).

    Mithilfe dieser Informationen können Sie Informationen zum Arbeitszeitplan abrufen. Im Moment erhalten wir mit großer Sicherheit:
    • Ankunftszeit im Büro.
    • Zeit für den Beginn und das Ende der Mittagspause.
    • Zeit verlassen.
    • Wie viele Stunden wurden gearbeitet?
    • Hat der Angestellte abends von zu Hause aus gearbeitet?

    Die Textur reicht aus, um ein vollwertiges System zur Überwachung der Arbeitszeit aufzubauen, das sich jedoch auf den realen Arbeitsplatz eines Arbeiters der intellektuellen Front bezieht - eines Programmierers oder eines Support-Ingenieurs. Tatsächlich haben wir ein solches System implementiert, mit dem wir uns beeilen müssen.

    Sie können beispielsweise folgende Berichte erhalten:
    • Durchschnittliche und maximale Latenz für den Zeitraum.
    • Die gesamte Abwesenheitsgeschichte weist auf das Vorhandensein der Zustimmung des Leiters hin.
    • Außerschulische Zeit
    • Von zu Hause aus arbeiten - Das System empfängt Informationen von RDG-Gateways und Sie können sehen, ob ein Mitarbeiter lokal oder von zu Hause aus am Computer angemeldet ist.

    Wie in allen derartigen Systemen gibt es einen Urlaubsplan, Krankheitsurlaub, die Erlaubnis des Managers, von zu Hause aus zu arbeiten und andere nützliche Dinge.

    Eine weitere Funktion ist das persönliche Konto des Mitarbeiters und das Senden von Berichten an die E-Mail. Das heißt, das System positioniert sich nicht als "Spion" (wir sammeln heimlich Informationen über Sie und subtrahieren sie dann von Ihrem Gehalt), sondern als "Helfer" (wir zeigen Ihnen, dass Statistiken geführt werden, und wir geben die Möglichkeit, diese Statistiken zu analysieren und Schlussfolgerungen für uns zu ziehen). . Diese Funktion hat sich als sehr nützlich erwiesen - auch wenn alle Mitarbeiter und Mitarbeiter des Kunden verantwortungsbewusst sind, hat sich die durchschnittliche Anwesenheit des Mitarbeiters am Arbeitsplatz nach dem Beginn des Berichtsversands erhöht.

    Implementierung mit Screenshots des Systems:

    SkypeTime
    Persönliches Konto:


    Mitarbeiterbericht für den Zeitraum:


    Weitere Screenshots finden Sie auf unserer Website


    Wir können sagen, dass wir die Aufgabe gemeistert haben. Unser Kunde ist zufrieden, wir (mit diesem System selbst) sind zufrieden, Mitarbeiter, deren Aktivitäten kontrolliert werden ... zumindest nicht unzufrieden, und einige sind, wie oben erwähnt, dem System für strukturierte Arbeitszeitberichte und andere mitarbeiterorientierte Funktionen dankbar . Vielleicht sollte das System nicht dazu verwendet werden, ein Arbeitszeitblatt oder eine Gehaltsabrechnung zu führen, aber als Instrument, das dem Manager geschätzte Informationen über die Arbeit des Mitarbeiters liefert, ist es sehr effektiv. Es ist auch ein unschätzbares Werkzeug für einen Administrator-Mitarbeiter, der Informationen über Feiertage und Ferien aufbewahrt. Eine Situation wie - ein Angestellter im Urlaub, der Chef hat ihn gebeten, einen halben Tag von zu Hause aus zu arbeiten und dann diese Zeit an einem freien Tag zu nehmen - kann jetzt leicht verfolgt werden. Und die Möglichkeit, flexible Bedingungen zu konfigurieren, z. B. „Wenn um 9: 15 Nicht bei der Arbeit bedeutet Abwesenheit “oder sogar„ Sie können nicht öfter als zweimal pro Woche zu spät kommen. Wenn Sie nachts mit dem Kunden zusammengearbeitet haben, können Sie bis zum Mittagessen schlafen und dann von zu Hause aus arbeiten “ nicht zutreffend. Die Tatsache, dass auf den Computern der Mitarbeiter keine Spyware-Software vorhanden ist, wirkt sich positiv auf die Atmosphäre im Team aus. Und eine gute Arbeitsatmosphäre ist "laut britischen Wissenschaftlern" bis zu 80% des Arbeitserfolgs =)

    PS Ja, natürlich wäre es schön, die Statistiken der Arbeit im Internet anzusehen und eine Liste der installierten Programme zu sammeln, aber dies ist eine völlig andere Spionageebene, die mit einem Verlust der Teambindung behaftet ist. Darüber hinaus sind solche hoch entwickelten Betrüger in unserer Praxis äußerst selten, und dennoch zeigen sie sich schnell als wenig produktiv oder qualitativ minderwertig - so dass die Belohnung immer noch Helden findet.

    Mit freundlichen Grüßen, das Team der Firma Servilon.ru Servilon.com

    Jetzt auch beliebt: