Derdack DE

Alarmierung und mobile Störfallreaktion für kritische Systeme

Derdack DE
  • Szenarien
    • Übersicht
    • IT-Rufbereitschaften alarmieren
    • Service-Alarmierung für IT-Outsourcing Anbieter
    • Mobile Alarmierung für Produktion & Industrie
    • Kritische IT-Alarmierung für Banken & Finanzunternehmen
    • Technischer Außendienst für Energie & Versorger
    • Andere Branchen
  • Produkte
    • Übersicht
    • Enterprise Alert®
      • Übersicht
      • Alarmieren
      • Rufbereitschaft
      • Zusammenarbeit
      • Fernwirken per App
      • Mobile App
      • Integration
      • Technischer Support
      • Online Wissensdatenbank
      • FAQ
    • SIGNL4® Cloud
    • Referenzen & Mehr
  • Kaufen
    • Übersicht
    • Derdack Vertrieb
    • Derdack Partner finden
    • Azure Marketplace
  • Über Derdack
    • Über Derdack
    • Jobs und Karriere
    • Partnerprogramm
    • Strategische Partner
    • Derdack Podcast
    • Kontakt Derdack
  • News & Blog
  • Demo anfragen
    • en en
  • News & Blog

    • Home
    • News & Blog
    • Technical
    • Vertretungen für Rufbereitschaften in der mobilen App definieren

    Vertretungen für Rufbereitschaften in der mobilen App definieren

    • 9. Mai 2017
    • Technical
    Vertretungen für Rufbereitschaften in der mobilen App definieren

    Ihr Kollege fragt, ob Sie mal für eine Stunde seinen Bereitschaftsdienst übernehmen können. Natürlich sagen Sie ja. Wäre es nicht schön, diese temporäre Vertretung direkt von der mobilen App aus konfigurieren zu können? Das ist möglich und Sie benötigen hierfür lediglich zwei Dinge in Enterprise Alert:

    1. Eine Fernaktion mit einem Formular zum Setzen der Vertretung
    2. Ein Script, welches die Vertretung in der Datenbank setzt

    Los geht’s ….

    Fernaktion

    Das Formular der Fernaktion dient zum Setzen (oder Löschen) der Vertretung.

    Sie können die Fernaktion unter „Fernaktionen“ -> „Fernaktionen“ -> „New Erstellen“ hinzufügen und dann, wie folgt, konfigurieren.

    Allgemein:

     

    Aktion:

     

    Unter Aktion legen Sie fest, dass das entsprechende Skript (siehe unten) ausgeführt werden soll. Die angegebenen Parameter werden dann an das Skript übergeben. In diesem Beispiel haben wir die entsprechenden Team-Namen manuell vordefiniert, so dass diese dann in der Fernaktion ausgewählt werden können.
    Skript

    Die obige Fernaktion ruft ein Skript auf, welches das Setzen der Vertretung in der Datenbank übernimmt. In unserem Beispiel sieht das Skript, wie folgt, aus.

    /*
    This script writes values into a database table.
    
    Add;Delete
    
    00:00;00:30;01:00;01:30;02:00;02:30;03:00;03:30;04:00;04:30;05:00;05:30;06:00;06:30;07:00;07:30;08:00;08:30;09:00;09:30;10:00;10:30;11:00;11:30;12:00;12:30;13:00;13:30;14:00;14:30;15:00;15:30;16:00;16:30;17:00;17:30;18:00;18:30;19:00;19:30;20:00;20:30;21:00;21:30;22:00;22:30;23:00;23:30
    
    2017;2018;2019;2020
    
    01;02;03;04;05;06;07;08;09;10;11;12
    
    01;02;03;04;05;06;07;08;09;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;2;26;27;28;29;30;31
    
    © 2017 Derdack GmbH, www.derdack.com
    Copyright 2016 - 2017 Derdack GmbH, www.derdack.com, Enterprise Alert is a registered trademark of Derdack GmbH
    
    Author: Hanno Ferdinand
    Versions:
    16.03.2017 HF 1.0 Initial version
    */
    var strVersion = "RA_SetStandIns 16.03.2017 v1.0 ";
    
    /*
     =============================================================================
     CONFIGURATION
     =============================================================================
     */
    
    // Enterprise Alert database connection string
    var APPCONFIG_DB_EA_CONNECTIONSTRING = "Driver=SQL Server Native Client 10.0;Server=(local);Trusted_Connection=Yes;Database=MMEA";
    
    
    //Testfunctions
    //EAScriptHost.LogDebug("Service2Ticket() :" + SetStandIn("Add", "hferdi","Database", "2017-03-20","12:00","13:00")); 
    //EAScriptHost.LogDebug("Service2Ticket() :" + SetStandIn("Delete", "hferdi","Database", "2017-03-20","12:00","13:00")); 
    
    EAScriptHost.LogInfo("Execute Remote action Startup " + strVersion);
    
    /*
     * Still to set 
     * 
     */
    function SetStandIn(Modus,Teamname,TimeStart,TimeEnd,Year,Month,Day,Username) {
    
     //Modus Delete StandIn or Add StandIn
     //shortDate - Today, Tomorrow, After tomorrow
     
     //Time Start 00:00 00:30 01:00 
     
     var oConnInternalDB = null;
     var bInTransInternalDB = false;
     var oExec = 1; 
     var allOut = ""; 
     var allError = ""; 
     
     try {
    
     // Open the db connection
     //
     oConnInternalDB = new ActiveXObject("ADODB.Connection");
     oConnInternalDB.IsolationLevel = 1048576; // Set the isolation level
     // to
     // Serializable
     oConnInternalDB.Open(APPCONFIG_DB_EA_CONNECTIONSTRING);
     EAScriptHost.LogDebug("Db Internal Connection Opened");
     oConnInternalDB.BeginTrans();
     
     //find Team and PlanUserID 
     //SELECT [TeamOnCallPlans].[OnCallPlanID], [OnCallPlanUsers].[ID], [OnCallPlanUsers].[ProfileDisplayName], MMPROFILES.PROFNAME
     //FROM [TeamOnCallPlans],[OnCallPlanUsers], MMPROFILES where [TeamOnCallPlans].[OnCallPlanID] = [OnCallPlanUsers].[OnCallPlanID] and MMPROFILES.ID = OnCallPlanUsers.[ProfileID] and TeamDisplayName like 'Database' and MMPROFILES.PROFNAME like 'hferdi'
     
     //Modus,Username,Teamname,ShortDate,Date,TimeStart,TimeEnd
     EAScriptHost.LogDebug("Modus " + Modus + " " + Username + " " + Teamname + " " + Year + " " + Month + " " +Day + " " + TimeStart + " " + TimeEnd + " ()");
     
     var sDateStart = Year + "-" + Month + "-" +Day + " " + TimeStart + ":00.000"; 
     var sDateEnd = Year + "-" + Month + "-" +Day + " " + TimeEnd + ":00.000"; 
     
     //Insert into 
     if (Modus.indexOf("Add") > -1 ){ 
     
     //in die internen Tabelle: OriginatorAddress 
     /*ID OnCallPlanUserID DateStart DateEnd Hierarchy Options
     181 20 2017-03-16 16:00:00.000 2017-03-16 17:00:00.000 0 3
     */
     EAScriptHost.LogDebug("INSERT INTO OnCallPlanShifts (OnCallPlanUserID, DateStart, DateEnd, Hierarchy, Options) Values ((SELECT TOP 1 [OnCallPlanUsers].[ID] FROM [TeamOnCallPlans],[OnCallPlanUsers], MMPROFILES where [TeamOnCallPlans].[OnCallPlanID] = [OnCallPlanUsers].[OnCallPlanID] and MMPROFILES.ID = OnCallPlanUsers.[ProfileID] and TeamDisplayName like '" + Teamname + "' and MMPROFILES.PROFNAME like '" + Username + "'), '" + sDateStart + "', '" + sDateEnd + "',0,3)"); 
     oExec = oConnInternalDB.Execute("INSERT INTO OnCallPlanShifts (OnCallPlanUserID, DateStart, DateEnd, Hierarchy, Options) Values ((SELECT TOP 1 [OnCallPlanUsers].[ID] FROM [TeamOnCallPlans],[OnCallPlanUsers], MMPROFILES where [TeamOnCallPlans].[OnCallPlanID] = [OnCallPlanUsers].[OnCallPlanID] and MMPROFILES.ID = OnCallPlanUsers.[ProfileID] and TeamDisplayName like '" + Teamname + "' and MMPROFILES.PROFNAME like '" + Username + "'), '" + sDateStart + "', '" + sDateEnd + "',0,3)");
     allOut = "Standin Inserted"; 
     EAScriptHost.LogInfo("Standin Inserted ");
     
     }
     
     if (Modus.indexOf("Delete") > -1 ){ 
     
     //Delete FROM OnCallPlanShifts where OnCallPlanUserID = (SELECT TOP 1 [OnCallPlanUsers].[ID] FROM [TeamOnCallPlans],[OnCallPlanUsers], MMPROFILES where [TeamOnCallPlans].[OnCallPlanID] = [OnCallPlanUsers].[OnCallPlanID] and MMPROFILES.ID = OnCallPlanUsers.[ProfileID] and TeamDisplayName like '" + Teamname + "' and MMPROFILES.PROFNAME like '" + Username + "') and DateStart = '" + sDateStart + "' and DateEnd = '" + sDateEnd + "' and Options = 3 
     oExec = oConnInternalDB.Execute("Delete FROM OnCallPlanShifts where OnCallPlanUserID = (SELECT TOP 1 [OnCallPlanUsers].[ID] FROM [TeamOnCallPlans],[OnCallPlanUsers], MMPROFILES where [TeamOnCallPlans].[OnCallPlanID] = [OnCallPlanUsers].[OnCallPlanID] and MMPROFILES.ID = OnCallPlanUsers.[ProfileID] and TeamDisplayName like '" + Teamname + "' and MMPROFILES.PROFNAME like '" + Username + "') and DateStart = '" + sDateStart + "' and DateEnd = '" + sDateEnd + "' and Options = 3");
     allOut = "Standin deleted"; 
     EAScriptHost.LogInfo("Standin deleted ");
     }
     
     oConnInternalDB.CommitTrans();
     oExec = 0; 
    
     } catch (e) { // catch all thrown errors
    
     try {
     EAScriptHost.LogError("Error processing event. Error message (Exception): " + e.message);
    
     if (bInTransInternalDB == true && bInTransInternalDB != null) {
     oConnInternalDB.RollbackTrans();
     }
     allError = allError + e.message; 
     
     } catch (e2) {
     EAScriptHost.LogError("Error processing exception. " + e2.message);
     allError = allError + e2.message;
     }
    
     } finally {
    
     try {
    
     // Release all resources at the end of message processing
     //
     
     if (oConnInternalDB != null) {
     oConnInternalDB.Close();
     oConnInternalDB = null;
     }
     EAScriptHost.LogDebug("Resources released.");
    
     } catch (e3) {
     EAScriptHost.LogError("Error releasing resources. " + e3.message);
     
     }
    
     if (oExec != 0) {
     EAScriptHost.LogError("Error Exited with code: " + oExec);
     RAContext.SetExecutionResult(RAContext.ExecutionError, allOut + allError, oExec);
     } else {
     EAScriptHost.LogInfo("ExecuteCommand: Successful executed values inserted");
     RAContext.SetExecutionResult(RAContext.ExecutionOK, allOut, 0);
     }
     }
    }
    
    //Returns an ADODB.Recordset object for the specified query
    function DbGetRS(oConn, strSQL) {
    
     // Set some constants
     var adOpenStatic = 3;
     var adLockBatchOptimistic = 4;
    
     // Declare our variables
     var oRS;
    
     // Create the Recordset object
     oRS = new ActiveXObject("ADODB.Recordset");
    
     // Populate the Recordset object with a SQL query
     oRS.Open(strSQL, oConn, adOpenStatic, adLockBatchOptimistic, 0);
    
     // Return the Recordset
     return oRS;
    }
    
    
    //Gets a date string for the date object
    //
    function GetDateString(date)
    {
     
     var strDate = date.getFullYear().toString() + "-" + GetDoubleDigit((date.getMonth() + 1).toString()) + "-" + GetDoubleDigit(date.getDate().toString()) + " " + GetDoubleDigit(date.getHours().toString()) + ":" + GetDoubleDigit(date.getMinutes().toString()) + ":" + GetDoubleDigit(date.getSeconds().toString()) + "." + GetTripleDigit(date.getMilliseconds().toString());
     return strDate;
     
    }
    
    // Gets a double digit for the date
    //
    function GetDoubleDigit(strText)
    { 
    
     var strOutput;
     if (strText.length == 1)
     strOutput = "0" + strText;
     else 
     strOutput = strText; 
     return strOutput;
     
    }
    
    function GetTripleDigit(strText)
    { 
     var strOutput;
     if (strText.length == 1)
     strOutput = "00" + strText;
     else if (strText.length == 2)
     strOutput = "0" + strText;
     else
     strOutput = strText; 
     return strOutput;
     
    }
    

    Das ist alles, was Sie brauchen und Sie können es noch entsprechend auf Ihre Anforderungen hin anpassen. Eine recht komfortable Ergänzung ist zum Beispiel das automatische Befüllen der Team-Namen mittels eines zweiten Skriptes. Das ist dann aber etwas für einen zukünftigen Blog-Artikel.

    Tagged

    AppRufbereitschaftTeamVertretung

    Teilen

    Ähnliche Beiträge

    Enterprise Alert 9.4.1 enthält Fehlerkorrekturen und die überarbeitete Version der Sentinel Connector App

    31. Januar 2023

    Kritische System Alarme via SIGNL4

    29. Dezember 2022

    Enterprise Alert 9.4 Update führt Fernaktionen in hybriden Szenarien sowie Proxy-Unterstützung für MS Teams ein

    25. Oktober 2022

    Fernaktionen per mobiler App im hybriden Setup

    18. Oktober 2022

    Über uns

    Derdack ist einer der weltweit führenden Anbieter für die automatisierte Alarmierung von Rufbereitschaften und Wartungsteams direkt aus technischen Anlagen, IT-Systemen und kritischen Infrastrukturen.

    Meist gelesen

    • Enterprise Alert 2016 allows for an unlimited Number of Voice Lines Enterprise Alert 2016 allows for an unlimited Number of Voice Lines
    • Enterprise Alert 2019 ab sofort verfügbar
    • SIGNL4 gestartet- Entdecken Sie eine neue Ära der mobilen Alarmierung
    • Alarme an Microsoft Teams weiterleiten
    • Derdack Background IT-Automatisierung am Beispiel der IT-Alarmierung
    • How to add additional Event Parameters in Enterprise Alert How to add additional Event Parameters in Enterprise Alert
    • SCOM Alarmierung mobil und zuverlässig machen
    • Kid shouting through vintage phone. Verständliche Alarmierungen per Sprach-Anruf

    Kategorien

    • Banken & Versicherungen (5)
    • Beratung (2)
    • Business (18)
    • Cloud Services (2)
    • Energie & Versorgung (7)
    • Events (17)
    • IT Ops (13)
    • Kunden (17)
    • News (35)
    • Produktion & Industrie (7)
    • Software (5)
    • Technical (113)
    • Transport (1)

    Schlagwörter

    Active Directory Alarm Alarmierung Alarmierungsrichtlinie alert alert notification anruf Automatisierung Azure BMC Database derdack derdack Dienstplanung distribution lists enterprise alert Enterprise Alert Enterprise Alert 2016 Gartner HPE HPE ITOM Incident Management Industrie 4.0 Integration IT-Alarmierung IT-Betrieb IT-Sicherheit microsoft microsoft Mobile App monitoring Notfallalarmierung on-call Operative Alarmierung Partner Referenz release rest api Rufbereitschaft Schichtplanung SCOM security groups Störfallmanagement System Center update

    Folge uns

    • Twitter
    • Facebook
    • LinkedIn
    • XING
    • YouTube
    • Vimeo
    • Home
    • News & Blog
    • Technical
    • Vertretungen für Rufbereitschaften in der mobilen App definieren

    KONTAKT:
    Intl: +49 331 29878-0

    CH: +41 (31) 539 19 90
    US: +1 (202) 4 70-0885
    UK: +44 (20) 88167095

    KONTAKT VIA EMAIL:
    info@derdack.com

    FIRMENSITZ:
    US & Europa

    NEWSLETTER:
    Hier anmelden!

    KARRIERE:
    Aktuelle Jobangebote

    EVENTS

    • Keine Veranstaltungen
    • Wo wir helfen
    • Produkte
    • Kaufen
    • Über Derdack
    • News & Blog
    • Jetzt Testen
    • Cookie-Richtlinie (EU)
    • Twitter
    • LinkedIn
    • XING
    • YouTube
    • Vimeo

     © 2022 Derdack GmbH – Impressum, Datenschutz

    • Szenarien
      • Übersicht
      • IT-Rufbereitschaften alarmieren
      • Service-Alarmierung für IT-Outsourcing Anbieter
      • Mobile Alarmierung für Produktion & Industrie
      • Kritische IT-Alarmierung für Banken & Finanzunternehmen
      • Technischer Außendienst für Energie & Versorger
      • Andere Branchen
    • Produkte
      • Übersicht
      • Enterprise Alert®
        • Übersicht
        • Alarmieren
        • Rufbereitschaft
        • Zusammenarbeit
        • Fernwirken per App
        • Mobile App
        • Integration
        • Technischer Support
        • Online Wissensdatenbank
        • FAQ
      • SIGNL4® Cloud
      • Referenzen & Mehr
    • Kaufen
      • Übersicht
      • Derdack Vertrieb
      • Derdack Partner finden
      • Azure Marketplace
    • Über Derdack
      • Über Derdack
      • Jobs und Karriere
      • Partnerprogramm
      • Strategische Partner
      • Derdack Podcast
      • Kontakt Derdack
    • News & Blog
    • Demo anfragen
    Cookie-Zustimmung verwalten
    Wir verwenden Cookies, um unsere Website und unseren Service zu optimieren.
    Funktional Immer aktiv
    Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
    Vorlieben
    Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
    Statistiken
    Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
    Marketing
    Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
    Optionen verwalten Verwalten von Dienstleistungen Anbieter verwalten Lese mehr über diese Zwecke
    Cookie Einstellungen
    {title} {title} {title}