Mitel CPQ XML Output Specification

Mitel CPQ XML Output Specification

Version: 1.1 (Draft 3)

Contents

Purpose

Revisions

Version 1.1, Draft 2

Version 1.1, Draft 3

The XSD

Top Level Document

Node Type

Order Creation Date Type

Order Mode Type

User Information Type

End Customer Information Type

Shipping Information Type

Contact type

Project Information Type

Discount List Type

Discount Type

Pricelist Type

Order Parts Type

Part Type

SLS Contract Period Type

SLS Contract Period Date Type

Promos Type

Promo Type

Messages Type

Message Type

Severity Type

Accessing Parts

Calculations

Purpose

This document specifies the XML format used by Mitel CPQ when a configuration is retrieved either from the CPQ API or from the export function within Reports & Proposals.

Revisions

Version 1.1, Draft 2

Added the program discounts to the top level document.

Added the CRM Prospect ID, Discount Justification, Discount Competitors and Discount Type to the project information

Added an SPA MPG Discounts to the Node Type

Version 1.1, Draft 3

Added a crmProspectIdTimestamp to record the time when the prospect data was fetched from CRM into CPQ.

Added an adiPercentage to each part to record where an individual part was discounted differently to the overall MPG.

The XSD

The XSD describing the XML output can be found at:

Top Level Document

The top level of the document is specified by the <order> element. For explanation purposes all min and max occurs have been removed. See the XSD for the full specification.

The order element has a single attribute “version” and is set to 1.1

applicationBuild / String / The application build specifies the version of CPQ the file was generated by.
applicationEnvironment / String / Specifies if this is a test, training or production file.
trackingId / String / The id that uniquely identifies this particular configuration.
basedOnTrackingId / String / Optional / If the configuration is edited from a previous configuration the tracking id it was created from will be set. The field is blank if this is a new configuration.
node / nodeType / Repeating / Represents a product within the overall configuration, there will be one or more nodes.
creationDate / orderCreationDateType / The date the file was saved on the server.
mode / orderModeType / The mode the configurator is running in AP or MP mode.
userInformation / userInformationType / The information about the user creating the quo
endCustomerInformation / endCustomerInformationType / Information about the end user who is buying the solution
defaultShippingInformation / shippingInformationType / Default shipping information is used by any node which has not explicitly set its own shipping data.
projectInformation / projectInformationType / Data about the overall configuration
orderDiscount / discountType / Optional / Overall discounts applied to the buy side prici
quoteDiscount / discountType / Optional / Discounts applied to the sell side pricing
sapDiscounts / discountListType / Optional / Any discount data obtained from the ERP system for the partner account.
programDiscounts / discountListType / Optional / Holds the list of program discounts supplied by CRM

Node Type

Each product that is configured within the overall configuration is stored within a node element.

name / String / The name of the node
slsTransactionId / String / Optional
count / Int / The count specifies how many repeat occurrences of this node are being configured. A count of 3 for instance indicates that the customer is buying 3 identical products. Any total pricing must account for the node count as all information within the node is for just the single instance.
totalOpexUsers / Int / Optional / A count of how many OPEX users have been configured within this
uid / String / A unique id for the node
sequenceNo / Int / The order of the nodes in the file
modelIdentifier / String / The id of the model file this node was configured from
modelName / String / The name of the model file in English.
modelVersion / String / The version of the model file.
buyList / pricelistType / Optional / The pricelist used for buy prices.
sellList / pricelistType / Optional / The pricelist used for sell prices.
nodeSellDiscount / discountType / Optional / Any discounts applied to this node for the sell price.
nodeBuyDiscount / discountType / Optional / Any discounts applied to this node for the buy price.
sellMpgDiscounts / discountListType / Optional / Any discounts for the material pricing group for the sell price
spaMpgDiscounts / discountListType / Optional / Contains any MPG level discounts entered as part of a deal discount request for this node. The parts buy price will already reflect this discount.
buyMpgDiscounts / discountListType / Optional / Any material pricing group discounts for the buy price.
orderParts / orderPartsType / Contains a list of parts created by the configuration engine.
userDefinedParts / orderPartsType / Optional / Contains a list of parts which are defined by the user and imported into the configuration.
writeInParts / orderPartsType / Optional / Contains a list of parts the user wrote directly into the parts list.
serviceParts / orderPartsType / Optional / Contains a list of parts used in calculating the service pricing. These parts are not orderable but are used by the Mitel service management system.
promos / promosType / Optional / Indicated a quote wide promotion has been applied.
shippingInformation / shippingInformationType / Optional / Shipping data just for this product.
messages / messagesType / Optional / Any configuration messages generated by CPQ.

