Adding Incident URL to Email

%3CLINGO-SUB%20id%3D%22lingo-sub-1453931%22%20slang%3D%22en-US%22%3EAdding%20Incident%20URL%20to%20Email%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1453931%22%20slang%3D%22en-US%22%3E%3CP%3EI%20have%20seen%20a%20few%20people%20ask%20how%20to%20get%20the%20Incident%20URL%20to%20show%20up%20in%20an%20email%20when%20calling%20a%20playbook.%20I%20was%20able%20to%20get%20this%20working%20by%20manually%20constructing%20the%20URL.%20I%20would%20consider%20this%20more%20of%20a%20workaround%2C%20the%20URL%20format%20could%20change%20at%20any%20time%20on%20Microsoft's%20end.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EEssentially%2C%20what%20we%20are%20doing%20is%20adding%20the%20Incident%20ID%20onto%20the%20base%20URL%3A%26nbsp%3B%20%3CA%20href%3D%22https%3A%2F%2Fportal.azure.com%2F%23asset%2FMicrosoft_Azure_Security_Insights%2FIncident%2F%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fportal.azure.com%2F%23asset%2FMicrosoft_Azure_Security_Insights%2FIncident%2F%3C%2FA%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3COL%3E%3CLI%3EWithin%20the%20Logic%20App%2C%20you%20will%20need%20to%20get%20the%20Incident%20Details%3C%2FLI%3E%3CLI%3EThe%20Incident%20Details%20will%20need%20to%20be%20parsed%20by%20the%20JSON%20parser%2C%20the%20schema%20is%20at%20the%20bottom%20of%20this%20post%3C%2FLI%3E%3CLI%3EThen%20Initialize%20a%20variable%20using%20the%20Base%20URL%20Value%3A%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fportal.azure.com%2F%23asset%2FMicrosoft_Azure_Security_Insights%2FIncident%2F%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fportal.azure.com%2F%23asset%2FMicrosoft_Azure_Security_Insights%2FIncident%2F%3C%2FA%3E%26nbsp%3Band%20adding%20the%20Id%20parameter%20from%20the%20Parse%20JSON%20action%3C%2FLI%3E%3CLI%3EThen%20you%20can%20insert%20that%20variable%20into%20your%20email%20body%3C%2FLI%3E%3C%2FOL%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EWithin%20your%20logicapp%20it%20will%20look%20similar%20to%20this%3A%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22IncidentURL.png%22%20style%3D%22width%3A%20606px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F197901i72464407E896EB43%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22IncidentURL.png%22%20alt%3D%22IncidentURL.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EJSON%20Schema%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-json%22%3E%3CCODE%3E%7B%0A%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%22etag%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22id%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22kind%22%3A%20%7B%7D%2C%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22AssignedTo%22%3A%20%7B%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22CaseNumber%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22integer%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22CloseReason%22%3A%20%7B%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22ClosedReasonText%22%3A%20%7B%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22CreatedTimeUtc%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Description%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22EndTimeUtc%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22FirstAlertTimeGenerated%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Labels%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22array%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22LastAlertTimeGenerated%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22LastUpdatedTimeUtc%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Metrics%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22properties%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22SecurityAlert%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22integer%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22RelatedAlertIds%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22items%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22array%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Severity%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22StartTimeUtc%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Status%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Title%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22object%22%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22tags%22%3A%20%7B%7D%2C%0A%20%20%20%20%20%20%20%20%22type%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22string%22%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20%22type%22%3A%20%22object%22%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1453970%22%20slang%3D%22en-US%22%3ERe%3A%20Adding%20Incident%20URL%20to%20Email%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1453970%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F572555%22%20target%3D%22_blank%22%3E%40mperrotta%3C%2FA%3E%26nbsp%3BThis%20is%20great.%26nbsp%3B%20Nice%20job!%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EI%20also%20have%20a%20KQL%20query%20that%20parses%20it%20out%20of%20AzureActivity%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Frod-trent%2FSentinelKQL%2Fblob%2Fmaster%2FSentinelIncidentURLs-%2520ALL.txt%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgithub.com%2Frod-trent%2FSentinelKQL%2Fblob%2Fmaster%2FSentinelIncidentURLs-%2520ALL.txt%3C%2FA%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1462655%22%20slang%3D%22en-US%22%3ERe%3A%20Adding%20Incident%20URL%20to%20Email%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1462655%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F572555%22%20target%3D%22_blank%22%3E%40mperrotta%3C%2FA%3E%26nbsp%3B%3A%20Great%20workaround!%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ENote%20that%20the%20incident%20URL%20is%20available%20through%20the%20API%20(see%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-rest-api-specs%2Fblob%2Fmaster%2Fspecification%2Fsecurityinsights%2Fresource-manager%2FMicrosoft.SecurityInsights%2Fpreview%2F2019-01-01-preview%2Fexamples%2Fincidents%2FGetIncidentById.json%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3Ehere%3C%2FA%3E)%20and%20should%20not%20be%20very%20hard%20to%20call%20from%20Logic%20Apps.%20We%20have%20also%20started%20private%20preview%20for%20triggering%20Playbooks%20on%20incident%20creation%2C%20which%20will%20provide%20easier%20access%20to%20incident%20details%2C%20including%20the%20URL.%26nbsp%3B%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E
Highlighted
Occasional Contributor

