Product Lifecycle Management STATE MODEL
Product Lifecycle Management (PLM) is responsible for managing the entire lifecycle of the catalog element and its underlying components. This include all of the processes required to design, build, deploy, maintain and ultimately retire the catalog element.
When the macro conception of a catalog element is started the first status of the later is "In Study".
When the conception of the catalog element is accepted its status is changed to "In Design".
If the design is approved its status is changed to "In Test".
Then either the test is OK and then its status is changed to "Active" or the test is KO and its status is changed to "Rejected". The Rejected status is a final status.
When a catalog element is in an "Active" status it means it has been validated and tested, but it is still not available for customers.
When the beginning of marketing is reached, its status is changed to "Launched". At this moment customers can buy it.
If the catalog element is not launched, its status is changed to "Retired".
The same status is achieved when a catalog element reaches the end of marketing.
The "Retired" status means it can not be sold to any new customers, but previous customers can still have it.
When no more customer holds the catalog element, its status is changed to "Obsolete" meaning it can be removed from the catalog.
Catalog RESOURCE
The root entity for catalog management.
A Product Catalog is a collection of Product Offerings, intended for a specific DistributionChannel, enhanced with additional information such as SLA parameters, invoicing and shipping details. Each Product Offering in a Product Catalog combines pricing and availability information with Product Specifications that describe the relationships between Products, the Services used to realize the Products, and the Resources they require.
Below is a representation of the Catalog resource in JSON format.
{ |
|
Field Descriptions :
Catalog: Is a collection of Product Offerings, intended for a specific DistributionChannel, enhanced with additional information such as SLA parameters, invoicing and shipping details.
Field | Description |
category | Reference to the category |
href | Reference of the catalog |
id | Unique identifier of the catalog |
lastUpdate | Date and time of the last update |
lifecycleStatus | Used to indicate the current lifecycle status |
name | Name of the catalog |
type | Indicates if the catalog is a product, service or resource catalog |
validFor | The period for which the catalog is valid |
version | Catalog version |
Category: is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates.
Field | Description |
description | Description of the category |
href | Reference of the catalog |
id | Unique identifier of the category |
isRoot | If true, this Boolean indicates that the category is a root of categories |
lastUpdate | Date and time of the last update |
lifecycleStatus | Used to indicate the current lifecycle status |
name | Name of the category |
parentId | Unique identifier of the parent category |
validFor | The period for which the category is valid |
version | Category version |
RelatedParty: Defines party or partyRole linked to a specific entity.
Field | Description |
id | Unique identifier of related party |
href | Reference of the relatedParty, could be a party reference or a partyRole reference |
name | Name of the related party |
role | Role of the related party |
validFor | The period for which the related party is linked to the entity |
UML model:
Category RESOURCE
The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates.
Resource IDs for categories are strings and are defined by the catalog application.
Below is a representation of the Category resource in JSON format.
{ |
Field Descriptions :
Category: is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates.
Field | Description |
description | Description of the category |
href | Reference of the catalog |
id | Unique identifier of the category |
isRoot | If true, this Boolean indicates that the category is a root of categories |
lastUpdate | Date and time of the last update |
lifecycleStatus | Used to indicate the current lifecycle status |
name | Name of the category |
parentId | Unique identifier of the parent category |
validFor | The period for which the category is valid |
version | Category version |
UML model:
Product Offering RESOURCE
The Product Offering resource represents entities that are orderable from the provider of the catalog, this resource includes pricing information.
Note: isBundle determines whether a productOffering represents a single productOffering (false), or a bundle of productOfferings (true).
If false, then a productSpecification will be returned, but the bundledProductOfferings will be absent or empty and vice-versa if isBundle is true.
Below is a representation of the ProductOffering resource in JSON format.
{ |
Field Descriptions :
BundledProductOffering: A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering.
Category: is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates.
Field | Description |
description | Description of the category |
href | Reference of the catalog |
id | Unique identifier of the category |
isRoot | If true, this Boolean indicates that the category is a root of categories |
lastUpdate | Date and time of the last update |
lifecycleStatus | Used to indicate the current lifecycle status |
name | Name of the category |
parentId | Unique identifier of the parent category |
validFor | The period for which the category is valid |
version | Category version |
Channel: Defines the channel for selling product offerings.
Field | Description |
href | Reference of the channel |
id | Unique identifier of the channel |
name | Name of the channel |
Place: Defines the places where the product offerings are sold.
Field | Description |
href | Reference of the place |
id | Unique identifier of the place |
name | Name of the place |
Price: Provides all amounts (tax included, duty free, tax rate), used currency and percentage to apply for ProdOfferPriceAlteration.
Field | Description |
currencyCode | A string used as a code for specifying the currency associated to the given amounts. The ISO4217 norm uses 3 letters to define the currency (for example USD for US dollar or EUR for Euro) |
dutyFreeAmount | All taxes excluded amount (expressed in the given currency) |
percentage | Percentage to apply for ProdOfferPriceAlteration |
taxIncludedAmount | All taxes included amount (expressed in the given currency) |
priceType | Indicates the price type: recurring, one time, usage |
taxRate | Tax rate |
ProductOffering: Represents entities that are orderable from the provider of the catalog, this resource includes pricing information.
Field | Description |
description | Description of the productOffering |
href | Reference of the ProductOffering |
id | Unique identifier of the productOffering |
isBundle | isBundle determines whether a productOffering represents a single productOffering (false), or a bundle of productOfferings (true). |
lastUpdate | Date and time of the last update |
lifecycleStatus | Used to indicate the current lifecycle status |
name | Name of the productOffering |
validFor | The period for which the productOffering is valid |
version | ProductOffering version |
ProductOfferPriceAlteration: An amount, usually of money, that modifies a price charged for a productOffering.
Field | Description |
applicationDuration | Duration during which the prodOfferPriceAlteration applies on the productOffering (for instance 2 months free of charge for the recurring charge) |
description | Description of the prodOfferPriceAlteration |
href | Reference of the prodOfferPriceAlteration |
id | Unique identifier of the prodOfferPriceAlteration e |
name | Name of the prodOfferPriceAlteration |
priceCondition | Condition that triggers the price application |
priceType | Indicates the price type: recurring, one time, usage |
recurringChargePeriod | Could be month, week… |
unitOfMeasure | Could be minutes, GB… |
validFor | The period for which the prodOfferPriceAlteration is valid |
ProductOfferingPrice: Is based on both the basic cost to develop and produce products and the enterprise's policy on revenue targets. This price may be further revised through discounting (prodOfferPriceAlteration). The price, applied for a productOffering may also be influenced by the productOfferingTerm, the customer selected – e.g. a productOffering can be offered with multiple terms, like commitment periods for the contract. The price may be influenced by this productOfferingTerm. A productOffering may be cheaper with a 24 month commitment than with a 12 month commitment.
Field | Description |
description | Description of the productOfferingPrice |
name | Name of the productOfferingPrice |
priceType | Indicates the price type: recurring, one time, usage |
recurringChargePeriod | Could be month, week… |
unitOfMeasure | Could be minutes, GB… |
validFor | The period for which the productOfferingPrice is valid |
version | ProductOffering version |
ProductOfferingTerm: A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods.
Field | Description |
description | Description of the productOfferingTerm |
duration | Duration of the productOfferingTerm |
name | Name of the productOfferingTerm |
validFor | The period for which the productOfferingterm is valid |
ProductSpecification: A detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.
Field | Description |
brand | The manufacturer or trademark of the specification |
description | A narrative that explains in detail what the product specification is |
href | Reference of the product specification |
id | Unique identifier of the product specification |
isBundle | isBundle determines whether a productSpecification represents a single productSpecification (false), or a bundle of productSpecification (true). |
lastUpdate | Date and time of the last update |
lifecycleStatus | Used to indicate the current lifecycle status |
name | Name of the product specification |
productNumber | An identification number assigned to uniquely identify the specification |
validFor | The period for which the product specification is valid |
version | Product specification version |
ServiceCandidate: Is an entity that makes a ServiceSpecification available to a catalog. A ServiceCandidate and its associated ServiceSpecification may be published - made visible - in any number of ServiceCatalogs, or in none. One ServiceSpecification can be composed of other ServiceSpecifications. The Service Candidate consists of a subset of ServiceSpecification characteristics to fulfill a product offering. These ServiceSpecifications may also be published.
Field | Description |
description | A narrative that explains in detail what the service candidate is |
href | Reference of the service candidate |
id | Unique identifier of the service candidate |
lastUpdate | Date and time of the last update |
lifecycleStatus | Used to indicate the current lifecycle status |
name | Name of the service candidate |
validFor | The period for which the service candidate is valid |
version | Service candidate version |
ServiceLevelAgreement: A service level agreement (SLA) is a type of agreement that represents a formal negotiated agreement between two parties designed to create a common understanding about products, services, priorities, responsibilities, and so forth. The SLA is a set of appropriate procedures and targets formally or informally agreed between parties in order to achieve and maintain specified Quality of Service.
Field | Description |
href | Reference of the service level agreement |
id | Unique identifier of the service level agreement |
name | Name of the service level agreement |
ResourceCandidate: Is an entity that makes a ResourceSpecification available to a catalog. A ResourceCandidate and its associated ResourceSpecification may be published - made visible - in any number of ResourceCatalogs, or in none. One ResourceSpecification can be composed of other ResourceSpecifications. The ResourceCandidate consists of a subset of ResourceSpecification characteristics to fulfill a product offering. These ResourceSpecifications may also be published.
Field | Description |
href | Reference of the resource candidate |
id | Unique identifier of the resource candidate |
name | Name of the resource candidate |
UML model:
Product Specification RESOURCE
The ProductSpecification Resource is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.
Below is a representation of the ProductSpecification resource in JSON format.
{ |
Field Descriptions :
Attachment: describes a product through video, pictures...
Field | Description |
href | Reference of the attachment |
id | Unique identifier of the attachment |
type | Attachment type such as video, picture |
url | Uniform Resource Locator, is a web page address (a subset of URI) |
BundledProductSpecification: A type of ProductSpecification that belongs to a grouping of ProductSpecifications made available to the market. It inherits of all attributes of ProductSpecification.
ProductSpecification: is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.
Field | Description |
brand | The manufacturer or trademark of the specification |
description | A narrative that explains in detail what the product specification is |
href | Reference of the product specification |
id | Unique identifier of the product specification |
isBundle | isBundle determines whether a productSpecification represents a single productSpecification (false), or a bundle of productSpecification (true). |
lastUpdate | Date and time of the last update |
lifecycleStatus | Used to indicate the current lifecycle status |
name | Name of the product specification |
productNumber | An identification number assigned to uniquely identify the specification |
validFor | The period for which the product specification is valid |
version | Product specification version |
ProductSpecCharacteristic: A characteristic quality or distinctive feature of a ProductSpecification. The characteristic can be take on a discrete value, such as color, can take on a range of values, (for example, sensitivity of 100-240 mV), or can be derived from a formula (for example, usage time (hrs) = 30 – talk time *3). Certain characteristics, such as color, may be configured during the ordering or some other process.
Field | Description |
configurable | If true, the Boolean indicates that the productSpecCharacteristic is configurable |
description | A narrative that explains in detail what the productSpecCharacteristic is |
name | Name of the productSpecCharacteristic |
valueType | A kind of value that the characteristic can take on, such as numeric, text and so forth |
validFor | The period for which the productSpecCharacteristic is valid |
ProductSpecCharacteristicValue: A number or text that can be assigned to a ProductSpecCharacteristic.
Field | Description |
default | Indicates if the value is the default value for a characteristic |
unitOfMeasure | Could be minutes, GB… |
validFor | The period of time for which a value is applicable |
value | A discrete value that the characteristic can take on |
valueFrom | The low range value that a characteristic can take on |
valueTo | The upper range value that a characteristic can take on |
valueType | A kind of value that the characteristic can take on, such as numeric, text, and so forth |
ProductSpecificationRelationship: A migration, substitution, dependency or exclusivity relationship between/among product specifications.
Field | Description |
href | Reference of the productSpecification |
validFor | The period for which the productSpecificationRelationship is valid |
type | Type of relationship such as migration, substitution, dependency, exclusivity |
id | Unique identifier of the productSpecification |
RelatedParty: Defines party or partyRole linked to a specific entity.
Field | Description |
id | Unique identifier of related party |
href | Reference of the relatedParty, could be a party reference or a partyRole reference |
name | Name of the related party |
role | Role of the related party |
validFor | The period for which the related party is linked to the entity |
ResourceSpecification: ResourceSpecification(s) required to realize a ProductSpecification.
Field | Description |
href | Reference of the resource specification |
id | Unique identifier of the resource specification |
name | Name of the requiredResourceSpecification |
version | Resource specification version |
ServiceSpecification: ServiceSpecification(s) required to realize a ProductSpecification.
Field | Description |
href | Reference of the serviceSpecification |
id | Unique identifier of the service specification |
name | Name of the requiredServiceSpecification |
version | Service specification version |
UML model:
Export Job Resource
An ExportJob resource represents a TASK used to export resources to a File
The ExportJob resource supports the following properties:
Attribute name | Description |
query | Used to scope the exported data (identical to GET filter construct using target ID as base) |
path | URL of the root resource acting as the source for streaming content to the file specified by the ExportJob |
content-type | The format of the exported data .By default "application/json" |
status | notstarted, running, succeeded, failed |
url | URL of the File containing the data to be exported
|
completionDate | Date at which the Job was completed. |
creationDate | Date at which the Job was created. |
errorLog | Reason for Failure |
JSON representation of an ExportJob
{ "id": "54", "href": "http:/api/catalogManagement/exportJob/54", "status": "running", "path": "partyManagement/", "content-type": "application/json", "errorLog": "", "creationDate": "2013-04-19T16:42:23-04:00", "completionDate": "2013-04-21T16:42:23-04:00", "url": "ftp://ftp.myCatalog.com/party/54" } |
UML Model:
Import Job Resource
An ImportJob resource represent a TASK used to import resources from a File
The ImportJob resource supports the following properties:
Attribute name | Description |
content-type | The format of the imported data. By default "application/json" |
path | URL of the root resource where the content of the file specified by the ImportJob must be applied |
status | notstarted, running, succeeded, failed |
url | URL of the File containing the data to be imported
|
completionDate | Date at which the Job was completed. |
creationDate | Date at which the Job was created. |
errorLog | Reason for Failure if status is failed |
JSON representation of an ImportJob
{ "id": "54", "href": "http:/api/catalogManagement/importJob/54", "status": "completed", "path": "catalogManagement/", "content-type": "application/json", "errorLog": "", "creationDate": "2013-04-19T16:42:23-04:00", "completionDate": "2013-04-21T16:42:23-04:00", "url": "ftp://ftp.myCatalog.com/party/54" } |
UML Model:
Notification Resource Models
Two notification event types are defined:
- CatalogChangeNotification
- CatalogChangeBatchNotification
Catalog Notification UML Diagram:
Catalog change notification: notifies that a catalog has been updated.
{ "event": { "id": "01", "dateTime": "2013-04-19T16:42:25-30:00", "eventType": "Catalog change notification", "catalog": [ { "id": "10", "href": "http://serverlocation:port/catalogManagement/catalog/10", "version": "2.0", "lastUpdate": "2013-04-19T16:42:23-04:00", "type": "Product Catalog", "name": "Catalog Wholesale Business" } ] } } |
Catalog change batch notification: notifies in detail all catalog updates.
{ "event": { "id": "01", "dateTime": "2013-04-19T16:42:25-30:00", "eventType": "Catalog change batch notification", "catalog": [ { "id": "10", "href": "http://serverlocation:port/catalogManagement/catalog/10", "version": "2.0", "lastUpdate": "2013-04-19T16:42:23-04:00", "type": "Product Catalog", "name": "Catalog Wholesale Business", "update": [ { "op": "add", "path": "/category", "value": { "id": "42", "href": "http://serverlocation:port/catalogManagement/category/42", "lastUpdate": "2013-04-19T16:42:23-04:00", "version": "2.0", "lifecycleStatus": "Active", "validFor": { "startDateTime": "2013-04-19T16:42:23-04:00", "endDateTime": "" }, "parentId": "", "isRoot": "true", "name": "Home, Audio/Entertainement", "description": "A category to hold all inside offers" } }, { "op": "add", "path": "/category", "value": { "id": "421", "href": "http://serverlocation:port/catalogManagement/catalog/421", "lastUpdate": "2013-04-19T16:42:23-04:00", "version": "2.0", "lifecycleStatus": "Active", "validFor": { "startDateTime": "2013-04-19T16:42:23-04:00", "endDateTime": "" }, "parentId": "42", "isRoot": "false", "name": "Wireless sensors", "description": "A category to hold all wireless sensor offers" } }, { "op": "add", "path": "/productSpecification", "value": { "id": "14", "href": "http://serverlocation:port/catalogManagement/productSpecification/14", |
Export and Import Job Notifications
- Export Job Completion Notification
- Import Job Completion Notification
UML Model:
Event: ExportJobCompletionNotification
{ "eventType": "ExportJobCompletionNotification", "eventTime": "2014-09-27T05:46:25.0Z", "eventId": "1154278", "event": {"exportJob": { "id": "54", "href": "http:/api/catalogManagement/exportJob/54", "status": "succeeded", "path": "catalogManagement/", "content-type": "application/json", "errorLog": "", "creationDate": "2013-04-19T16:42:23-04:00", "completionDate": "2013-04-21T16:42:23-04:00", "url": "ftp://ftp.mycatalog.com/catalogManagement/54.json" }} } |
Event: ImportJobCompletionNotification
{ "eventType": "ImportJobCompletionNotification", "eventTime": "2014-09-27T05:46:25.0Z", "eventId": "1154278", "event": {"importJob": { "id": "54", "href": "http:/api/catalogManagement/importJob/54", "status": "succeeded", "path": "catalogManagement/", "content-type": "application/json", "errorLog": "", "creationDate": "2013-04-19T16:42:23-04:00", "completionDate": "2013-04-21T16:42:23-04:00", "url": "ftp://ftp.mycatalog.com/catalogManagement/54.json" }} } |