Files
bodyshop/server/integrations/partsManagement/sampleData/schemaDataAdd.md

16 KiB
Raw Blame History

Awesome — thanks for the dumps. I pulled the structures directly from the XSDs you uploaded and focused on VehicleDamageEstimateAddRq and the graph of types it depends on. Below is a developer-grade map you can hand to a coding agent.


What it is & where it lives

  • Global element: VehicleDamageEstimateAddRq
  • Namespace: http://www.cieca.com/BMS (default ns in your files)
  • Defined in: BMSEstimateMessages_2024R1_V6.9.0.xsd
  • Type: EstimateRqType (from BMSEstimateCommonTypes_2024R1_V6.9.0.xsd)
  • Service group (where this message is accepted): EstimateService in BMSEstimateService_2024R1_V6.9.0.xsd Includes: PropertyDamageEstimateAddRq/Rs, VehicleDamageEstimateAddRq/Rs, VehicleDamageEstimateChgRq/Rs, VehicleDamagePhotoEstimateAddRq/Rs.

Top-level schema (for VehicleDamageEstimateAddRqEstimateRqType)

EstimateRqType extends MessageHeaderType (from BMSCommonGlobalTypes_2024R1_V6.9.0.xsd) and then adds the following sequence. Ive marked required vs optional and multiplicity:

Header (inherited from MessageHeaderType):

  • RqUID (UUID) — required
  • AsyncRqUID (UUID) — optional
  • PartnerKey (Identifier) — optional

Body (from EstimateRqType):

  • SvcProviderName (Identifier) — optional
  • RefClaimNum (Char_50) — optional
  • DocumentInfo (DocumentInfoType) — required, 1
  • ApplicationInfo (ApplicationInfoType) — required, 1..*
  • EventInfo (EventInfoType) — optional
  • AdminInfo (AdminInfoType) — required
  • EstimatorIDs (EstimatorIDsTypeType) — required
  • ClaimInfo (ClaimInfoType) — optional
  • VehicleInfo (VehicleInfoType) OR PropertyInfo (PropertyInfoType) — choice → for vehicle, use VehicleInfo
  • ProfileInfo (ProfileInfoType) — required
  • DamageLineInfo (DamageLineInfoType) — required, 1..* (line items)
  • CalibrationInfo (CalibrationInfoType) — optional, 0..
  • ScanInfo (ScanInfoType) — optional, 0..
  • FileAttachment (FileAttachmentType) — optional
  • NonNewOEMPartInd (Boolean) — optional
  • StorageDuration (Integer_Range_0-999) — optional
  • RepairTotalsInfo (RepairTotalsInfoType) — required, 1..*
  • RepairTotalsHistory (RepairTotalsHistoryType) — optional, 0..
  • PaymentInfo (PaymentInfoType) — optional
  • EstimateMemo (C) — optional
  • AdministrativeMemo (C) — optional
  • Disclaimers (C) — optional
  • CustomMemo (C) — optional
  • CustomPrintImage (C) — optional
  • OtherMemos (OtherMemosType) — optional, 0..

Files involved: BMSEstimateMessages_2024R1_V6.9.0.xsd, BMSEstimateCommonTypes_2024R1_V6.9.0.xsd, BMSCommonGlobalTypes_2024R1_V6.9.0.xsd, BMSSimpleTypes_2024R1_V6.9.0.xsd + code lists XSDs for enums.


Key dependent types (immediate children youll actually populate)

Below are the first-level structures youll typically use. Ive trimmed to the practical fields; each type has many optional parties and details you can ignore for a minimal AddRq.

DocumentInfoType (BMSCommonGlobalTypes)

Typical header metadata:

  • BMSVer (BMSVersionClosedEnumType) — e.g. 6.9.0
  • DocumentType (DocumentTypeClosedEnumType) — code for message family (e.g. E for estimate; codelists provide the letter codes)
  • DocumentSubType (DocumentSubTypeClosedEnumType) — e.g. “Original Estimate”, “Copy”, etc.
  • DocumentID (Char_50) — your ID
  • VendorCode (VendorCodeOpenEnumType) — optional
  • DocumentVer (DocumentVerType) — versioning container (0..*)
  • CreateDateTime (DateTime)
  • TransmitDateTime (DateTime)
  • ReferenceInfo (RefInfoType) — links to prior docs
  • CountryCode, CurrencyInfo, CultureCode — optional locale bits

ApplicationInfoType (BMSCommonGlobalTypes) (1..*)

  • ApplicationType (ApplicationTypeClosedEnumType) — e.g., Estimator, Shop Mgmt, etc.
  • ApplicationName (Char_30)
  • ApplicationVer (Char_12)
  • DatabaseVer (Char_12)
  • DatabaseDateTime (DateTime)

