CopyContextToField

Copy a context key to an incident field of multiple incidents, based on an incident query. This automation runs using the default Limited User role, unless you explicitly change the permissions. For more information, see the section about permissions here: - For Cortex XSOAR 6 see https://docs-cortex.paloaltonetworks.com/r/Cortex-XSOAR/6.x/Cortex-XSOAR-Playbook-Design-Guide/Automations - For Cortex XSOAR 8 Cloud see https://docs-cortex.paloaltonetworks.com/r/Cortex-XSOAR/8/Cortex-XSOAR-Cloud-Documentation/Create-a-script - For Cortex XSOAR 8.7 On-prem see https://docs-cortex.paloaltonetworks.com/r/Cortex-XSOAR/8.7/Cortex-XSOAR-On-prem-Documentation/Create-a-script

python · Common Scripts

Source

from CommonServerPython import *


def get_context(incident_id):
    res = demisto.executeCommand("getContext", {"id": incident_id})
    try:
        return res[0]["Contents"].get("context") or {}
    except Exception:
        return {}


res = demisto.executeCommand("getIncidents", {"query": demisto.args()["incidentsQuery"], "limit": int(demisto.args()["limit"])})
incidents = res[0]["Contents"]["data"]
src_context_key = demisto.args()["sourceContextKey"]
target_incident_field = demisto.args()["targetIncidentField"]
list_separator = demisto.args()["listSeparator"]
success_count = 0
failed_count = 0
skipped_count = 0
for i in incidents:
    incident_id = i["id"]
    context = get_context(incident_id)
    value = demisto.dt(context, src_context_key)
    if isinstance(value, list) and len(value) > 0:
        if len(value) == 1:
            value = value[0]
        elif isinstance(value[0], STRING_TYPES):
            value = list_separator.join(value)
    if value and not isinstance(value, list) and not isinstance(value, dict):
        res = demisto.executeCommand("setIncident", {target_incident_field: value, "id": i["id"]})
        if isError(res[0]):
            failed_count += 1
        else:
            success_count += 1
    else:
        skipped_count += 1

if success_count > 0:
    return_results(f"Update incidents: {success_count} success")
if skipped_count > 0:
    return_results(f"Skipped {skipped_count} incidents due to missing value")
if failed_count > 0:
    return_results(f"Failed to update {failed_count} incidents with setIncident error")

README

Copy a context key to an incident field of multiple incidents, based on an incident query.

This automation runs using the default Limited User role, unless you explicitly change the permissions.
For more information, see the section about permissions here: For Cortex XSOAR 6, see the https://docs-cortex.paloaltonetworks.com/r/Cortex-XSOAR/6.x/Cortex-XSOAR-Playbook-Design-Guide/Automations for Cortex XSOAR 8 Cloud, see the https://docs-cortex.paloaltonetworks.com/r/Cortex-XSOAR/8/Cortex-XSOAR-Cloud-Documentation/Create-a-script for Cortex XSOAR 8 On-prem, see the https://docs-cortex.paloaltonetworks.com/r/Cortex-XSOAR/8.7/Cortex-XSOAR-On-prem-Documentation/Create-a-script.

Script Data


Name Description
Script Type python2
Tags Utility
Cortex XSOAR Version 5.0.0

Inputs


Argument Name Description
sourceContextKey The context key from which to get the value.
targetIncidentField The incident field to set with the value.
incidentsQuery The incidents query on which to apply the copy process. For example, to apply this to all incidents of type “Phishing”, use the query: “type:Phishing”.
limit The maximum number of incidents to edit. Default is 1,000.
listSeparator Concatenates list values.

Outputs


There are no outputs for this script.