Der Eintrag "offcanvas-col1" existiert leider nicht.

Der Eintrag "offcanvas-col2" existiert leider nicht.

Der Eintrag "offcanvas-col3" existiert leider nicht.

Der Eintrag "offcanvas-col4" existiert leider nicht.

Die Telefonnummer wird mit JavaScript generiert.

Praxiswissen: Das Intranet im Griff haben

von
Praxiswissen: Das Intranet im Griff haben

Einführung

Zum Berufsalltag eines IT Consultants gehört das Arbeiten in Intranets und Webanwendungen, die häufig auf sehr unterschiedlichen technologischen Plattformen basieren. Oft handelt es sich um zeitkritische Themen und die gestellten Aufgaben sollten schnell erledigt werden. In der Regel erhält man als externer Dienstleister aber keine vollständige Administrator-Berechtigung. Falls die Vergabe einer solchen umfangreichen Berechtigung zwar möglich wäre, so sind die dahinterliegenden Prozesse vielfach bürokratisch und träge. Läuft seitens des Auftragsgebers alles rund, so sitzt der Flaschenhals oftmals bei der IT und ist entweder völlig überlastet oder an strikte und dadurch ausbremsende Prozesse gebunden. Ein anderes bekanntes Hemmnis kann die Anwendung selbst darstellen. Beispielsweise erlaubt Sharepoint 2013 On-Prem zwar das Anlegen und Verwalten von Query Rules. Es gibt aber keine Funktion, um alle vorhandenen Query Rules inkl. aller Einstellungen zu exportieren.

Die unglückliche Kombination aus dem Wunsch, zügig ans Ziel zu kommen und trotzdem alle bürokratischen Prozesse einzuhalten, führt nicht selten zu Misserfolgen bei IT-Projekten.

Der pragmatische Berater

Meiner Erfahrung nach kann es in den oben beschriebenen Situationen sehr vorteilhaft sein, einen gesunden Pragmatismus an den Tag zu legen.

Selbstverständlich müssen dabei trotzdem alle Vorschriften bzgl. Compliance und Sicherheit eingehalten werden!

Neben unterschiedlichsten pragmatischen Ansätzen wie der kurze Dienstweg oder der Kuhhandel, beziehe ich mich ausdrücklich auf einen Technologie-basierten, aber sehr pragmatischen Ansatz.

Das Beispiel-Szenario

Heutzutage verwendet wohl jedes größere Unternehmen einen firmeninternen Messenger (z. B. Slack oder TEAMS). Als Besitzer eines Kanals (bzw. eines TEAMS oder einer Gruppe), habe ich die Berechtigung Kollegen als neue Mitglieder zu meinem Kanal hinzuzufügen. In der Regel kann das Hinzufügen neuer Mitglieder nur einzeln und nur manuell vorgenommen werden. In unserem Beispiel-Szenario sollen 123 neue Mitglieder hinzugefügt werden und der Auftraggeber muss morgen mit der Arbeit in dem Kanal beginnen können.

Es gibt verschiedene Möglichkeiten diese dringliche Aufgabe zu lösen:

  • Nett wäre ein Batch-Import, aber diese Option gibt es leider nicht in der Zielanwendung.
  • Natürlich lassen sich neue Mitglieder programmatisch zum Kanal hinzufügen. Die benötigten Admin-Rechte für den Zugriff auf die API habe ich aber nicht und bekomme ich sicher nicht bis morgen.
  • Den berühmten Praktikanten gibt es nicht und rein rechnerisch würde ihm die verbleibende Zeit nicht reichen, um alle neuen Mitglieder hinzuzufügen.
  • Manche digitalen Arbeitsplätze kommen mit einer Automatisierungs-App (z. B. Power Automate von Microsoft 365) daher. In unserem Fall gehört leider der erforderliche Connector nicht zum Standart-Umfang der Software. Die Lizenzierung und Einführung eines passenden Connectors wäre zwar möglich, würde aber nicht rechtzeitig zur Verfügung stehen.
  • Selenium + Python :-)

Die Umsetzung

Ich setze schon seit vielen Jahren ganz gerne auf das Duo Python [1] und Selenium [2]. Mit der Zeit habe ich einerseits gewisse Fähigkeiten entwickelt, wie manche Dinge mit diesem Gespann gelöst werden können. Andererseits habe ich mir in der Vergangenheit eine umfangreiche Sammlung an Bausteinen angelegt, mit denen bestimmte Dinge erledigt werden können.

Die Voraussetzungen für mein Siegerpaar sind denkbar niedrig: ich benötige einen Computer mit Zugang zum Intranet bzw. zu den erforderlichen Web-Anwendungen. Oftmals reicht ein virtueller PC, z. B. Citrix Workspace [3]. Insbesondere benötigt man keine lokalen Admin-Rechte um Software installieren zu können. Problematisch wird es nur, wenn die Ausführung von nichtvertrauenswürdigem, weil eigenem Code verhindert wird.

Für die oben genannte Problemstellung benötige ich in etwa diese Bausteine aus meinem Werkzeugkasten:

  • CSV-Liste einlesen
  • Login zum System (hier: zum Messenger)
  • Personen-Picker

Zusätzlich ist auch etwas individueller Code erforderlich (z. B. für die Ausgabe oder für evtl. Benachrichtigungen). Fertig! Mehr ist dazu gar nicht zu sagen. Die Lösung ist eben sehr pragmatisch.

Der Vorteil