.

Order Creation Date Type

Specifies a date and time stamp as attributes.

timestamp / long / Required / Standard Unis time stamp
timezone / string / Required / The time zone of the server
year / int / Required
month / int / Required
day / int / Required
hour / int / Required
minute / int / Required
second / int / Required

Order Mode Type

The CPQ can run in one of two modes which affect where the pricing is derived from. In the AP mode pricing is uploaded into CPQ via Excel. In MP mode the pricing is derived from the corporate ERP system. Users running in hybrid mode will show as AP in the file.

User Information Type

This element holds information about the user creating the quotation.

userName / string / The connect user name
userFullName / string / Optional / The users full name
userGroupName / string / The name of the group the user belongs to.
userEMail / string / Optional / The users enail address
userConnectId / long / Optional / The users conenct id, will be present in normal useage.
organizationConnectId / int / Optional / The connect id of the users organisation.
organizationLevel / int / The orgaisational level, CSA, Partner, reseller etc.
organizationIdentifier / string / Identifier in CPQ concatenated with identifiers from parent groups
sapCustomerGroupCode / string / Optional / Will be present in MP mode
sapCompanyName / string / Optional / Will be present in MP mode
sapCustomerNumber / string / Optional / Will be present in MP mode
impersonatorUserName / string / Optional / If this quote was created by a user using another users credentials.
impersonatorConnectId / string / Optional / The connect id of the impersonator

End Customer Information Type

Specifies the end customer information.

companyName / string / Optional / The company name
address / string / Optional / A free form address field.
zipCode / string / Optional / The zip or post code
industry / string / Optional / The industry sector

Shipping Information Type

The system identifier or serial number of the system or application, can be different per node and per location.

companyLine1 / string / Optional
companyLine2 / string / Optional
addressLine1 / string / Optional
addressLine2 / string / Optional
city / string / Optional
state / string / Optional
parcelTagging / string / Optional / Free form text if additional delivery instructions are needed
zipCode / string / Optional
countryCode / string / Optional
finalDestinationCountryCode / string / Optional
contact / contactType / Optional
systemIdentifier / string / Optional / The serial number of the system or application, can be different per node and per location.

Contact type

name / String / Optional
phone / String / Optional
contactEMail / String / Optional
licenseEMail / String / Optional

Project Information Type

Stores data about the project itself. This data is provided from the project information data entered into the CPQ project information dialog. All fields are free form text.

projectName / String / Optional
projectReference / String / Optional
discountIdentifier / String / Optional
discountJustification / String / Optional / Will always be provided where a deal discount is requested.
discountCompetitors / String / Optional / Will always be provided where a deal discount is requested.
discountType / String / Optional / Will always be provided where a deal discount is requested.
crmProspectId / String / Optional / The ID from which any program discounts were loaded.
crmProspectIdTimestamp / String / Optional / Time when the prospect data was retrieved by CRM
comments / String / Optional
partnerPurchaseOrderNo / String / Optional
resellerPurchaseOrderNo / String / Optional
preSalesEngineerFullName / String / Optional
salesPersonFullName / String / Optional

Discount List Type

Holds a list of discounts types which may contain zero or more entries.

Discount Type

Holds information about a particular discount entry. The id attribute will hold the name of the discount group if applicable.

The discount type has an optional id attribute which holds the name of the discount group.

percentage / decimal / Optional / Holds he percentage as opposed to a fraction e.g. 45.7%

Pricelist Type

id / string / The id of the price book entry
name / string / The name of the price book
currency / string / The currency code eg USD
sourceCurrency / string / Optional / The currency of the source pricing.
sapPriceBook / string / Optional / The SAP price book id eg 61, not available in AP mode.
exchangeRate / decimal / Optional / The exchange rate if currency and source currency are different.

Order Parts Type

Holds a list of parts and may contain zero or more parts.

Part Type

