Skip to main content
Version: 2.4

Catalog and Category

The Catalog structure is the foundation of the Catalog module and follows TM Forum catalog-management terminology.

  • A Catalog is the root business container.
  • A Category groups entries in logical containers and supports hierarchy.
  • A Specification (described in the next document) is attached to a category and carries the detailed definition.

This document starts with business meaning and TM Forum-aligned terms, then provides full field-level references.


1. Business Meaning

1.1 What a Catalog Represents

A catalog is the top-level business boundary for a coherent offer domain.

TM Forum wording:

  • TMF620 (ProductCatalog) describes catalog as a collection of product offerings for a target channel/context.
  • TMF633 (ServiceCatalog) describes catalog as the root entity that groups service specifications made visible through service candidates.
  • TMF634 (ResourceCatalog) describes catalog structures used to organize resource candidates/specifications for technical resource domains.

In tSM, Catalog is used as a generalized catalog root across multiple domains (PRODUCT, SERVICE, RESOURCE, MATERIAL, SKILL, WORK, PRICELIST, OTHERS).

Business responsibilities of catalog:

  • define domain classification (catalogType),
  • define lifecycle and release visibility (lifecycleStatus, validity interval),
  • provide category-level defaults (entityCatalogCategorySpecId),
  • provide project-level extension metadata (config, dataTags, localizationData),
  • separate governance and ownership between catalog domains.

Typical domain usage:

  • PRODUCT: commercial product portfolio.
  • SERVICE: technical service portfolio.
  • RESOURCE: logical/physical resource portfolio.
  • MATERIAL: stock/material portfolio.
  • SKILL and WORK: workforce capability and work-definition portfolio.
  • PRICELIST: pricing-oriented structures.

1.2 What a Category Represents

A category is a hierarchical grouping unit under one catalog.

TM Forum wording:

  • TMF620 category groups product offerings and can contain subcategories.
  • TMF633 service category groups service candidates and can contain subcategories.

In tSM, category acts as the main taxonomy node for grouping specifications and controlling structural navigation.

Business purpose in tSM:

  • structure large catalog spaces into manageable trees,
  • scope specification placement,
  • control navigation, filtering, and business segmentation,
  • carry category-level dynamic metadata (chars),
  • provide inheritance boundary for configuration profiles and UI forms.

Category can be root-level or nested (parent) and can expose expanded parent/catalog objects for read scenarios.

1.3 Configuration Profile Meaning (Entities & Characteristics Pattern)

Catalog/Category are not only structural nodes. They also define which dynamic business attributes are available and how they are rendered.

  • Catalog.entityCatalogCategorySpecId defines the configuration profile for categories in this catalog. This means category chars are governed by that profile and the profile defines category create/detail forms. Business use case: add category-level configuration like market segment, target customer segment, or regional scope.

  • Category.entitySpecificationSpecId defines the configuration profile for specifications created in this category. This means specification chars are governed by the category-selected profile. Business use case: define product/service-level attributes like available speed, segment, provisioning options, or regional availability.

Important distinction:

  • attributes defined by Category.entitySpecificationSpecId are specification-level attributes (shared by all instances of that specification),
  • instance-specific runtime values (for example IP address, serial number, line state) belong to inventory-level entities, not to catalog specification configuration.

1.4 Typical Structural Flow

  1. Create catalog with catalogType, lifecycleStatus, and validity.
  2. Define root categories for business segmentation.
  3. Add subcategories for deeper taxonomy.
  4. Assign category-level profile and dynamic metadata.
  5. Place specifications into target categories.
  6. Publish/activate through lifecycle and validity governance.

1.5 TM Forum to tSM Terminology Mapping

TM Forum TermtSM EquivalentNotes
ProductCatalog (TMF620) / ServiceCatalog (TMF633) / ResourceCatalog (TMF634)CatalogtSM unifies catalog concepts across domains.
Category / ServiceCategoryCategoryHierarchical grouping unit under catalog.
ProductOffering / ServiceCandidateSpecification usage contextIn tSM, these publication/use patterns are typically realized through specification placement, relationships, and downstream module behavior.
ProductSpecification / ServiceSpecificationSpecificationDetailed definition template (covered in next document).

1.6 Why This Model Works for BSS/OSS

  • separates commercial and technical domains while keeping a unified API model,
  • supports large catalogs through category tree decomposition,
  • allows controlled publication via lifecycle and validity intervals,
  • keeps extension in metadata/configuration instead of schema branching,
  • stays close to TM Forum conceptual model while remaining implementation-pragmatic.

2. Structural Behavior and Rules

  • One category belongs to exactly one catalog (entityCatalog).
  • Category hierarchy is self-referential via parent.
  • Catalog and category validity windows limit active usage and publication period.
  • Category metadata (chars) is configuration-driven and can evolve without schema migrations.
  • Search/indexing typically differentiates category and specification via EntityTypeElastic.

2.1 Lifecycle and Publication Semantics

  • lifecycleStatus controls governance state (for example draft/active/retired patterns, depending on configured status table).
  • validityFrom/validityTo controls time-bound availability.
  • valid represents computed runtime validity result.