AdminInfoType (BMSCommonGlobalTypes)

Large party/role roster; all child elements are optional, but the container itself is required. Common ones:

  • InsuranceCompany (InsuranceCompanyType)
  • PolicyHolder (PolicyHolderType)
  • Insured / Owner / Customer (GenericPartyType)
  • Claimant (ClaimantType)
  • Estimator (0..*) (EstimatorType)
  • RepairFacility (RepairFacilityType)
  • RentalProvider, TowCompany, Lender, Lienholder (0..*), etc. (You can send <AdminInfo/> if you dont need parties; it validates.)

EstimatorIDsTypeType (BMSEstimateCommonTypes)

  • OriginalEstimatorID (Char_40) — optional
  • EstimatorHistory (0..*) → EstimatorHistoryType ⇒ (DocumentVerCode, DocumentVerNum)

ClaimInfoType (BMSCommonGlobalTypes) (optional)

  • ClaimNum (Char_50)
  • PolicyInfo (0..*) (PolicyInfoType)
  • LossInfo (LossInfoType) — details on loss/time/location/coverage
  • AdditionalIDInfo (0..*) (IDInfoType)
  • ClaimStatus, PreviousPaymentAmt, ClaimMemo, etc.

VehicleInfoType (BMSCommonGlobalTypes) (choose this over PropertyInfo)

  • VINInfo (0..*) (VINInfoType) → choice of VINAvailabilityCode or one or more VIN ( VINType)
  • License (LicenseType)
  • VehicleDesc (VehicleDescType) — ModelYear, MakeDesc/MakeCode, ModelName/ModelNum, VehicleType, etc.
  • Paint, Body, Powertrain, Condition, Valuation, VehicleMemo
  • PolicyVehicleNum, LossVehicleNum
  • FileAttachment (FileAttachmentType)
  • CustomElement (0..*)
  • UnitNum (Char_20)

Note: VINType is referenced but its concrete restriction is provided elsewhere in BMS; you can treat it as a VIN string (17-char typical) and your validator will enforce the real facet.

ProfileInfoType (BMSEstimateCommonTypes) required

Controls rates, tax, and rules used to compute totals:

  • ProfileName (Char_40)

  • RateInfo (1..*) (RateInfoType)

    • RateType (RateTypeClosedEnumType) — e.g., BODY_LABOR, PAINT_LABOR, MECHANICAL_LABOR, MATERIAL, etc.
    • RateTierInfo / RateTierHistory (0..*)
    • TaxableInd, TaxRate, AdjustmentInfo (0..), TaxInfo (0..)
    • MaterialCalcSettings (optional)
  • AlternatePartInfo (0..), PartCertification (0..), RefinishCalcSettings, PreTaxDiscountRate, TaxExemptInfo (0..*), CanadianTax (for CA specifics)

DamageLineInfoType (BMSEstimateCommonTypes) 1..*

One per estimate line. Core children:

  • LineNum, UniqueSequenceNum, ParentLineNum (hierarchy)
  • ManualLineInd, AutomatedEntry, LineStatusCode
  • LineDesc, LineDescCode
  • SubletInfo (SubletInfoType)
  • PartInfo (0..*) (PartInfoType)
  • LaborInfo (LaborInfoType)
  • RefinishLaborInfo (LaborInfoType)
  • MaterialType, OtherChargesInfo, WhoPays
  • LineAdjustment, AppliedAdjustment
  • PDRInfo, LineType, LineMemo, VendorRefNum (0..*)

PartInfoType highlights:

  • PartMaterialCode, PartType, LineItemCategoryCode
  • PartDesc, PartNum, OEMPartNum
  • NonOEM (0..*) (NonOEMType) — alternate sources/quality
  • ListPrice, PartPrice, UnitPartPrice, TotalPartPrice, OEMPartPrice
  • PriceAdjustment (0..*) (PriceAdjustmentType)
  • TaxableInd, AppliedTaxes
  • CertificationType (0..*), AlternatePartInd, GlassPartInd
  • Quantity, PartStatus, Dimensions, Glass*, QuotedPartList

LaborInfoType highlights:

  • LaborType (LaborTypeClosedEnumType) — required
  • LaborOperation, LaborHours, LaborHourlyRate, LaborAmt
  • DatabaseLaborType/Hours/Amt
  • LaborAdjustment (0..*)
  • Judgment/flags (e.g., LaborAmtJudgmentInd, OverlapInd)
  • Paint-specific fields (PaintStagesNum, PaintTonesNum)
  • AssemblyLaborCode