The unit list price is not applicable in AP mode.

The unit SAP override price is not available in AP mode.

partNo / String / The part number
partNameEn / String / The English part description.
partCategory / String / The part category is an English description of the category the part belongs to as set in CPQ.
partStatus / String / Optional / The status flag for the part
count / Int / The quantity of the part
unitBuyPrice / Decimal / The unit buy price calculated from any available discounts
unitSellPrice / Decimal / The unit sell price calculated from any available discounts
unitListPrice / Decimal / Optional / The list price of the part, MP mode only as loaded from SAP, always provided in MP mode for configured parts.
unitSapOverridePrice / Decimal / Optional / If the part is sold at zero discount then the list and sell will be the same. This price gives an indicated sell price.
sapDiscountGroup / String / Optional / The MPG when in MP mode
fixedSellPrice / Boolean / Optional / If the price for this part was fixed by directly setting the price rather than using MPG discounts.
fixedBuyPrice / Boolean / Optional / If the price for this part was fixed by directly setting the price rather than using MPG discounts. Only for Indirect users.
diffSellApplied / Boolean / Optional / ??
adiPercentage / Decimal / Optional / Any ADI percentage set at the individual part level.
diffBuyApplied / Boolean / Optional / ??
slsContractPeriod / slsContractPeriodType / Optional / ??
slsDiscountPercentage / Decimal / Optional / ??
userDefinedPart / Boolean / Optional / Obsolete
writeInPart / Boolean / Optional / Obsolete
opexPart / Boolean / Optional / If the part was flagged as an OPEX rather than a CAPEX part indicating its price is a monthly fee and not a buy price. Opex parts should be excluded from the total buy price.

SLS Contract Period Type

Holds the duration of the SLS contract.

startDate / slsContractPeriodDateType
endDate / slsContractPeriodDateType

SLS ContractPeriodDateType

The SLS Contract Period Date Type has three compulsory integer attributes, year,month, day.

PromosType

Contains a list of zero or more Promo Types

PromoType

promoCode / string
description / string / The description contains an English text description of the promotion.
buyPrice / decimal
sellPrice / decimal

MessagesType

Holds a list of 1 or more message types

MessageType

severity / severityType / The message type, information, warning or error
message / string / The user message in English.

Severity Type

The severity is an indication as to the type of severity of the message. It is an enumeration of INFO, WARNING or ERROR.

Accessing Parts

To access the parts contained within the file it is necessary to iterate over all the Node Types within the XML document. Each node represents one product within the configuration. If the node has a count greater than one then the node represents N copies of the same configuration.

e.g. If a node had partX, qty 10 and a count=3 then there are a total of 30 parts in the configuration.

The parts are divided into 4 sections within each node.

  • Order Parts, these are the parts that were generated by the configuration engine and an MP mode will only consist of SAP defined parts and prices.
  • User Defined Parts, CPQ allows the user to define a list of user defined parts when operating in AP mode. These parts can be incorporated into a quote. This functionality is not available in MP mode.
  • Write-In Parts, in MP mode the user can enter a part, description and price directly into the configuration. These parts will be supplied by the partner and not by Mitel.
  • Service Parts, when a configuration includes service calculations it will create a list of parts that are required by the service management system to track the items under contract. These are not orderable parts and are only of use by the service management system so should be ignored.

While the XML does contain all the discounts, SAP or user entered that are used in pricing, these values have already been applied at the part level to calculate both the sell and buy pricing. They are provided as due to rounding it is not possible to exactly reverse the calculation from the parts list and sell price to determine the discount the user entered. The actual pricing is contained within the part and the parts should be totalled to obtain the configurations price.

Of particular note is the SAP discounts at the top level of the document as this contains the Partner discounts as supplied by SAP.

Calculations

To calculate the MLP/sell/buy prices of the whole configuration.

Iterate over each node type

Iterate over all Part Type in Order Parts, User Defined Parts and Write-in parts. If only parts supplied by Mitel are of interest then ignore User Defined and Write-in parts.

List: for each part sum the unitListPrice * count(part) * count(node)

Sell: for each part sum the unitSellPrice* count(part) * count(node)

Partner: for each part sum the unitBuyPrice* count(part) * count(node)

Copyright © 2016Mitel®, all rights reserved.