# Rome – Search Customer Service Vehicle Combined (v1.1, May 2015) — Full Synapse **What it does:** one-shot search that returns **customer identity + all matching service vehicles** based on exactly **one** of the permitted search patterns (e.g., `NameRecId`, `FullName`, `Phone`, `Partial VIN`, `Stock #`, `License #`, or `FullName/LName + Model triple`). Results include customer contact info and each vehicle’s details and service metadata. ## Transport * **SOAP/HTTPS** to RCI `ProcessMessage`, separate **test** and **prod** endpoints/credentials. * Standard HTTP response codes; XML payloads validate against request/response XSDs. ## Trigger & allowed search modes Pick **exactly one** of these (no mixing): 1. `Last Name + Partial VIN` 2. `Full Name + Partial VIN` 3. `Last Name + Phone` 4. `Full Name + Phone` 5. `Full Name` (alone) 6. `NameRecId` (alone) 7. `Phone` (alone) 8. `Phone + Partial VIN` 9. `Last Name + (Make, Model, Year)` 10. `Full Name + (Make, Model, Year)` 11. `Vehicle Stock #` (alone) 12. `Vehicle License #` (alone) 13. `Partial or Full VIN` (alone) Business customers only match with `NameRecId`, `Phone`, `Stock #`, `License #`, `Phone+Partial VIN`, or `Partial/Full VIN`. ## Request (`rey_RomeCustServVehCombReq`) * **`ApplicationArea`**: `Sender` (Component=`Rome`, Task=`CVC`, CreatorNameCode=`RCI`, SenderNameCode=`RCI`), `CreationDateTime` (`yyyy-mm-ddThh:mm:ssZ`), optional `BODId` (GUID), `Destination` (DestinationNameCode=`RR`, plus dealer/store/area routing). * **`CustServVehCombReq`**: * `QueryData`: one of `LName`, `FullName(FName,LName,MName)`, `NameRecId(CustIdStart)`, `Phone(Num)`, `PartVIN(Vin)`, `StkNo(VehId)`, `LicenseNum(LicNo)`; optional `MaxRecs` (≤ 50). * `VehData`: `MakePfx` (2-char make), `Model` (carline/description match), `Year` (2 or 4). * `OtherCriteria` present but “not used”. ## Response (`rey_RomeCustServVehComb`) * **`ApplicationArea`** (Sender typically `RR`, Task=`CVC`, etc.) and **`TransStatus`** with `Status`=`Success|Failure`, `StatusCode` (numeric), and optional message text. * **`CustServVehComb`** records (0..n), each with: * **`NameContactId`**: `NameId` (`IBFlag` `I|B`, individual or business name + optional `NameRecId`), plus repeating `Address`, `ContactOptions`, `Phone`, `Email`. * **`ServVehicle`** (0..n): `Vehicle` (VIN, Make, Year, Model, Carline, color, detail attrs), and `VehicleServInfo` (attributes for StockID, CustomerNo, Service history fields; children: `VehExtWarranty`, `Advisor.ContactInfo@NameRecId`, `VehServComments*`). ## Return codes (subset) * `0` Success; `201` Required data missing; `202` Validation error; `213` No matching records; `9999` Undefined error. (Use `TransStatus@StatusCode` + text to decide UX.) ## Implementation checklist * Build one of the **allowed** queries; if multiple criteria are supplied, RCI treats it as invalid. * Generate **`BODId`** GUID per call; log it for tracing. * Fill **routing** (`DealerNumber`, `StoreNumber`, `AreaNumber`) for the target store/branch. * Enforce `MaxRecs` (default is 1; if >1 results and `MaxRecs` omitted, API returns “multiple exist” error). * XSD-validate request/response; map `TransStatus` to domain errors; return empty list on `213`. ---