Dedup - Generic v2 Deprecated Hidden

Deprecated. Use the Dedup Generic v3 playbook instead. This playbook identifies duplicate incidents using one of the supported methods.

Common Playbooks · 14 tasks · 9 inputs · 2 outputs

Details

IDDedup - Generic v2
From Version5.0.0
Tasks14

README

Deprecated. Please use Dedup Generic v3. This playbook identifies duplicate incidents using one of the supported methods.

Dependencies

This playbook uses the following sub-playbooks, integrations, and scripts.

Sub-playbooks

This playbook does not use any sub-playbooks.

Integrations

This playbook does not use any integrations.

Scripts

  • FindSimilarIncidentsByText
  • CloseInvestigationAsDuplicate
  • FindSimilarIncidents
  • GetDuplicatesMlv2

Commands

  • linkIncidents

Playbook Inputs


Name Description Default Value Required
DuplicateMethod Select a method for identifying duplicate incidents. Can be “ml”, “rules”, or “text”. ‘rules’ - defines specific rules, such as similar incident fields & labels. This method works best if you know the exact logic to find similar incidents. ‘text’ - text similarity, based on TF-IDF - unique word frequency in the incidents (based on similar incident fields) ‘ml’ - machine learning model, which was trained on similar phishing incidents. Considers similar labels, incident fields, and indicators.   Required
DuplicateThreshold The similarity threshold by which to consider an incident as a duplicate (0-1), where “1” is a duplicate and “0” is not a duplicate. Use this argument in the ML or text methods. 0.9 Required
TimeFrameHours The time frame (in hours) in which to check for duplicate incident candidates. 72 Required
IgnoreCloseIncidents Whether to ignore closed incidents. Can be “yes” or “no”. yes Required
MaxNumberOfCandidates The maximum number of candidates to check for duplication. 1000 Optional
CloseAsDuplicate Whether to close incidents identified as duplicates. Can be “true” or “false”. true Optional
TimeField The Time field by which to query for past incidents to check for duplicate incident candidates. Values: created, occurred, modified created Optional
similarLabelsKeys A comma-separated list of similar label keys. Comma separated value. Also supports allowing X different words between labels, within the following way: label_name:X, where X is the number of words. X can also be ‘*’ for contains. For example: the value “Email/subject:*” will consider email subject similar, if one is substring of the other. Relevant for ‘Rules’ method.   Optional
similarIncidentFields Fields to compare. Can be label name, incident fields or custom fields. Comma separated value. Relevant for ‘Text’ and ‘Rules’ methods. name,type,details Optional

Playbook Outputs


Path Description Type
isSimilarIncidentFound Whether a similar incident was found? Can be “true” or “false”. boolean
similarIncident The similar incident. unknown

Playbook Image


Dedup - Generic v2

Inputs

  • DuplicateMethod — Select a method for identifying duplicate incidents. Can be "ml", "rules", or "text". 'rules' - defines specific rules, such as similar incident fields & labels. This method works best if you know the exact logic to find similar incidents. 'text' - text similarity, based on TF-IDF - unique word frequency in the incidents (based on similar incident fields) 'ml' - machine learning model, which was trained on similar phishing incidents. Considers similar labels, incident fields, and indicators.
  • DuplicateThreshold — The similarity threshold by which to consider an incident as a duplicate (0-1), where "1" is a duplicate and "0" is not a duplicate. Use this argument in the ML or text methods.
  • TimeFrameHours — The time frame (in hours) in which to check for duplicate incident candidates.
  • IgnoreCloseIncidents — Whether to ignore closed incidents. Can be "yes" or "no".
  • MaxNumberOfCandidates — The maximum number of candidates to check for duplication.
  • CloseAsDuplicate — Whether to close incidents identified as duplicates. Can be "true" or "false".
  • TimeField — The Time field by which to query for past incidents to check for duplicate incident candidates. Values: created, occurred, modified
  • similarLabelsKeys — A comma-separated list of similar label keys. Comma separated value. Also supports allowing X different words between labels, within the following way: label_name:X, where X is the number of words. X can also be '*' for contains. For example: the value "Email/subject:*" will consider email subject similar, if one is substring of the other. Relevant for 'Rules' method.
  • similarIncidentFields — Fields to compare. Can be label name, incident fields or custom fields. Comma separated value. Relevant for 'Text' and 'Rules' methods.

Outputs

  • isSimilarIncidentFound — Whether a similar incident was found? Can be "true" or "false".
  • similarIncident — The similar incident.

Commands used

linkIncidents

Flowchart

