## 🧩 **Rome Service Vehicle Insert — Developer Integration Summary**

### **Purpose & Scope**

This interface allows third-party systems (like your Rome middleware) to insert a new *Service Vehicle* record into the Reynolds & Reynolds DMS.
The DMS will validate the provided vehicle and customer data, create the record if valid, and respond with a status of `Success` or `Failure`.

---

### **Core Workflow**

1. **POST** a SOAP request to the Reynolds endpoint (`ProcessMessage`).
2. Include the XML payload structured as `rey_RomeServVehicleInsertRequest`.
3. Receive `rey_RomeServVehicleInsertResponse` with:

   * Transmission status (`GenTransStatus`),
   * Optional `StatusCode` from the return codes table (Appendix E).

---

### **Request (`rey_RomeServVehicleInsertRequest`)**

**Sections:**

* **ApplicationArea**

  * Metadata such as `CreationDateTime`, `BODId`, and sender/destination details.
* **Vehicle**

  * Basic vehicle identity fields (`Vin`, `VehicleMake`, `VehicleYear`, etc.).
  * Sub-element `VehicleDetail` for mechanical attributes (`Aircond`, `EngineConfig`, etc.).
* **VehicleServInfo**

  * Operational context: stock ID, customer number, advisor, warranty, production dates, etc.
  * Includes sub-elements:

    * `VehExtWarranty` (contract #, expiration date/mileage)
    * `Advisor` → `ContactInfo` (NameRecId)

**Required core fields**

* `Vin` (validated via `GEVINVAL`)
* `VehicleMake`, `VehicleYear`, `ModelDesc`, `Carline`
* `CustomerNo` (must pre-exist)
* `SalesmanNo` (valid advisor)
* `InServiceDate` ≤ current date
* `TeamCode` – must exist in `MECHANICS` file

---

### **Response (`rey_RomeServVehicleInsertResponse`)**

**Elements:**

* `ApplicationArea` – mirrors request metadata.
* `GenTransStatus` – attributes:

  * `Status` = `Success` | `Failure`
  * `StatusCode` = numeric code (see Appendix E)

---

### **Error Codes (Appendix E Highlights)**

| Code   | Meaning                                               |
| ------ | ----------------------------------------------------- |
| `0`    | Success                                               |
| `300`  | Vehicle already exists                                |
| `301`  | Invalid make or ownership not established             |
| `502`  | Advisor was terminated                                |
| `506`  | Mileage must be greater than last mileage             |
| `513`  | VIN must be added to ERA2 before an RO can be created |
| `9999` | Undefined error                                       |

---

### **Implementation Notes**

* Endpoint authentication and URL differ between **test** and **production**.
* Ensure all date fields follow format `MM/DD/YYYYThh:mm:ssZ(EST)` (local dealer time).
* Use `GUID` for `BODId` to ensure message traceability.
* Validate VIN before submission; rejected VINs halt insertion.

---