I have seen a few people ask how to get the Incident URL to show up in an email when calling a playbook. I was able to get this working by manually constructing the URL. I would consider this more of a workaround, the URL format could change at any time on Microsoft's end.

 

Essentially, what we are doing is adding the Incident ID onto the base URL:  https://portal.azure.com/#asset/Microsoft_Azure_Security_Insights/Incident/

 

  1. Within the Logic App, you will need to get the Incident Details
  2. The Incident Details will need to be parsed by the JSON parser, the schema is at the bottom of this post
  3. Then Initialize a variable using the Base URL Value: https://portal.azure.com/#asset/Microsoft_Azure_Security_Insights/Incident/ and adding the Id parameter from the Parse JSON action
  4. Then you can insert that variable into your email body

 

Within your logicapp it will look similar to this:

 

IncidentURL.png

 

JSON Schema:

{
    "properties": {
        "etag": {
            "type": "string"
        },
        "id": {
            "type": "string"
        },
        "kind": {},
        "name": {
            "type": "string"
        },
        "properties": {
            "properties": {
                "AssignedTo": {},
                "CaseNumber": {
                    "type": "integer"
                },
                "CloseReason": {},
                "ClosedReasonText": {},
                "CreatedTimeUtc": {
                    "type": "string"
                },
                "Description": {
                    "type": "string"
                },
                "EndTimeUtc": {
                    "type": "string"
                },
                "FirstAlertTimeGenerated": {
                    "type": "string"
                },
                "Labels": {
                    "type": "array"
                },
                "LastAlertTimeGenerated": {
                    "type": "string"
                },
                "LastUpdatedTimeUtc": {
                    "type": "string"
                },
                "Metrics": {
                    "properties": {
                        "SecurityAlert": {
                            "type": "integer"
                        }
                    },
                    "type": "object"
                },
                "RelatedAlertIds": {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "Severity": {
                    "type": "string"
                },
                "StartTimeUtc": {
                    "type": "string"
                },
                "Status": {
                    "type": "string"
                },
                "Title": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "tags": {},
        "type": {
            "type": "string"
        }
    },
    "type": "object"
}

 

 

2 Replies
Highlighted

@mperrotta This is great.  Nice job!

 

I also have a KQL query that parses it out of AzureActivity:

 

https://github.com/rod-trent/SentinelKQL/blob/master/SentinelIncidentURLs-%20ALL.txt

Highlighted

@mperrotta : Great workaround!

 

Note that the incident URL is available through the API (see here) and should not be very hard to call from Logic Apps. We have also started private preview for triggering Playbooks on incident creation, which will provide easier access to incident details, including the URL.