{
  "apiVersion": "63.0",
  "label": "Lead Set CountryCode from Country",
  "description": "Before Lead is saved, look up Country_Dictionary__c by Full_Name__c to derive CountryCode.",
  "status": "Active",
  "processType": "AutoLaunchedFlow",
  "start": {
    "triggerOrder": 500,
    "object": "Lead",
    "triggerType": "RecordBeforeSave",
    "recordTriggerType": "CreateAndUpdate",
    "filterLogic": "and",
    "filters": [
      {"field": "Country", "operator": "IsChanged", "value": {"booleanValue": true}},
      {"field": "Country", "operator": "IsNull", "value": {"booleanValue": false}}
    ],
    "connector": {"targetReference": "Get_Country_Dict"}
  },
  "recordLookups": [
    {
      "name": "Get_Country_Dict",
      "label": "Get Country Dictionary",
      "object": "Country_Dictionary__c",
      "outputReference": "country_dict",
      "filterLogic": "and",
      "filters": [
        {
          "field": "Full_Name__c",
          "operator": "EqualTo",
          "value": {"elementReference": "$Record.Country"}
        }
      ],
      "getFirstRecordOnly": true,
      "connector": {"targetReference": "Check_Found"},
      "faultConnector": {"targetReference": "Done"}
    },
    {
      "name": "Get_Region",
      "label": "Get Region from Countries_Region__c",
      "object": "Countries_Region__c",
      "outputReference": "region_record",
      "filterLogic": "and",
      "filters": [
        {
          "field": "Name",
          "operator": "EqualTo",
          "value": {"elementReference": "$Record.CountryCode"}
        }
      ],
      "getFirstRecordOnly": true,
      "connector": {"targetReference": "Check_Region_Found"},
      "faultConnector": {"targetReference": "Done"}
    }
  ],
  "decisions": [
    {
      "name": "Check_Found",
      "label": "Country found in dictionary?",
      "defaultConnector": {"targetReference": "Done"},
      "defaultConnectorLabel": "Not Found — skip",
      "rules": [
        {
          "name": "Found",
          "label": "Found",
          "conditionLogic": "and",
          "conditions": [
            {"leftValueReference": "country_dict", "operator": "IsNotBlank"}
          ],
          "connector": {"targetReference": "Set_CountryCode"}
        }
      ]
    },
    {
      "name": "Check_Region_Found",
      "label": "Region found and not already set on the record?",
      "defaultConnector": {"targetReference": "Done"},
      "defaultConnectorLabel": "Not Found or Already Set — skip",
      "rules": [
        {
          "name": "Region_Found",
          "label": "Region Found",
          "conditionLogic": "and",
          "conditions": [
            {"leftValueReference": "region_record", "operator": "IsNotBlank"},
            {"leftValueReference": "$Record.Region__c", "operator": "IsNull", "rightValue": {"booleanValue": true}}
          ],
          "connector": {"targetReference": "Set_Region"}
        }
      ]
    }
  ],
  "assignments": [
    {
      "name": "Set_CountryCode",
      "label": "Set CountryCode on triggering record",
      "assignmentItems": [
        {
          "assignToReference": "$Record.CountryCode",
          "operator": "Assign",
          "value": {"elementReference": "country_dict.Name"}
        }
      ],
      "connector": {"targetReference": "Get_Region"}
    },
    {
      "name": "Set_Region",
      "label": "Set Region__c on triggering record",
      "assignmentItems": [
        {
          "assignToReference": "$Record.Region__c",
          "operator": "Assign",
          "value": {"elementReference": "region_record.Region_Name__c"}
        }
      ],
      "connector": {"targetReference": "Done"}
    },
    {
      "name": "Done",
      "label": "Done"
    }
  ]
}