CalibrationInfoType / ScanInfoType (BMSEstimateCommonTypes)

  • ScanInfoType: ScanDetailsList (optional), FileAttachment (optional), ScanTool, ScanDateTime (required), flags CleanScanInd, FollowUpInd, plus Technician.
  • CalibrationInfoType: optional lists for details & technicians, plus process flags ( PrerequisitesMetInd, ProceduresFollowedInd, ADASReviewedWithOwnerInd).

FileAttachmentType (BMSCommonGlobalTypes)

  • DocAttachment (0..*) (DocAttachmentType)

    • AttachmentType (open enum)

    • AttachmentTitle or AttachmentMemo

    • AttachmentFileType, AttachmentFileName, AttachmentLength

    • One of: AttachmentURI or EmbeddedAttachmentType

      • EmbeddedAttachmentTypechoice: EmbeddedAttachment (Binary) or EmbeddedAttachmentText (C)
    • AttachmentIntegrity (0..*) (optionally includes Binary integrity blobs)

    • AttachmentStatusCode (open enum)

RepairTotalsInfoType (BMSEstimateCommonTypes) 1..*

  • LaborTotalsInfo (0..*) (TotalsInfoType)
  • PartsTotalsInfo (0..*) (TotalsInfoType)
  • OtherChargesTotalsInfo (0..*) (TotalsInfoType)
  • NumOfDamageLines (optional)
  • SummaryTotalsInfo (1..*) (TotalsInfoType) — your rolled-up totals
  • RepairTotalsType (LineTypeClosedEnumType) — optional (e.g., gross vs. customer-pay segments)

TotalsInfoType (BMSCommonGlobalTypes) highlights:

  • TotalType (TotalTypeOpenEnumType) — category (e.g., LABOR, PARTS, TAX, GRAND_TOTAL,…)
  • TotalSubType (open enum)
  • TotalTypeDesc (Char_30)
  • Hours quantities & units, item quantity, unit price
  • Detailed TotalTaxInfo / TotalAdjustmentInfo (0..*)
  • Amounts: NonTaxableAmt, TaxableAmt, TaxTotalAmt, OtherCharges*, TotalAmt, TotalPct, TotalCost
  • AmtDueInfo (0..*)

RepairTotalsHistoryType (BMSEstimateCommonTypes)

  • Version stamp and one or more HistoryTotalsInfo entries.

PaymentInfoType (BMSCommonGlobalTypes) (optional)

  • PayerType, PaymentType
  • Payee/PayerInfo/PayeeInfo
  • PaymentDateTime, PaymentAmt
  • PaymentID, PaymentMemo, PaymentAmtType

OtherMemosType (BMSCommonGlobalTypes)

  • OtherMemoRef (open enum), OtherMemo (C)

Minimal, schema-valid XML skeleton (vehicle path)

Uses only required containers/fields; values shown as PLACEHOLDER. You must add at least one DamageLineInfo and one SummaryTotalsInfo item, and at least one RateInfo inside ProfileInfo. Enumerations are code lists; use valid codes from your system.


<VehicleDamageEstimateAddRq xmlns="http://www.cieca.com/BMS">
  <!-- MessageHeaderType -->
  <RqUID>00000000-0000-0000-0000-000000000000</RqUID>

  <!-- EstimateRqType sequence -->
  <DocumentInfo>
    <BMSVer>6.9.0</BMSVer>
    <DocumentType>E</DocumentType>
    <CreateDateTime>2025-08-14T12:00:00Z</CreateDateTime>
  </DocumentInfo>

  <ApplicationInfo>
    <ApplicationType>INSERT_APP_TYPE</ApplicationType>
    <ApplicationName>INSERT_APP_NAME</ApplicationName>
    <ApplicationVer>INSERT_APP_VER</ApplicationVer>
  </ApplicationInfo>

  <AdminInfo/>  <!-- container required; children optional -->

  <EstimatorIDs/> <!-- container required; children optional -->

  <!-- choice: VehicleInfo OR PropertyInfo -->
  <VehicleInfo>
    <!-- minimally empty is allowed; typical payload would include VIN and Year/Make/Model -->
    <!-- Example:
    <VINInfo>
      <VIN>1HGBH41JXMN109186</VIN>
    </VINInfo>
    <VehicleDesc>
      <ModelYear>2020</ModelYear>
      <MakeDesc>Honda</MakeDesc>
      <ModelName>Civic</ModelName>
    </VehicleDesc>
    -->
  </VehicleInfo>

  <ProfileInfo>
    <!-- at least one RateInfo required -->
    <RateInfo>
      <RateType>INSERT_RATE_TYPE</RateType>
      <!-- optional: <RateDesc>Body Labor</RateDesc> <TaxRate>13.00</TaxRate> etc. -->
    </RateInfo>
  </ProfileInfo>

  <!-- at least one DamageLineInfo -->
  <DamageLineInfo>
    <!-- minimal: include a LaborInfo with required LaborType -->
    <LaborInfo>
      <LaborType>INSERT_LABOR_TYPE</LaborType>
      <!-- optional: <LaborHours>1.0</LaborHours> <LaborHourlyRate>85.00</LaborHourlyRate> -->
    </LaborInfo>
  </DamageLineInfo>

  <!-- at least one RepairTotalsInfo with at least one SummaryTotalsInfo -->
  <RepairTotalsInfo>
    <SummaryTotalsInfo>
      <TotalType>INSERT_TOTAL_TYPE</TotalType>
      <TotalTypeDesc>Grand Total</TotalTypeDesc>
      <TotalAmt>0.00</TotalAmt>
    </SummaryTotalsInfo>
  </RepairTotalsInfo>