Both status and validity should be treated together when deciding whether a catalog/category is operationally usable.

2.2 Root and Tree Semantics

  • In TM Forum, categories have explicit root semantics (isRoot in TMF models).
  • In tSM, root is represented structurally by absence of parent.
  • Tree traversal and expansion are supported via parent, parentExpanded, and catalogExpanded.

2.3 Catalog.config Governance

Catalog.config can contain any additional JSON attributes needed by project/business logic.

To keep consistent UI and validation across catalogs:

  • define a system form with code Catalog.Config,
  • use that form as the canonical JSON structure and UI contract for the config payload.

This keeps configuration flexible but still controlled and understandable for administrators.

2.4 TM Forum References


3. Entity Reference: Catalog (Catalog)

FieldTypeRequiredRead-onlyDescription
idUUIDNoNoCatalog primary key. Can be client-provided UUIDv4 or generated by tSM.
nameStringYesNoHuman-readable catalog name.
codeStringYesNoTechnical/business key. Should use ASCII without spaces.
validityFromDateNoNoCatalog validity start.
validityToDateNoNoCatalog validity end.
dataTagsList<String>NoNoOptional labels/tags for classification and filtering.
catalogTypeCatalogTypeYesNoClassification of catalog domain. For utilization semantics see TMF620 ProductCatalog, TMF633 ServiceCatalog, and TMF634 ResourceCatalog references.
entityCatalogCategorySpecIdUUIDNoNoConfiguration profile for categories in this catalog (Entities & Characteristics pattern). Defines which category characteristics belong here and how category create/detail forms are rendered.
configMap<String, Any?>NoNoFree JSON configuration payload. Recommended governance: define system form Catalog.Config as the canonical structure and UI for this field.
descriptionStringNoNoOptional catalog description.
localizationDataLocalizationDataNoNoLocalized values for selected fields.
lifecycleStatusStringYesNoLifecycle status code (FK EntityCatalogStatus.code).
priceBookBooleanNoNoPrice books are not currently supported as a dedicated capability in tSM. Model this using pricing settings and/or the characteristics pattern.

3.1 Enum Reference: CatalogType

ValueMeaning
PRODUCTProduct catalog classification. See TMF620 ProductCatalog for reference semantics.
SERVICEService catalog classification. See TMF633 ServiceCatalog for reference semantics.
RESOURCEResource catalog classification. See TMF634 ResourceCatalog for reference semantics.
MATERIALMaterial/asset catalog.
SKILLSkill-definition catalog.
WORKWork/task catalog.
PRICELISTPricing-oriented catalog.
OTHERSGeneric/other domain catalog.

4. Entity Reference: Category (Category)

FieldTypeRequiredRead-onlyDescription
idUUIDNoNoCategory primary key. Can be provided or generated.
nameStringYesNoCategory display name.
codeStringYesNoCategory technical code.
entitySpecificationSpecIdUUIDNoNoConfiguration profile for specifications in this category (Entities & Characteristics pattern). Defines which specification characteristics belong here and how specification create/detail UI is rendered. These are specification-level attributes shared by all instances; instance-specific runtime values are stored at inventory level.
charsTsmCharsNoNoDynamic category attributes (characteristics map).
entityCatalogStringYesNoOwning catalog code (FK EntityCatalog.code).
catalogExpandedCatalogNoYesExpanded owning catalog object (when expansion is requested).
dataTagsList<String>NoNoOptional labels/tags.
descriptionStringNoNoCategory description.
parentStringNoNoParent category code (FK self.code).
parentExpandedCategoryNoYesExpanded parent category object (when expansion is requested).
instancePrivList<String>NoNoInstance-level privilege payload.
validityFromDateNoNoCategory validity start.
validityToDateNoNoCategory validity end.
sortOrderIntNoNoOrdering value for UI/tree rendering.
iconStringNoNoOptional UI icon identifier.
processingDataProcessingDataNoWrite-onlyTransient processing context for runtime processing; not stored as standard business attributes.

4.1 Enum Reference: CategoryExpand

ValueMeaning
PARENTExpand parent category object.
CATALOGExpand owning catalog object.

5. Supporting Entities and Enums

5.1 Catalog Status Registry (EntityCatalogStatus)

Configurable code table for catalog lifecycle statuses.

FieldTypeRequiredRead-onlyDescription
idUUIDNoNoStatus record primary key.
codeStringYesNoTechnical status code.
nameStringYesNoUser-facing status name.
validityFromDateNoNoValidity start.
validityToDateNoNoValidity end.
descriptionStringNoNoStatus description.
localizationDataLocalizationDataNoNoLocalized labels/descriptions.
dataTagsList<String>NoNoOptional labels.
configMap<String, Any?>NoNoAdditional configuration payload.

5.2 Search Discriminator (EntityTypeElastic)

ValueMeaning
CATEGORYSearch/index scope is category documents.
SPECIFICATIONSearch/index scope is specification documents.