[2025-12-25 18:30:33] [INFO] === STARTING MULTI-AGENCY ROUTING TEST ===
[2025-12-25 18:30:33] [INFO] Using Mailbox ID: 68920395733981a47
[2025-12-25 18:30:33] [INFO] Connected to real API: https://stationboss.net/login
[2025-12-25 18:30:33] [INFO] File size: 5855 bytes
[2025-12-25 18:30:34] [INFO] Loaded real mailbox: N/A
[2025-12-25 18:30:34] [INFO] Mailbox default saasclientId: 681942a25bc58c3ab
[2025-12-25 18:30:34] [INFO] Mailbox assigned agencies: ["681a1d681d6140e0c","681942a25bc58c3ab"]
[2025-12-25 18:30:34] [INFO] Mailbox dispatch stations: ["681a4332a2e490051","6819761cc9478253f"]
[2025-12-25 18:30:34] [INFO] MOCK: Would create FTPFiles record with ID: TEST_FTP_694d82ca02d91
[2025-12-25 18:30:34] [INFO] About to extract fields from XML. File size: 5855 bytes
[2025-12-25 18:30:34] [INFO] Number of mappings: 24
[2025-12-25 18:30:34] [INFO] Starting XML parsing. Content length: 5855
[2025-12-25 18:30:34] [INFO] XML parsed successfully. Root element: CombinedIncidentVehicleData
[2025-12-25 18:30:34] [INFO] Processing 24 field mappings
[2025-12-25 18:30:34] [INFO] Mapping #1: Extracting 'IncidentData.ProblemName' => 'incidentTypeValue1'
[2025-12-25 18:30:34] [INFO]   -> Found value: FTEST-Fire Test Call
[2025-12-25 18:30:34] [INFO]   -> Set field 'incidentTypeValue1' = "FTEST-Fire Test Call"
[2025-12-25 18:30:34] [INFO] Mapping #2: Extracting 'IncidentData.LocationName' => 'businessName'
[2025-12-25 18:30:34] [INFO]   -> Found value: @MVFD Station 1
[2025-12-25 18:30:34] [INFO]   -> Set field 'businessName' = "@MVFD Station 1"
[2025-12-25 18:30:34] [INFO] Mapping #3: Extracting 'IncidentData.PostalCode' => 'nERISIncidentPostalCode'
[2025-12-25 18:30:34] [INFO]   -> Found value: 37379
[2025-12-25 18:30:34] [INFO]   -> Set field 'nERISIncidentPostalCode' = 37379
[2025-12-25 18:30:34] [INFO] Mapping #4: Extracting 'IncidentData.AddressHouseNumber' => 'incidentLocationStreetNumber'
[2025-12-25 18:30:34] [INFO]   -> Found value: 1705
[2025-12-25 18:30:34] [INFO]   -> Set field 'incidentLocationStreetNumber' = 1705
[2025-12-25 18:30:34] [INFO] Mapping #5: Extracting 'IncidentData.AddressStreetName' => 'streetName'
[2025-12-25 18:30:34] [INFO]   -> Found value: MOWBRAY
[2025-12-25 18:30:34] [INFO]   -> Set field 'streetName' = "MOWBRAY"
[2025-12-25 18:30:34] [INFO] Mapping #6: Extracting 'IncidentData.CrossStreet' => 'incidentLocationCross'
[2025-12-25 18:30:34] [INFO]   -> Found value: CAREY RD/ARNAT DR
[2025-12-25 18:30:34] [INFO]   -> Set field 'incidentLocationCross' = "CAREY RD\/ARNAT DR"
[2025-12-25 18:30:34] [INFO] Mapping #7: Extracting 'IncidentData.ResponseDate' => 'alarm'
[2025-12-25 18:30:34] [INFO]   -> Found value: 2025-12-24T07:40:27.91-05:00
[2025-12-25 18:30:34] [INFO]   -> Set field 'alarm' = "2025-12-24 12:40:27"
[2025-12-25 18:30:34] [INFO] Mapping #8: Extracting 'IncidentData.TimeFirstUnitEnroute' => 'enroute'
[2025-12-25 18:30:34] [INFO]   -> Found value: 0001-01-01T00:00:00
[2025-12-25 18:30:34] [INFO]   -> Set field 'enroute' = null
[2025-12-25 18:30:34] [INFO] Mapping #9: Extracting 'IncidentData.TimeFirstUnitArrived' => 'onScene'
[2025-12-25 18:30:34] [INFO]   -> Found value: 0001-01-01T00:00:00
[2025-12-25 18:30:34] [INFO]   -> Set field 'onScene' = null
[2025-12-25 18:30:34] [INFO] Mapping #10: Extracting 'IncidentData.TimeCallClosed' => ["cleared","inService"]
[2025-12-25 18:30:34] [INFO]   -> Found value: 0001-01-01T00:00:00
[2025-12-25 18:30:34] [INFO]   -> Set field 'cleared' = null
[2025-12-25 18:30:34] [INFO]   -> Set field 'inService' = null
[2025-12-25 18:30:34] [INFO] Mapping #11: Extracting 'IncidentData.Latitude' => 'nERISIncidentLatitude'
[2025-12-25 18:30:34] [INFO]   -> Found value: 35.274781
[2025-12-25 18:30:34] [INFO]   -> Set field 'nERISIncidentLatitude' = 35.27478099999999727742761024273931980133056640625
[2025-12-25 18:30:34] [INFO] Mapping #12: Extracting 'IncidentData.Longitude' => 'nERISIncidentLongitude'
[2025-12-25 18:30:34] [INFO]   -> Found value: -85.218002
[2025-12-25 18:30:34] [INFO]   -> Set field 'nERISIncidentLongitude' = -85.2180019999999984747773851267993450164794921875
[2025-12-25 18:30:34] [INFO] Mapping #13: Extracting 'IncidentData.TimeFirstUnitAssigned' => 'dispatched'
[2025-12-25 18:30:34] [INFO]   -> Found value: 0001-01-01T00:00:00
[2025-12-25 18:30:34] [INFO]   -> Set field 'dispatched' = null
[2025-12-25 18:30:34] [INFO] Mapping #14: Extracting 'Vehicles.VehicleData[0].UnitName' => ["cADVehicleID","name"]
[2025-12-25 18:30:34] [INFO]   -> No value found (null or empty)
[2025-12-25 18:30:34] [INFO] Mapping #15: Extracting 'Vehicles.VehicleData[0].TimeClearedCall' => 'timeunitclear'
[2025-12-25 18:30:34] [INFO]   -> No value found (null or empty)
[2025-12-25 18:30:34] [INFO] Mapping #16: Extracting 'Vehicles.VehicleData[0].TimeArrivedAtScene' => 'timeonscene'
[2025-12-25 18:30:34] [INFO]   -> No value found (null or empty)
[2025-12-25 18:30:34] [INFO] Mapping #17: Extracting 'Vehicles.VehicleData[0].TimeStaged' => 'timestaging'
[2025-12-25 18:30:34] [INFO]   -> No value found (null or empty)
[2025-12-25 18:30:34] [INFO] Mapping #18: Extracting 'Vehicles.VehicleData[0].TimeEnroute' => 'timeenroutetoscene'
[2025-12-25 18:30:34] [INFO]   -> No value found (null or empty)
[2025-12-25 18:30:34] [INFO] Mapping #19: Extracting 'Vehicles.VehicleData[0].TimeAssigned' => 'timedispatch'
[2025-12-25 18:30:34] [INFO]   -> No value found (null or empty)
[2025-12-25 18:30:34] [INFO] Mapping #20: Extracting 'IncidentData.AddressStreetType' => 'streetType'
[2025-12-25 18:30:34] [INFO]   -> Found value: PIKE
[2025-12-25 18:30:34] [INFO]   -> Set field 'streetType' = "PIKE"
[2025-12-25 18:30:34] [INFO] Mapping #21: Extracting 'IncidentData.UnitJurisdictionCaseNumber' => ["incidentInternalId","dispatchRunNumber"]
[2025-12-25 18:30:34] [INFO]   -> No value found (null or empty)
[2025-12-25 18:30:34] [INFO] Mapping #22: Extracting 'IncidentData.IncidentNumber' => ["policeReportNumber","cADNumber"]
[2025-12-25 18:30:34] [INFO]   -> Found value: 2025-12-33756
[2025-12-25 18:30:34] [INFO]   -> Set field 'policeReportNumber' = "2025-12-33756"
[2025-12-25 18:30:34] [INFO]   -> Set field 'cADNumber' = "2025-12-33756"
[2025-12-25 18:30:34] [INFO] Mapping #23: Extracting 'IncidentData.Comments.Comment' => ["dispatchNotes","cADLog"]
[2025-12-25 18:30:34] [INFO]   -> No value found (null or empty)
[2025-12-25 18:30:34] [INFO] Mapping #24: Extracting 'IncidentData.AgencyIdentifier' => 'cADAgencyIdentifier'
[2025-12-25 18:30:34] [INFO]   -> Found value: MFD
[2025-12-25 18:30:34] [INFO]   -> Set field 'cADAgencyIdentifier' = "MFD"
[2025-12-25 18:30:34] [INFO] Finished extracting fields. Total fields extracted: 18
[2025-12-25 18:30:34] [INFO] Concatenating street name and type
[2025-12-25 18:30:34] [INFO]   -> Combined street name: MOWBRAY PIKE
[2025-12-25 18:30:34] [INFO] Built locationCoordinates from lat/lng: 35.274781,-85.218002
[2025-12-25 18:30:34] [INFO] Extracted data: {
    "incidentTypeValue1": "FTEST-Fire Test Call",
    "businessName": "@MVFD Station 1",
    "nERISIncidentPostalCode": 37379,
    "incidentLocationStreetNumber": 1705,
    "streetName": "MOWBRAY PIKE",
    "incidentLocationCross": "CAREY RD\/ARNAT DR",
    "alarm": "2025-12-24 12:40:27",
    "enroute": null,
    "onScene": null,
    "cleared": null,
    "inService": null,
    "nERISIncidentLatitude": 35.27478099999999727742761024273931980133056640625,
    "nERISIncidentLongitude": -85.2180019999999984747773851267993450164794921875,
    "dispatched": null,
    "policeReportNumber": "2025-12-33756",
    "cADNumber": "2025-12-33756",
    "cADAgencyIdentifier": "MFD",
    "locationCoordinates": "35.274781,-85.218002"
}
[2025-12-25 18:30:34] [INFO] Number of extracted fields: 18
[2025-12-25 18:30:34] [INFO] MULTI-AGENCY: Extracted cADAgencyIdentifier = 'MFD'
[2025-12-25 18:30:34] [INFO] Multi-agency routing check: CAD Agency ID raw = 'MFD', Parsed IDs = ["MFD"], Non-empty count = 1, Total agency count = 1, Assigned Agencies count = 2
[2025-12-25 18:30:34] [INFO] Multi-agency mode detected. Checking AgencyCode values in order: ["MFD"]
[2025-12-25 18:30:34] [INFO] Attempting SAASClient lookup for AgencyCode 'MFD' (index 0) within mailbox's assigned agencies
[2025-12-25 18:30:34] [INFO] SUCCESS: Routed to agency 'Mowbray Volunteer Fire Department' (ID: 681942a25bc58c3ab) at INDEX 0 based on AgencyCode 'MFD'
[2025-12-25 18:30:34] [INFO] Fetched 1 stations from Stations module for agency 'Mowbray Volunteer Fire Department': ["6819761cc9478253f"]
[2025-12-25 18:30:34] [INFO] Final routing: saasclientId = 681942a25bc58c3ab, dispatchStationsIds = ["6819761cc9478253f"], matchedAgencyIndex = 0
[2025-12-25 18:30:34] [INFO] === DISPATCH DATA THAT WOULD BE CREATED ===
[2025-12-25 18:30:34] [INFO] {
    "assignedUserId": 1,
    "source": "FTP",
    "status": "New",
    "saasclientId": "681942a25bc58c3ab",
    "receivedFromMailboxId": "68920395733981a47",
    "dispatchTime": "2025-12-25 18:30:34",
    "dispatchedStationsIds": [
        "6819761cc9478253f"
    ],
    "fTPFilesId": "TEST_FTP_694d82ca02d91",
    "incidentType": "FTEST-Fire Test Call",
    "locationCoordinates": "35.274781,-85.218002",
    "incidentAddressTextVersionStreet": "1705 MOWBRAY PIKE",
    "incidentAddressTextVersionCity": "",
    "incidentAddressTextVersionState": "",
    "incidentAddressTextVersionPostalCode": 37379,
    "cADNumber": "",
    "dispatchNotes": ""
}
[2025-12-25 18:30:34] [INFO] IncidentTypeMapping already exists: 690b740bbb3108fbf
[2025-12-25 18:30:34] [INFO] === TEST COMPLETED SUCCESSFULLY ===