</VehicleDamageEstimateAddRq>

Implementation notes & gotchas (important)

  1. Required containers vs. required content
  • AdminInfo and EstimatorIDs are required containers but their children are optional. Empty elements validate.
  • ProfileInfo is required and must include ≥1 RateInfo with a RateType.
  • You must include the choice of VehicleInfo (for this message) instead of PropertyInfo.
  • Include ≥1 DamageLineInfo and ≥1 RepairTotalsInfo each containing * *≥1 SummaryTotalsInfo**.
  1. Header
  • RqUID is required; use a real UUID.
  1. Enumerations / code lists
  • Many fields are ClosedEnumType/OpenEnumType and validated against the BMS code list XSDs you included (e.g., BMSCodeLists_*.xsd). Use the exact code values your trading partner expects ( e.g., DocumentType = E for estimates).
  • BMSVer supports 6.9.0.
  1. Line hierarchy
  • For nested kits/assemblies, use ParentLineNum; UniqueSequenceNum helps ordering. LineType can label grouping (e.g., Sublet, Labor, Part, etc.).
  1. Attachments
  • You can embed binary (EmbeddedAttachmentType/EmbeddedAttachment) or provide a URI ( AttachmentURI). Provide AttachmentFileType and AttachmentFileName either way.
  1. Scans & calibrations
  • If you include ScanInfo, it requires ScanTool and ScanDateTime. Calibrations are optional but provide strong ADAS traceability.
  1. Totals integrity
  • RepairTotalsInfo/SummaryTotalsInfo acts as your roll-up. Ensure it reconciles with the sum of DamageLineInfo components and the profiles rates/taxes so consumers dont reject on mismatches.
  1. Currency / numeric facets
  • Monetary fields use Currency. Hours/rates/quantities have explicit facets (e.g., Decimal_Range_-999.9-999.9). Stay within ranges.
  1. Canada specifics
  • DocumentInfo/CountryCode = CA, and ProfileInfo/CanadianTax is available for PST/HST/GST modeling if you need to encode tax policy explicitly.

Quick field checklist for a typical valid “vehicle add” youll generate

  • Header

    • RqUID
  • Doc header

    • DocumentInfo/BMSVer = 6.9.0
    • DocumentInfo/DocumentType = E
    • DocumentInfo/CreateDateTime
  • App

    • ApplicationInfo[1..*]/(ApplicationType, ApplicationName, ApplicationVer)
  • Admin

    • <AdminInfo/> (or populate parties)
  • EstimatorIDs

    • <EstimatorIDs/> (or add contents)
  • Vehicle

    • VehicleInfo (VIN + YMM recommended)
  • Profile & rates

    • ProfileInfo/RateInfo[1..*]/RateType
  • Lines

    • DamageLineInfo[1..*] with at least one LaborInfo/LaborType or PartInfo
  • Totals

    • RepairTotalsInfo[1..*]/SummaryTotalsInfo[1..*]/(TotalType, TotalTypeDesc, TotalAmt)

Pointers to definitions in your bundle (for traceability)

  • VehicleDamageEstimateAddRq element → BMSEstimateMessages_2024R1_V6.9.0.xsd
  • EstimateRqTypeBMSEstimateCommonTypes_2024R1_V6.9.0.xsd
  • MessageHeaderType, DocumentInfoType, VehicleInfoType, FileAttachmentType, PaymentInfoType, etc. → BMSCommonGlobalTypes_2024R1_V6.9.0.xsd
  • Rates/lines/totals/calibration/scan subtypes → mostly BMSEstimateCommonTypes_2024R1_V6.9.0.xsd
  • Enums/code lists → BMSCodeLists_ClassicCode_2024R1_V6.9.0.xsd, BMSCodeLists_CodeExt_2024R1_V6.9.0.xsd
  • Service wrapper (which messages are valid to send/receive) → BMSEstimateService_2024R1_V6.9.0.xsd