Ich würde das oben genannte Beispiel-Szenario gerne um eine Komponente erweitern, um zu zeigen, weshalb die vorgestellte Lösung so vorteilhaft ist. Angenommen unsere Liste an Kollegen, die als neue Mitglieder zum Kanal hinzugefügt werden sollen, besteht aus E-Mail-Adressen. Das Zielsystem verlangt aber keine E-Mail-Adresse, um den Kontakt hinzuzufügen, sondern es verlangt einen Kontonamen. In manchen Fällen lässt sich der Accountname aus der E-Mail Adresse ableiten, allerdings stößt man dabei leicht auf Probleme (z. B. neuer Nachname nach Heirat). Zwischen den Prozessschritten "Kontakt erfassen" und "Kontakt zum Kanal hinzufügen" muss also der Schritt "Kontoname ermitteln" eingefügt werden.

Die manuelle Ermittlung des Kontonamens ist kein Problem, jeder Mitarbeiter hat Lese-Zugriff auf das zentrale Mitarbeiterverzeichnis. Sucht man dort nach einer E-Mail-Adresse, wird beim Treffer auch der Kontoname angezeigt.

Für meinen pragmatischen Technologie-Ansatz bedeutet dies einfach den Einbau folgender Bausteine aus meinem Werkzeugkasten:

  • Login zum System (hier: Mitarbeiterverzeichnis)
  • Eingabe Suchbegriff

Selbstverständlich sind wieder 2-3 Zeilen eigenen Codes erforderlich, um alles miteinander zu verbinden. Und wieder: Fertig!

Der Bonustipp

Sollte sich für eine anstehende Aufgabe mal kein passender Baustein im eigenen Werkzeugkasten befinden und sich auch nichts Vielversprechendes im Netz finden lassen, dann kann vielleicht die Browser Erweiterung Selenium IDE [4] gute Dienste leisten.

Mit der Erweiterung können Browser-Aktionen (Klicks, Texteingabe, Mausbewegungen, etc.) aufgezeichnet und abgespielt werden. Zum Funktionsumfang gehört auch ein leistungsfähiger Exporter, der z. B. Python-Skripte schreiben kann.

Die Kombination aus der einmaligen Aufzeichnung des manuellen Vorgehens und dem anschließenden Generieren von Python Code als Basis für die weitere Programmierung, führt schnell zu brauchbaren Ergebnissen.

Der Blick über den Tellerrand

Am Markt gibt es eine große Anzahl an kommerziellen und freien Automatisierungs-Tools. Manche Anwendungen erfordern ein umfangreiches Training, andere setzen auf Low Code bzw. Citizen Developer [5].

Ich möchte zwei Beispiele nennen, um zu erklären weshalb ich das vorgestellte Duo aus Selenium und Python bevorzuge.

Kofax RPA (ehemals Kapow) [6] ist zwar sehr leistungsfähig und zuverlässig, aber auch teuer und aufwändig. Die Anwendung hat seine Berechtigung wenn es um das zuverlässige und nachhaltige Erfassen von Daten geht. Für das hier vorgestellte Szenario erscheint mir die Software als überdimensioniert und unpassend.

Scrapy [7] ist kostenlos, leichtgewichtig und einfach zu bedienen. Allerdings macht es die fehlende Browser Unterstützung an manchen Stellen kompliziert (z. B. im Microsoft 365 Umfeld).

Mögliche Anwendungsgebiete

Die vorgestellte Lösung ist so flexibel, dass Sie fast immer eingesetzt werden kann, wenn ein Vorgang webbasiert ist. Nachfolgende Liste zeigt eine Auswahl an Aufträgen, bei denen ich die Lösung erfolgreich eingesetzt habe:

  • Kontakte hinzufügen / entfernen
  • Berechtigungen vergeben / entziehen
  • URLs überprüfen / Defekte Links finden
  • Listen auslesen (z. B. Query Rules in SharePoint)
  • Seiten identifizieren und klassifizieren
  • Screenshots erstellen
  • Daten erfassen / einfplegen
  • Anwendungstests

Fazit

In diesem Blogpost habe ich einen für mich immer wieder hilfreichen, Technologie-basierten pragmatischen Ansatz vorgestellt, wie man als IT-Consultant das Intranet des Kunden voll im Griff haben kann. Die vorgeschlagene Lösung lässt sich sehr schnell, unkompliziert und auf vielfältigste Weise einsetzen. Mit der Zeit habe ich mir eine umfangreiche Sammlung an "Code-Snippets" angelegt, die ich bei Bedarf schnell und unkompliziert zusammenfügen kann. Damit kann ich ziemlich flexibel auf neue Anforderungen reagieren.

Kategorien: ConfluenceIT-ConsultingJiraKapowPortaleProjektmanagementPythonSharepointTesting

Zurück

© 2022 exensio GmbH
Einstellungen gespeichert
Datenschutzeinstellungen

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell, während andere uns helfen, diese Website und Ihre Erfahrung zu verbessern.

Sie können Ihre Einwilligung jederzeit ändern oder widerrufen, indem Sie auf den Link in der Datenschutzerklärung klicken.

Zu den gesetzlichen Rechenschaftspflichten gehört die Einwilligung (Opt-In) zu protokollieren und archivieren. Aus diesem Grund wird Ihre Opt-In Entscheidung in eine LOG-Datei geschrieben. In dieser Datei werden folgende Daten gespeichert:

 

  • IP-Adresse des Besuchers
  • Vom Besucher gewählte Datenschutzeinstellung (Privacy Level)
  • Datum und Zeit des Speicherns
  • Domain
You are using an outdated browser. The website may not be displayed correctly. Close