ml rules text yes yes yes Start Start Select method to identify duplicates Select method to identify... Identify duplicates by text - FindSimilarIncidentsByText Identify duplicates by text FindSimilarIncidentsByText Check if duplicates were found Check if duplicates were ... Identify similar incidents using rules - FindSimilarIncidents Identify similar incident... FindSimilarIncidents Identify duplicates using ML - GetDuplicatesMlv2 Identify duplicates using ML GetDuplicatesMlv2 Close investigation as duplicate - CloseInvestigationAsDuplicate Close investigation as du... CloseInvestigationAsDuplicate Done Done Text Text ML ML Rules Rules Close duplicates? Close duplicates? Link similar incidents - linkIncidents Link similar incidents linkIncidents Is Core REST API enabled? Is Core REST API enabled?
id: Dedup - Generic v2
version: -1
name: Dedup - Generic v2
hidden: true
description: Deprecated. Use the Dedup Generic v3 playbook instead. This playbook identifies duplicate incidents using one of the supported methods.
starttaskid: "0"
tasks:
  "0":
    id: "0"
    taskid: 4bb4cba3-1da4-4356-831e-87ca6523087a
    type: start
    task:
      id: 4bb4cba3-1da4-4356-831e-87ca6523087a
      version: -1
      name: ""
      iscommand: false
      brand: ""
      description: ''
    nexttasks:
      '#none#':
      - "1"
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 480,
          "y": -40
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "1":
    id: "1"
    taskid: 48f0cedf-fad2-47db-81fd-348b062f41fe
    type: condition
    task:
      id: 48f0cedf-fad2-47db-81fd-348b062f41fe
      version: -1
      name: Select method to identify duplicates
      description: |-
        Select one of the following methods to identify duplicate incidents in Cortex XSOAR.
        - ml: Machine learning model, which is trained mostly on phishing incidents.
        -rules: Rules help identify duplicate incidents when the logic is well defined, for example, same label or custom fields.
        -text: Statistics algorithm that compares text, which is generally useful for phishing incidents.
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "9"
      ml:
      - "11"
      rules:
      - "12"
      text:
      - "10"
    separatecontext: false
    conditions:
    - label: ml
      condition:
      - - operator: isEqualString
          left:
            value:
              complex:
                root: inputs.DuplicateMethod
                transformers:
                - operator: toLowerCase
            iscontext: true
          right:
            value:
              simple: ml
    - label: rules
      condition:
      - - operator: isEqualString
          left:
            value:
              complex:
                root: inputs.DuplicateMethod
                transformers:
                - operator: toLowerCase
            iscontext: true
          right:
            value:
              simple: rules
    - label: text
      condition:
      - - operator: isEqualString
          left:
            value:
              complex:
                root: inputs.DuplicateMethod
                transformers:
                - operator: toLowerCase
            iscontext: true
          right:
            value:
              simple: text
    view: |-
      {
        "position": {
          "x": 480,
          "y": 105
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "4":
    id: "4"
    taskid: 14149636-c0cc-41de-88dd-4b91a49b87ce
    type: regular
    task:
      id: 14149636-c0cc-41de-88dd-4b91a49b87ce
      version: -1
      name: Identify duplicates by text
      description: ""
      scriptName: FindSimilarIncidentsByText
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "5"
    scriptarguments:
      ignoreClosedIncidents:
        simple: ${inputs.IgnoreCloseIncidents}
      maxResults: {}
      maximumNumberOfIncidents:
        complex:
          root: inputs.MaxNumberOfCandidates
      minTextLength: {}
      preProcessText: {}
      textFields:
        complex:
          root: inputs.similarIncidentFields
      threshold:
        complex:
          root: inputs.DuplicateThreshold
      timeField:
        simple: ${inputs.TimeField}
      timeFrameHours:
        complex:
          root: inputs.TimeFrameHours
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 10,
          "y": 485
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "5":
    id: "5"
    taskid: b6bd2e9d-c6ca-401c-87f5-7dd2b6355bb3
    type: condition
    task:
      id: b6bd2e9d-c6ca-401c-87f5-7dd2b6355bb3
      version: -1
      name: Check if duplicates were found
      description: Checks if any duplicate incidents were found.
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "9"
      "yes":
      - "13"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isTrue
          left:
            value:
              simple: isSimilarIncidentFound
            iscontext: true
    view: |-
      {
        "position": {
          "x": 480,
          "y": 660
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "6":
    id: "6"
    taskid: c5bb7095-cdc3-4a83-8ae4-ed792366f468
    type: regular
    task:
      id: c5bb7095-cdc3-4a83-8ae4-ed792366f468
      version: -1
      name: Identify similar incidents using rules
      description: |-
        Finds similar incidents by common incident keys, labels, custom fields or context keys.
        It's highly recommended to use incident keys if possible (e.g., "type" for the same incident type).
        For best performance, it's recommended to avoid using context keys if possible (for example, if the value also appears in a label key, use the label).
      scriptName: FindSimilarIncidents
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "5"
    scriptarguments:
      filterQuery: {}
      hoursBack:
        complex:
          root: inputs.TimeFrameHours
      ignoreClosedIncidents:
        simple: ${inputs.IgnoreCloseIncidents}
      incidentFieldsAppliedCondition: {}
      maxNumberOfIncidents:
        complex:
          root: inputs.MaxNumberOfCandidates
      maxResults: {}
      similarContextKeys: {}
      similarCustomFields: {}
      similarIncidentFields:
        complex:
          root: inputs.similarIncidentFields
      similarIncidentKeys: {}
      similarLabelsKeys:
        complex:
          root: inputs.similarLabelsKeys
      skipMissingValues: {}
      timeField:
        simple: ${inputs.TimeField}
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 480,
          "y": 485
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "7":
    id: "7"
    taskid: 8cbb827c-a410-4f16-8a98-41026ce58f81
    type: regular
    task:
      id: 8cbb827c-a410-4f16-8a98-41026ce58f81
      version: -1
      name: Identify duplicates using ML
      description: ""
      scriptName: GetDuplicatesMlv2
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "5"
    scriptarguments:
      UseLocalEnvDuplicatesInLastDays: {}
      compareEmailLabels: {}
      compareIncidentTimeDiff: {}
      compareIndicators: {}
      compareOtherLabels: {}
      ignoreClosedIncidents:
        simple: ${inputs.IgnoreCloseIncidents}
      ipComparisonSubnetMask: {}
      maxCandidates: {}
      maxNumberOfIncidents:
        complex:
          root: inputs.MaxNumberOfCandidates
      maxResults: {}
      threshold:
        complex:
          root: inputs.DuplicateThreshold
      timeField:
        simple: ${inputs.TimeField}
      timeFrameHours:
        complex:
          root: inputs.TimeFrameHours
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 950,
          "y": 485
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "8":
    id: "8"
    taskid: 821fea71-8442-4647-8281-52c916a04b43
    type: regular
    task:
      id: 821fea71-8442-4647-8281-52c916a04b43
      version: -1
      name: Close investigation as duplicate
      description: Closes the investigation as a duplicate to one of the incidents identified.
      scriptName: CloseInvestigationAsDuplicate
      type: regular
      iscommand: false
      brand: ""
    nexttasks:
      '#none#':
      - "9"
    scriptarguments:
      duplicateId:
        complex:
          root: similarIncident
          accessor: rawId
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 1200,
          "y": 1000
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "9":
    id: "9"
    taskid: c1f06a79-d539-4853-8140-f1f879a8f137
    type: title
    task:
      id: c1f06a79-d539-4853-8140-f1f879a8f137
      version: -1
      name: Done
      type: title
      iscommand: false
      brand: ""
      description: ''
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 470,
          "y": 1460
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "10":
    id: "10"
    taskid: 31571cc9-8aed-458c-8ea2-f1cb69acb262
    type: title
    task:
      id: 31571cc9-8aed-458c-8ea2-f1cb69acb262
      version: -1
      name: Text
      type: title
      iscommand: false
      brand: ""
      description: ''
    nexttasks:
      '#none#':
      - "4"
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 10,
          "y": 340
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "11":
    id: "11"
    taskid: 4072604a-379d-4c5b-8e9f-b74b0e4d0184
    type: title
    task:
      id: 4072604a-379d-4c5b-8e9f-b74b0e4d0184
      version: -1
      name: ML
      type: title
      iscommand: false
      brand: ""
      description: ''
    nexttasks:
      '#none#':
      - "7"
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 950,
          "y": 340
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "12":
    id: "12"
    taskid: 58c2edb1-ada1-4220-844d-805f1da22ae9
    type: title
    task:
      id: 58c2edb1-ada1-4220-844d-805f1da22ae9
      version: -1
      name: Rules
      type: title
      iscommand: false
      brand: ""
      description: ''
    nexttasks:
      '#none#':
      - "6"
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 480,
          "y": 340
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "13":
    id: "13"
    taskid: 0eaa279f-7d04-469d-8bcd-0ca1f7942c88
    type: condition
    task:
      id: 0eaa279f-7d04-469d-8bcd-0ca1f7942c88
      version: -1
      name: Close duplicates?
      description: ""
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "15"
      "yes":
      - "8"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isEqualString
          left:
            value:
              complex:
                root: inputs.CloseAsDuplicate
                transformers:
                - operator: toLowerCase
            iscontext: true
          right:
            value:
              simple: "true"
    view: |-
      {
        "position": {
          "x": 970,
          "y": 830
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "14":
    id: "14"
    taskid: 2f6d5087-c0f1-47e3-8065-06cc25ced46a
    type: regular
    task:
      id: 2f6d5087-c0f1-47e3-8065-06cc25ced46a
      version: -1
      name: Link similar incidents
      description: Links similar incidents.
      script: Builtin|||linkIncidents
      type: regular
      iscommand: true
      brand: Builtin
    nexttasks:
      '#none#':
      - "9"
    scriptarguments:
      action: {}
      incidentId: {}
      linkedIncidentIDs:
        complex:
          root: similarIncident
          accessor: rawId
    separatecontext: false
    view: |-
      {
        "position": {
          "x": 750,
          "y": 1180
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
  "15":
    id: "15"
    taskid: 04d3848d-57da-47ab-827d-8950c9063c32
    type: condition
    task:
      id: 04d3848d-57da-47ab-827d-8950c9063c32
      version: -1
      name: Is Core REST API enabled?
      description: Checks whether the Core REST API integration is enabled.
      type: condition
      iscommand: false
      brand: ""
    nexttasks:
      '#default#':
      - "9"
      "yes":
      - "14"
    separatecontext: false
    conditions:
    - label: "yes"
      condition:
      - - operator: isExists
          left:
            value:
              complex:
                root: modules
                filters:
                - - operator: isEqualString
                    left:
                      value:
                        simple: modules.brand
                      iscontext: true
                    right:
                      value:
                        simple: Core REST API
                - - operator: isEqualString
                    left:
                      value:
                        simple: modules.state
                      iscontext: true
                    right:
                      value:
                        simple: active
            iscontext: true
    view: |-
      {
        "position": {
          "x": 750,
          "y": 1000
        }
      }
    note: false
    timertriggers: []
    ignoreworker: false
    skipunavailable: false
    quietmode: 0
view: |-
  {
    "linkLabelsPosition": {
      "1_9_#default#": 0.32,
      "5_9_#default#": 0.28
    },
    "paper": {
      "dimensions": {
        "height": 1565,
        "width": 1570,
        "x": 10,
        "y": -40
      }
    }
  }
inputs:
- key: DuplicateMethod
  value: {}
  required: true
  description: Select a method for identifying duplicate incidents. Can be "ml", "rules", or "text". 'rules' - defines specific rules, such as similar incident fields & labels. This method works best if you know the exact logic to find similar incidents. 'text' - text similarity, based on TF-IDF - unique word frequency in the incidents (based on similar incident fields) 'ml' - machine learning model, which was trained on similar phishing incidents. Considers similar labels, incident fields, and indicators.
  playbookInputQuery:
- key: DuplicateThreshold
  value:
    simple: "0.9"
  required: true
  description: The similarity threshold by which to consider an incident as a duplicate (0-1), where "1" is a duplicate and "0" is not a duplicate. Use this argument in the ML or text methods.
  playbookInputQuery:
- key: TimeFrameHours
  value:
    simple: "72"
  required: true
  description: The time frame (in hours) in which to check for duplicate incident candidates.
  playbookInputQuery:
- key: IgnoreCloseIncidents
  value:
    simple: "yes"
  required: true
  description: Whether to ignore closed incidents. Can be "yes" or "no".
  playbookInputQuery:
- key: MaxNumberOfCandidates
  value:
    simple: "1000"
  required: false
  description: The maximum number of candidates to check for duplication.
  playbookInputQuery:
- key: CloseAsDuplicate
  value:
    simple: "true"
  required: false
  description: Whether to close incidents identified as duplicates. Can be "true" or "false".
  playbookInputQuery:
- key: TimeField
  value:
    simple: created
  required: false
  description: 'The Time field by which to query for past incidents to check for duplicate incident candidates. Values: created, occurred, modified'
  playbookInputQuery:
- key: similarLabelsKeys
  value: {}
  required: false
  description: 'A comma-separated list of similar label keys. Comma separated value. Also supports allowing X different words between labels, within the following way: label_name:X, where X is the number of words. X can also be ''*'' for contains. For example: the value "Email/subject:*" will consider email subject similar, if one is substring of the other. Relevant for ''Rules'' method.'
  playbookInputQuery:
- key: similarIncidentFields
  value:
    simple: name,type,details
  required: false
  description: Fields to compare. Can be label name, incident fields or custom fields. Comma separated value. Relevant for 'Text' and 'Rules' methods.
  playbookInputQuery:
outputs:
- contextPath: isSimilarIncidentFound
  description: Whether a similar incident was found? Can be "true" or "false".
  type: boolean
- contextPath: similarIncident
  description: The similar incident.
  type: unknown
fromversion: 5.0.0
tests:
- No tests
deprecated: true