ContextReplica
Extracts the current incident context or issue context and merges with global contexts and then downloads it as a flattened JSON file. So it will be replica json data of what we see in an Incident or Issue context in UI view.
- Type
- python
- Pack
- ContextReplica
Source
import demistomock as demisto # noqa: F401
from CommonServerPython import * # noqa: F401
import json
import traceback
from typing import Any
def resolve_root_key() -> str:
env_metadata: dict[str, Any] = demisto.demistoVersion() or {}
sys_platform: str = env_metadata.get("platform", "").lower()
sys_module: str = env_metadata.get("module", "").lower()
if sys_module in ["agentix", "x5", "x2"] or sys_platform == "x2":
return "issue"
return "incident"
def main() -> None:
try:
global_ctx: dict[str, Any] = demisto.context() or {}
record_data: dict[str, Any] = demisto.incident() or {}
root_key: str = resolve_root_key()
custom_fields: Any = record_data.get("CustomFields")
if isinstance(custom_fields, dict):
collisions = [key for key in custom_fields if key in record_data and key != "CustomFields"]
if collisions:
demisto.debug(
f"Key collision detected between top-level incident fields and CustomFields: {collisions}. "
"CustomFields values will overwrite top-level values."
)
record_data.update(custom_fields)
record_data.pop("CustomFields", None)
global_ctx[root_key] = record_data
serialized_payload: str = json.dumps(global_ctx, indent=4, cls=ISOEncoder)
return_results(fileResult("full_context.json", serialized_payload, file_type=EntryType.ENTRY_INFO_FILE))
except Exception as err:
demisto.error(f"Context extraction failed. Traceback: {traceback.format_exc()}")
return_error(f"Failed to generate context artifact. Exception: {str(err)}")
if __name__ in ("__main__", "__builtin__", "builtins"):
main()
README
Extracts the current incident context or issue context, merges it with global contexts, and then downloads it as a flattened JSON file. This provides a replica of the JSON data seen in an Incident or Issue context in the UI.
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
| Tags | Utility, Context |
Inputs
There are no inputs for this script.
Outputs
| Path | Description | Type |
|---|---|---|
| File.Name | The name of the downloaded context file | string |
| File.EntryID | The Entry ID of the downloaded context file | string |