AssignAnalystToIncidentOOO
Assigns analysts who are not out of the office to the shift handover incident. Use the ManageOOOusers automation to add or remove analysts from the out-of-office list. 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 use the link https://docs-cortex.paloaltonetworks.com/r/Cortex-XSOAR/6.x/Cortex-XSOAR-Playbook-Design-Guide/Automations and for Cortex XSOAR 8 Cloud use the link https://docs-cortex.paloaltonetworks.com/r/Cortex-XSOAR/8/Cortex-XSOAR-Cloud-Documentation/Create-a-script.
- Type
- python
- Pack
- ShiftManagement
Source
import random
from CommonServerPython import *
def main():
# args
list_name = demisto.getArg("listname")
oncall = demisto.getArg("oncall")
roles = demisto.getArg("roles")
assign_all = argToBoolean(demisto.getArg("assignAll"))
# get xsoar users
userinfo = demisto.executeCommand("getUsers", {"roles": roles, "onCall": oncall})
if is_error(userinfo):
return_error(f"Failed to get users: {get_error(userinfo)!s}")
# get OOO users
ooo_list = demisto.executeCommand("GetUsersOOO", {"listname": list_name})
if isError(ooo_list):
return_error(f"Failed to get users out of office: {get_error(ooo_list)!s}")
list_info = ooo_list[0].get("EntryContext").get("ShiftManagment.OOOUsers")
list_info = [i["username"] for i in list_info]
# Get Away Users
away_users_response = demisto.executeCommand("GetAwayUsers", {})
if is_error(away_users_response) or not away_users_response:
return_error(f"Failed to get away users: {get_error(away_users_response)!s}")
away_users: List[Dict] = away_users_response[0].get("EntryContext", {}).get("AwayUsers", [])
away_user_names: List[str] = [away_user["username"] for away_user in away_users] if away_users else []
# Build list of users that we can assign to
userinfo = userinfo[0]["Contents"]
non_OOO_list = [x["username"] for x in userinfo if x["username"] not in list_info and x["username"] not in away_user_names]
# Assign user to the Incident, if there is anyone to assign
if not non_OOO_list:
return_error(message="No users to assign")
elif assign_all:
# set the first user to be the owner
owner = non_OOO_list[0]
non_OOO_list.pop(0)
set_owner_res = demisto.executeCommand("setOwner", {"owner": owner})
if isError(set_owner_res):
return_error(f"Failed to set {owner} as owner: {get_error(set_owner_res)!s}")
# set the rest of the users as participans
for user in non_OOO_list:
assign_res = demisto.executeCommand("AssignAnalystToIncident", {"username": user})
if isError(assign_res):
return_error(f"Failed to assign {user} to incident: {get_error(assign_res)!s}")
if non_OOO_list:
return_results(f'Done, assigned {owner} as owner and {", ".join(non_OOO_list)} as prticipans.')
else:
return_results(f"Done, assigned {owner} as owner.")
else:
rand_user = random.choice(non_OOO_list)
set_owner_res = demisto.executeCommand("setOwner", {"owner": rand_user})
if isError(set_owner_res):
return_error(f"Failed to set {rand_user} as owner: {get_error(set_owner_res)!s}")
return_results(f"Done, assigned {rand_user} as owner")
if __name__ in ("__builtin__", "builtins", "__main__"):
main()
README
Assigns analysts who are not out of the office to the shift handover incident. Use the ManageOOOusers automation to add or remove analysts from the out-of-office list.
Permissions
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 | python3 |
| Tags | Shift Management, ooo |
| Cortex XSOAR Version | 5.5.0 |
Used In
This script is used in the following playbooks and scripts.
Shift handover
Inputs
| Argument Name | Description |
|---|---|
| roles | The list of roles from which to assign analysts to the shift handover incident. Can be an array or a comma-separated list. Leave empty to assign all analysts. |
| oncall | Whether to randomly assign analysts who are on call for the shift handover. Possible values: “true” and “false”. Requires Cortex XSOAR v5.5 or later. |
| listname | The name of the out-of-office list. Default is “OOO List”. |
| assignAll | Whether to assign all on-call analysts to the shift handover incident. Set to “true” to assign all on-call analysts. |
Outputs
There are no outputs for this script.