<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.25 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-palmero-opsawg-dmlmo-10" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="DMLMO">Data Model for Lifecycle Management and Operations</title>

    <author initials="M." surname="Palmero" fullname="Marisol Palmero">
      <organization>Cisco Systems</organization>
      <address>
        <email>mpalmero@cisco.com</email>
      </address>
    </author>
    <author initials="F." surname="Brockners" fullname="Frank Brockners">
      <organization>Cisco Systems</organization>
      <address>
        <email>fbrockne@cisco.com</email>
      </address>
    </author>
    <author initials="S." surname="Kumar" fullname="Sudhendu Kumar">
      <organization>NC State University</organization>
      <address>
        <email>skumar23@ncsu.edu</email>
      </address>
    </author>
    <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari">
      <organization>Thoughtspot</organization>
      <address>
        <email>shwetha.bhandari@thoughtspot.com</email>
      </address>
    </author>
    <author initials="C." surname="Cardona" fullname="Camilo Cardona">
      <organization>NTT</organization>
      <address>
        <email>camilo@ntt.net</email>
      </address>
    </author>
    <author initials="D." surname="Lopez" fullname="Diego Lopez">
      <organization>Telefonica I+D</organization>
      <address>
        <email>diego.r.lopez@telefonica.com</email>
      </address>
    </author>

    <date year="2023" month="July" day="07"/>

    <area>operations</area>
    <workgroup>OPSA Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document includes a data model for assets lifecycle management and operations. The primary objective of the data model is to measure and improve the network operators' experience along the lifecycle journey, from technical requirements and technology selection through renewal, including the end of life of an asset.</t>

<t>This model is based on the information model introduced in <xref target="I-D.draft-palmero-opsawg-ps-almo-00"/>.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>The virtualization of hardware assets and the development of applications using microservice architecture for cloud-native infrastructure created new utilization and licensing models. For example, a service can be deployed by composing multiple assets together; where an asset refers to hardware, software, application, system or service. The service could also be instantiated dynamically. As an example, cloud-native infrastructures from one vendor may be hosted on the physical server from another vendor or a combination of multiple cloud-native functions from one or more vendors can be combined to execute any service.</t>

<t>This introduces challenges for both lifecycle and adoption management of the assets. For example, a user may need to identify the capability availability of different assets or measure the usage of each capability (or the combination) from any specific asset to measure its optimal potential.  Moreover, a user could pinpoint the reason: the software application could not be optimally deployed, or is not simple to use, or is not well documented, etc.  The user may use feed such measurements and analysis metrics back to the support engineers and the developers, so they can focus their work effort only on features that users are adopting, or even determine when the lifecycle of the development could end.</t>

<t>This creates the need to collect and analyze asset-centric lifecycle management and operations data. From now on this data will be referred as Lifecycle Management and Operations (LMO); where LMO is not limited to virtualized or cloud environments, it covers all types of networking environments in which technology assets are deployed.</t>

<t>LMO data constitutes data needed to measure asset-centric lifecycle metrics including but not limited to asset adoption and usability, licensing, supported features and capabilities, enabled features and capabilities, etc. The primary objective is to facilitate the asset lifecycle management from the initial asset selection and positioning, licensing, feature enablement and usage, and beyond renewal to improve the overall user experience.</t>

<t>The main challenge in collecting LMO-related data, especially in a multi-vendor environment, relies on the ability to produce and consume such data in a vendor-agnostic, consistent and synchronized manner. Another challenge will be to maintain/cleanup the data (e.g., update it with EoL/EoS). APIs or telemetry are meant to collect and relay this data to receiving equipment for storing, analysis and/or visualization.</t>

<t>This document describes the motivation for LMO, lists use cases, followed by the information model and data model of LMO. The list of use cases describes the need for new functional blocks and their interactions. The current version of this document focuses on assets, entitlement information, features, feature's usage and events to report. This document specifies five YANG modules <xref target="RFC7950"/> focused on LMO, including:</t>

<t><list style="symbols">
  <t>Entitlement,</t>
  <t>Assets,</t>
  <t>Asset features,</t>
  <t>Usage level of asset features, and</t>
  <t>Event to report Incident Management.</t>
</list></t>

<t>This document is organized as follows.  Section 2 establishes the terminology and abbreviations.  In Section 3, the goals and motivation of LMO are discussed.  In Section 4, use cases are introduced. Section 5 specifies the information model and the data models for LMO.</t>

<section anchor="requirements-language"><name>Requirements language</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="terminology"><name>Terminology</name>

<t>The document makes uses of the following terms:</t>

<t><list style="symbols">
  <t>Asset: refers to hardware, software, or services. An asset can be physical or virtual.</t>
  <t>Consumer: refers to an entity that utilizes the outcomes of LMO. A consumer can be a user, a developer or some other interested third party.</t>
  <t>Developer: refers to the entity that creates or develops an asset or an asset component.</t>
  <t>Features: are options or functional capabilities available in an asset.</t>
  <t>Entitlement: also known as license, is issued by an entity such as the developer and allows the user to operate the asset. Entitlements determine how the asset can be leveraged and what is required in cases the asset is changed.</t>
  <t>Event report: refers to record of details of an incident that a user reports.</t>
  <t>Lifecycle Management and Operations (LMO) connects to: 
   1. Assets as a generalized entity subject to LCM.
   2. Entitlements as the essential policy root for LCM.
   3. Metrics as the evidence for LCM transitions.
   4. Reports (no incidents) as the way of collecting input from users.</t>
  <t>Optimal Software Version(OSV): refers to the elected software version considered optimal in the user environment.</t>
  <t>Usage: refers to how features of the asset are used.</t>
  <t>User: refers to owner or consumer of the asset. User belongs to an organization. Within the organization there are entities that: a) use the assets in their operations, b) manage the assets. 
 For example supply chain and risk management teams will also be users. For example, running what-if scenarios to anticipate decommissioning operations or assess the impact of component exhaustion, etc.</t>
  <t>User Experience: how a user interacts with and experiences a particular asset. It includes a user's perceptions of ease of use, efficiency, and utility of an asset.</t>
</list></t>

<t>Abbreviations:</t>

<t><list style="symbols">
  <t>EOL: End of Life.</t>
  <t>LMO: Lifecycle Management and Operations.</t>
  <t>PID: Product Identifier.</t>
</list></t>

</section>
<section anchor="motivation"><name>Motivation</name>

<t>The user experience with a specific asset can be organized into four classes:</t>

<t><list style="numbers">
  <t>Asset characteristic class, covering anything related to asset, entitlement, features, etc.</t>
  <t>Utilization class, to measure how the assets and features are used, duration of usage, uptime, etc.</t>
  <t>Notification class, covering any security advisory, retirement, etc.</t>
  <t>Incident class, to record and report any problem the user has faced with the asset.</t>
</list></t>

<t>The ability to measure, produce and consume LMO could benefit the user organization in addressing issues such as:</t>

<t><list style="symbols">
  <t>Entitlements may not have been obtained at the optimum level for a given feature, where a user might have bought entitlements that are not activated.</t>
  <t>Features of an asset might not be used as needed in all deployments within the organization.</t>
  <t>Resolution of incidents involving the asset and the developer of a technology used within the asset.</t>
  <t>Virtualized asset lifecycle events, such as scaling or migration.</t>
  <t>Facilitating DevOps deployment, including automated testing/certification procedures.</t>
  <t>A link to supply chain management (SBOM, etc.) and/or connect it with the provenance information.</t>
</list></t>

<t>In addition to the resolution of incidents, LMO could allow developer organizations to optimize the features they offer.  For example, they could consider deprecating features that are used infrequently or focus on introducing more features for the assets that are widely deployed in various infrastructures.</t>

<t>LMO also covers the need of communication between users and the developer.  LMO can provide the capability for users to provide feedback about any asset (e.g., potential deficiency of a feature, feature enhancement request).  An administrator in the user organization may include specific metrics that identify a potential problem of that specific feature or a capability of the asset.  An engineer in the developer organization can determine the impact of the potential deficiency from the number of users providing feedback.  Note that this channel is different from a "call to a Technical Assistance Center" in which the user may request help in resolving operational issues with the asset.</t>

</section>
<section anchor="use-cases"><name>Use Cases</name>

<section anchor="entitlement-inventory-and-activation"><name>Entitlement Inventory and Activation</name>

<t>An operations engineer would like to understand which entitlements are activated and which are used and/or consumed. It is also important for asset users to understand which features within their assets might need a entitlement and how to activate them.</t>

<t>It is relatively straightforward to have an inventory of existing entitlements when there is only one asset developer (providing the asset) and one asset family.</t>

<t>But complexity grows when there are many different developers, systems and processes involved. New service offerings have introduced new attributes and datasets and require alignment with new business models (pay-per-product, subscription model, pay-as-you-go model, etc.). They might support different entitlement types and models: asset activation keys, trust-based model, systems that act as proxy from the back end owned by the asset developer to support the control of entitlements, etc.</t>

<t>Sometimes it is a challenge to report which entitlements have been bought by the asset user, or who in the user organization owns that entitlement because that information might rely on different asset developers; even within the same asset developer, entitlements may correspond to different types or groups of assets. Asset users often need to interact with different entitlement systems and processes.</t>

<t>Information on how assets are entitled could be delivered from a combination of attributes such as: sales order, purchase order, asset activation key, serial number, etc.</t>

<t>If there is no consistency on how to deal with those data points, complexity increases for the consumer, potentially requiring manual steps. Automating those manual steps or exceptions becomes time-consuming, eventually leading to higher costs for the asset consumer.</t>

<t>Having a common data model for LMO eases the integration between different data sources, processes, and consolidation of the information under a common reference.</t>

</section>
<section anchor="features-in-use"><name>Features in Use</name>

<t>Feature logic is required to identify the configured features from the running configuration and determine how they might be used. There is often a lack of an easy method to list any configured features available in the current asset.</t>

<t>This information is extracted from the running configuration many times, implemented by a rule system without having an easy method to list any configured features available in the current asset.</t>

<t>Some of these use cases need to be built on top of others, and from them, other more complex use cases could be created. For instance, Software Compliance use cases can be automated, based on use cases like security advisory, errata, End of Life(EOL), etc.</t>

<t>All this brings a complete set of use cases that fulfills Lifecycle Management of assets, complementing and providing metrics on how asset users are using assets and how their experience from using those assets can be improved.</t>

</section>
<section anchor="assets-in-use"><name>Assets in Use</name>

<t>Current approach to quantify how an asset is used, requires volume or aggregated usage/consumption metrics related to deployed assets, functions, features, integrations, etc. Also the need to quantify which metrics might be associated to a user, an organization, to specific services and how often are used; while others may be based on pre agreed profile (contractural or usage) of intented use. Examples include:</t>

<t><list style="symbols">
  <t>Number of search/queries sent by the user.</t>
  <t>Amount of data returned to the user.</t>
  <t>Amount of active time spent using the asset/feature.</t>
  <t>Number of concurrent users accessing the asset/feature.</t>
  <t>Number of features in use.</t>
  <t>Number of users or sites using those features, etc.</t>
</list></t>

<t>The information models and data models for LMO include data fields to support metrics that might be required by consumption-based charging and licensing of asset usage.</t>

</section>
<section anchor="risk-mitigation-check-rmc"><name>Risk Mitigation Check (RMC)</name>

<t>Network, software and cloud engineers would like to be aware of known issues that are causing assets to crash so that they can act to remediate the issue quickly, or even prevent the crash if alerts are triggered on time.  There are analytics tools that can process memory core dumps and crash-related files, providing the ability to the asset developers to determine the root cause.</t>

<t>Accordingly, asset users can remediate the problem, automate the remedy to enable incident deflection, allowing the support staff to focus on new problems.  The goal of introducing normalization is not to define attributes for each of the elements being part of the crash information, but the results of RMC should be normalized and registered.</t>

<t>Risk Mitigation Check could also include the possibility to be aware of current and historical restarts allowing network and software engineers to enhance the service quality to asset users.</t>

</section>
<section anchor="errata"><name>Errata</name>

<t>Both hardware and software critical issues or Errata need development to automate asset user matching:</t>

<t><list style="symbols">
  <t>Hardware Errata match on product identifiers (PIDs) + serial numbers along with additional hardware attributes.</t>
  <t>Software Errata match on software type and software version along with some additional device attributes.</t>
</list></t>

<t>Engineering might develop the logic to check whether any critical issue applies to a single serial number or a specific software release.</t>

<t>The information to be correlated includes customer identification, entitlement, and asset information that the asset user might own. All this information needs to be correlated with hardware and software Errata, and EOL information to show which part of the asset inventory might be affected.</t>

</section>
<section anchor="security-advisory"><name>Security Advisory</name>

<t>The Security Advisory use case automates the matching of asset user data to security bulletins published by asset
developers.<br />
Security Advisory logic implemented by developers could apply to a specific software release.</t>

</section>
<section anchor="optimal-software-version-osv"><name>Optimal Software Version (OSV)</name>

<t>The objective of the Optimal Software Version (OSV) use case is that consumers can mark software images as OSV for their assets; based on this, it is easier for them to control and align their hardware and software assets to the set of OSVs.</t>

<t>Based on the logic of OSV, use cases like software compliance, risk trend analysis, acknowledge bugs, security advisories, errata, what-if analysis, etc., could be realized.</t>

<section anchor="software-conformance"><name>Software Conformance</name>

<t>All the assets should be at their latest recommended software version in case a security update is required to address a security issue of a specific feature.</t>

<t>The Software Conformance use case provides a view to the asset users and informs the users whether the assets that belong to a specific group conforms to the OSV or not.  It can provide the users with a report, including a representation of software compliance for the entire network and software applications.  This report could include the current software version running on the asset and the recommended software version. The report could enable users to quickly highlight which group of assets might need the most attention to inspire appropriate actions.</t>

<t>The Software Conformance use case uses data that might not be provided by the asset itself. Data needs to be provided and maintained also by the asset developers, through e.g., asset catalog information.  Similar logic applies to a feature catalog, where the asset developer maintains the data and updates it adequately based on existing bugs, security advisories, etc.</t>

<t>The Software Conformance process needs to correlate the Software catalog information with the software version running on the asset.</t>

</section>
<section anchor="risk-trend-analysis"><name>Risk Trend Analysis</name>

<t>The Risk Trend Analysis use case provides customers with a risk trend analysis, summarizing what might change before applying changes, including registered bugs, security advisories and errata.</t>

</section>
<section anchor="what-if-analysis"><name>What-if Analysis</name>

<t>The What-if Analysis use case allows asset users to plan for new hardware or software, giving them the possibility to change the config parameters or model how new hardware or software might change the software suggestions generated by OSV.</t>

<t>OSV and the associated use cases involve dependencies on attributes that might need to be collected from assets directly, including related inventory information (serial numbers, asset identifiers, software versions, etc.), but also dynamic information could be required, like:</t>

<t><list style="symbols">
  <t>Information on features that might be enabled on the particular asset.</t>
  <t>Catalogs, that might include information related to release notes. For example, consider a feature catalog. This catalog could include software versions that support a specific feature; the software releases that a feature is supported in; or the latest version that a feature is supported in, in case the feature is EOL.</t>
  <t>Data sources to correlate information coming from reports on critical issues or errata, security advisory, End of Life, etc.</t>
</list></t>

<t>Those catalogs and data sources with errata information, EOL, etc. need to be maintained and updated by asset developers, making sure, that the software running on the assets is safe to run and up to date.</t>

</section>
</section>
<section anchor="asset-retirement-end-of-life-eol"><name>Asset Retirement - End of Life (EOL)</name>

<t>Hardware EOL reports need to map Hardware EOL PIDs, focusing on base PIDs so that bundles, spares, non-base PIDs, etc., do not provide false EOL reporting to asset users. Software EOL reports are used to automate the matching of user software type and software version to software EOL bulletins.</t>

</section>
</section>
<section anchor="information-model"><name>Information Model</name>

<t>The broad metric classes defined in section 3 that quantify user experience can be modeled as shown in Figure 1. There is an inventory of all assets that the user possesses.  Each asset in the inventory may be entitled to one or more entitlements; a entitlement may contain one or more sub-entitlements.  The level of usage for each feature and entitlement associated with the asset is measured.  For every asset, a list of events report could be created.</t>

<t>For example, a user needs to measure the utilization of a specific entitlement for a specific type of asset.  The information about the entitlement may reside in a entitlement server.  The state (activated or not) of the entitlement may reside with the asset itself or a proxy.  They can be aggregated/correlated as per the information model shown in Figure 1 to give information to the user regarding the utilization of the entitlements.  The user experience is thus enhanced by having accurate knowledge about the utility of the given entitlement.</t>

<figure><artwork><![CDATA[
 may_be_part_of                                    may_be_part_of
   +------+                                            +-------+
   |      |                                            |       |
   |      v                                            v       |
+------------+  entitled_by            tracked_by   +------------+
|Entitlements|<------------+          +-------------|   Usage    |
+------------+-----------+ | may_be_  | +---------->+------------+
|Entitlement | entitles  | | part_of  | | tracks    |  Features  |
| attributes |           | | +------+ | |           | and usage  |
+------------+           | | |      | | |           | attributes |
                         v | |      v v |           +------------+
                        +----------------+          
                        |     Asset      |                         
          future_       +----------------+    generated_by        
          association   |     Asset      |<----------------+
            +---------->|   attributes   |---------------+ |
            |           +----------------+    generates  | |
            v                                            v |
      +-----------+                                 +------------+
      |  Future   |                                 |Event Report|
      | Expansion |                                 +------------+
      +-----------+                                 |    Event   |
                                                    |   Report   |
                                                    | attributes |
                                                    +------------+

                 Figure 1: Information Model 
]]></artwork></figure>

<t>The model allows for future expansion by new metrics that will quantify network operator and user experience. Notice that future asociation relationship and future expansion might be linked to asset or to one of the other datasets: Feature, Usage or Entitlements. 
 An example of future association is Event Report module, as well as User and Organization data models introduced in the next section. For sake of simplicity they have not been included in Figure 1; they have direct association with asset. Also, feature usage are split into two different YANG modules: Feature and Usage.</t>

</section>
<section anchor="data-models"><name>Data Models</name>

<section anchor="tree-diagrams-of-the-modules-that-form-lmo"><name>Tree Diagrams of the modules that form LMO</name>

<section anchor="aggregated-asset"><name>Aggregated Asset</name>

<t>This specification uses <xref target="RFC9179"/>, <xref target="I-D.draft-ietf-opsawg-sbom-access-10"/>
    module: ietf-lmo-assets</t>

<figure><artwork><![CDATA[
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw role?                     identityref
    +--rw aggregation?              boolean
    +--rw number-of-instances?      uint32
    +--rw platform-dependency-os?   identityref
    +--rw install-location
    |  +--rw geo-location
    |     +--rw reference-frame
    |     |  +--rw alternate-system?    string {alternate-systems}?
    |     |  +--rw astronomical-body?   string
    |     |  +--rw geodetic-system
    |     |     +--rw geodetic-datum?    string
    |     |     +--rw coord-accuracy?    decimal64
    |     |     +--rw height-accuracy?   decimal64
    |     +--rw (location)?
    |     |  +--:(ellipsoid)
    |     |  |  +--rw latitude?    decimal64
    |     |  |  +--rw longitude?   decimal64
    |     |  |  +--rw height?      decimal64
    |     |  +--:(cartesian)
    |     |     +--rw x?           decimal64
    |     |     +--rw y?           decimal64
    |     |     +--rw z?           decimal64
    |     +--rw velocity
    |     |  +--rw v-north?   decimal64
    |     |  +--rw v-east?    decimal64
    |     |  +--rw v-up?      decimal64
    |     +--rw timestamp?         yang:date-and-time
    |     +--rw valid-until?       yang:date-and-time
    +--rw deployment-mode?          identityref
    +--rw activation-date?          yang:date-and-time
    +--rw software-version?         string
    +--ro hotfixes
    |  +--ro hostfix* []
    |     +--ro version?   identityref
    |     +--ro order?     uint8
    +--rw software-type?            string
    +--rw sign-of-life-timestamp?   yang:date-and-time
    +--rw tags?                     string
]]></artwork></figure>

</section>
<section anchor="entitlements"><name>Entitlements</name>
<figure><artwork><![CDATA[
module: ietf-lmo-entitlements

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw uid?                string
    +--rw (all-1-asset)?
    |  +--:(all-assets)
    |  |  +--rw all-assets?   boolean
    |  +--:(assets)
    |     +--rw assets
    |        +--rw asset* [lmo-class id]
    |           +--rw lmo-class    -> /ietf-lmo:lmos/lmo/lmo-class
    |           +--rw id           -> /ietf-lmo:lmos/lmo[ietf-lmo:lmo-class  = current()/../lmo-class]/inst/id
    +--rw resource* [id]
    |  +--rw id                string
    |  +--rw name?             string
    |  +--rw summary?          string
    |  +--rw characteristic* [id]
    |     +--rw id             string
    |     +--rw name?          string
    |     +--rw description?   string
    |     +--rw unit?          string
    |     +--rw value?         yang:counter64
    |     +--rw value-max?     yang:counter64
    +--rw features
    |  +--rw feature* [lmo-class id]
    |     +--rw lmo-class    -> /ietf-lmo:lmos/lmo/lmo-class
    |     +--rw id           -> /ietf-lmo:lmos/lmo[ietf-lmo:lmo-class =  current()/../lmo-class]/inst/id
    +--rw state?              ietf-lmo-common:entitlement-state-t
    +--rw renewal-profile
       +--rw activation-date?   yang:date-and-time
       +--rw expiration-date?   yang:date-and-time
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw entitlements
       +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
       +--rw id?          -> /ietf-lmo:lmos/lmo[ietf-lmo:lmo-class =  current()/../lmo-class]/inst/id
]]></artwork></figure>

</section>
<section anchor="features"><name>Features</name>
<figure><artwork><![CDATA[
module: ietf-lmo-feature

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw features
       +--rw feature* [lmo-class id]
          +--rw lmo-class    -> /ietf-lmo:lmos/lmo/lmo-class
          +--rw id           -> /ietf-lmo:lmos/lmo[ietf-lmo:lmo-class =  current()/../lmo-class]/inst/id
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw name?                      string
    +--rw summary?                   string
    +--rw category?                  string
    +--rw entitlement?               string
    +--rw first-available-version?   string
    +--ro backported-versions
    |  +--ro backported-version* []
    |     +--ro version?   identityref
    +--rw scope?                     identityref
    +--rw config-options* [id]
    |  +--rw id                string
    |  +--rw name?             string
    |  +--rw summary?          string
    |  +--rw characteristic* [id]
    |     +--rw id       string
    |     +--rw name?    string
    |     +--rw value?   string
    +--rw asset
    |  +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
    |  +--rw id?          -> /ietf-lmo:lmos/lmo[ietf-lmo:lmo-class = current()/../lmo-class]/inst/id
    +--rw subfeatures
       +--rw subfeature* [lmo-class id]
          +--rw lmo-class    -> /ietf-lmo:lmos/lmo/lmo-class
          +--rw id           -> /ietf-lmo:lmos/lmo[ietf-lmo:lmo-class =  current()/../lmo-class]/inst/id
]]></artwork></figure>

</section>
<section anchor="usage"><name>Usage</name>
<figure><artwork><![CDATA[
module: ietf-lmo-usage

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw feature
    |  +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
    |  +--rw id?          -> /ietf-lmo:lmos/lmo[ietf-lmo:lmo-class =  current()/../lmo-class]/inst/id
    +--rw name?                   string
    +--rw summary?                string
    +--rw uri?                    string
    +--rw deployment-mode?        identityref
    +--rw scope?                  identityref
    +--rw activation-status?      string
    +--rw instances?              uint32
    +--rw count-type?             identityref
    +--rw timestamp?              yang:date-and-time
    +--rw count?                  uint32
    +--rw frequency* [name]
    |  +--rw name         string
    |  +--rw type-freq?   string
    |  +--rw value?       yang:counter64
    +--rw resource-consumption* [id]
       +--rw id                string
       +--rw name?             string
       +--rw summary?          string
       +--rw characteristic* [id]
          +--rw id           string
          +--rw name?        string
          +--rw unit?        string
          +--rw value?       yang:counter64
          +--rw value-max?   yang:counter64
]]></artwork></figure>

</section>
<section anchor="incident-management"><name>Incident Management</name>
<figure><artwork><![CDATA[
module: ietf-lmo-event-report

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw id?                 string
    +--rw title?              string
    +--rw summary?            string
    +--rw severity?           string
    +--rw status?             string
    +--rw created?            yang:date-and-time
    +--rw last_updated?       yang:date-and-time
    +--rw capability?         string
    +--rw technology?         string
    +--rw subtechnology?      string
    +--rw problem-type?       string
    +--rw resolution?         string
    +--rw owner?              string
    +--rw support-engineer?   string
    +--rw asset
    |  +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
    |  +--rw id?          -> /ietf-lmo:lmos/lmo[ietf-lmo:lmo-class =  current()/../lmo-class]/inst/id
    +--rw feature
    |  +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
    |  +--rw id?          -> /ietf-lmo:lmos/lmo[ietf-lmo:lmo-class =  current()/../lmo-class]/inst/id
    +--rw contract-number?    string
]]></artwork></figure>

</section>
<section anchor="organization"><name>Organization</name>
<figure><artwork><![CDATA[
module: ietf-lmo-organization

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw address?      string
    +--rw department?   boolean
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw organization
       +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
       +--rw id?          -> /ietf-lmo:lmos/lmo[ietf-lmo:lmo-class =  current()/../lmo-class]/inst/id
]]></artwork></figure>

</section>
<section anchor="user"><name>User</name>
<figure><artwork><![CDATA[
module: ietf-lmo-user

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw billing-account?   uint32
    +--rw represents
    |  +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
    |  +--rw id?          -> /ietf-lmo:lmos/lmo[ietf-lmo:lmo-class =  current()/../lmo-class]/inst/id
    +--rw authority?         enumeration
    +--rw email?             string
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw user
       +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
       +--rw id?          -> /ietf-lmo:lmos/lmo[ietf-lmo:lmo-class =  current()/../lmo-class]/inst/id
]]></artwork></figure>

</section>
</section>
<section anchor="lmo-modules"><name>LMO Modules</name>

<section anchor="lmo-common-module"><name>LMO Common Module</name>

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-lmo-common@2023-01-16.yang"
module ietf-lmo-common {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-common";
  prefix ietf-lmo-common;
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>
     Editor:  Josh Suhr
              <mailto:josuhr@cisco.com>
     Editor:  Sudhendu Kumar
              <mailto:skumar23@ncsu.edu>";
  description
    "This YANG module defines a collection of useful data types
     and identity for Lifecycle Management and Operations (LMO).

     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions  
  
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  
  revision 2023-01-16 {
    description
      "rename license by entitlement";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-02-28 {
    description
      "Introduced flexible root structure";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2021-08-23 {
    description
      "Initial revision for Common Module as part of the LMO
       YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  typedef entitlement-id-t {
    type string;
    description
      "Entitlement ID Type";
  }
  typedef entitlement-model-t {
    type enumeration {
      enum perpetual {
        description
          "Perpetual entitlement";
      }
      enum subscription {
        description
          "Subscription entitlement";
      }
      enum usage-based {
        description
          "Usage-based entitlement";
      }
      enum other {
        description
          "Undefined entitlement type";
      }
    }
    description
      "Entitlement Model Type";
  }
  identity entitlement-buying-program-t {
    description
      "Entitlement Buying Program that contains the plan to generate
       revenue for specific asset";
  }
  identity enterprise-agreement {
        base entitlement-buying-program-t; 
        description
          "Enterprise Agreement";
  }
  identity managed-service-entitlement-agreement {
        base entitlement-buying-program-t; 
        description
          "Managed Service Entitlement Agreement";
  }
  identity service-provider-network-agreement {
        base entitlement-buying-program-t; 
        description
          "Service Provider Network Agreement";
  }
  identity collab-active-user {
        base entitlement-buying-program-t; 
        description
          "Collaboration Active User";
  }
  identity service-full-coverage {
        base entitlement-buying-program-t; 
        description
          "Service Full-Coverage";
  }
  identity offer-type-t {
    description
      "License Offer Type, part of the plan to generate revenue
       for specific asset";
  }
  identity perpetual-software {
      base offer-type-t;
      description
          "Perpetual softwar gives the user the right to use the
           program indefinitely";
  }
  identity standalone-hardware {
      base offer-type-t;
      description
          "Standalone hardware is able to function independently
           of other hardware";
  }
  identity on-premise-software-subscription {
      base offer-type-t;
      description
          "On-Premise software subscription, relates to a temporary
           on-prem licencing model, allowing users to pay a per user 
           fee";
  }
  identity cloud-software-saas-subscription {
      base offer-type-t;
      description
          "Cloud Software (SaaS) subscription is a service busines
           model where the user is entitled to use the cloud software
           for a specific time period";
  }
  identity third-party-software {
      base offer-type-t;
      description
          "It includes licenses, entitlements, agreements, obligations
          or other commitment under which the user can use the asset 
          not directly sold by the manufacturer";
  }
  identity flex-cloud-prem-subscription {
      base offer-type-t;
      description
          "Flex Cloud-Prem subscription allows software vendors to 
          limit the number of entitlements for the use of the specific 
          asset";
  }
  typedef purchase-order-t {
    type string;
    description
      "License purchase order number";
  }
  typedef entitlement-state-t {
    type enumeration {
      enum inactive {
        description
          "Inactive State";
      }
      enum active {
        description
          "Active State";
      }
      enum unknown {
        description
          "Unknown State";
      }
    }
    description
      "Entitlement State Type";
  }

  typedef asset-id {
    type string;
    description
      "Asset ID Type";
  }

  typedef vendor-id {
    type enumeration {
      enum cisco {
        description
          "Vendor-id is Cisco";
      }
      enum other {
        description
          "Vendor-id is not determined";
      }
    }
    description
      "Vendor identifier";
  }

  identity asset-type {
    description 
      "type of the asset: hardware, software, software cloud, ...";
  }
  identity hw {
    base asset-type; 
    description
      "Hardware refers to any physical device";
  }
  identity sw { 
    base asset-type; 
    description
      "Software refers to a collection of code installed on a 
      hardware asset";
  }
  identity sw-cloud { 
    base asset-type; 
    description
      "Cloud-based software, that allows users access to software 
      application that run on a shared computing resources via 
      Internet";
  }
  identity nfv { 
    base asset-type; 
    description
      "irtual assets, as a separate type to connect with NFV practice";
  }
  identity phone { 
    base asset-type;
    description
      "Mobile telephone or a handheld two-way communication device 
      over a cellular network.";
  }
  identity other { 
    base asset-type;
    description
      "Different or additional type not specified as part of another 
      defined asset-type.";
  }
  identity asset-subtype {
    description 
      "subtype of the asset: router, switch, wireless, 
      controller, ...";
  }
  identity router {
    base asset-subtype;
    description
      "Network connecting device. It operates at layer-3 of the OSI 
      model.";
  }
  identity switch {
    base asset-subtype;
    description
      "Network connecting device. It operates at layer-2(Data Link 
      Layer) of the OSI model.";
  }
  identity wireless { 
    base asset-subtype; 
    description
      "Network connecting device. It creates a wireless local area 
      network. It connects to a wired router, switch, or hub via an 
      Ethernet cable, and projects a Wi-Fi signal to a designated 
      area";
  }
  identity controller {
    base asset-subtype;
    description
      "Centralized device in the network which is used in combination 
      with network connection devices, when there is a need to manage 
      them in large quantities.";
  }
  identity board {
    base asset-subtype;
    description
      "Electronic circuit board in an asset which interconnects 
      another hardware assets attached to it.";
  }
  identity p-supply {
    base asset-subtype;
    description
      "Power supply, as it might have independent identity.";
  }
  identity transceiver {
    base asset-subtype;
    description
      "Device that is both a transmitter and a receiver. Usually 
      it's in a single device. 
      This is commonly used as a modular network interface";
  }
  identity others {
    base asset-subtype;
    description
      "Different or additional type not specified as part of another 
      defined asset-subtype. To be considered a few specific subtype 
      of assets related to: 3GPP, BBF, TMF, I2NSF (and security in 
      general), PCE, etc";
  }
  identity version {
    description
      "Base identity for all version types";
  }
  identity version-sw { 
  base version;
    description
      "Version release of the operating system that runs on the 
      asset";
  }  
  identity platform-dependency-os {
    description
      "Operating system that creates an environment for the asset
       to get deployed. Enum of options covering OS platform 
       dependency.";
  }
  identity linux {
    base platform-dependency-os;
    description
      "UNIX like operating system";
  }
  identity windows {
    base platform-dependency-os;
    description
      "Windows operating system";
  }
  identity macOS { 
    base platform-dependency-os;
    description
      "Mac operating system develop by Apple, Inc.";
  }
  identity darwin { 
    base platform-dependency-os;
    description
      "Open-source Unix-like operating system first released by Apple 
      Inc.";
  }
  identity ubuntu { 
    base platform-dependency-os;
    description
      "Linux distribution, used in desktop distribution";
  }
  identity red-hat {
    base platform-dependency-os;
    description
      "Red Hat Enterprise Linux, released in multiple server and 
      desktop versions";
  }
// NEED to extend and include iOS, Android, etc.;

  identity role {
    description
      "What the role of a given device/component is in the network.
      This attribute normally will be configured on the specific
      component during setup. This attribute normally will be 
      configured on the specific component during setup";
  }
  identity border-router { 
    base role;
    description
      "Router that provides connectivity between interior and 
      exterior network routers or to the cloud";
  }
  identity access { 
    base role;
    description
      "Router that provides access to a larger communication network 
      of some sort.";
  }
  identity control-plane { 
    base role;
    description
      "Network component that controls how data packets are 
      forwarded";
  }
  identity edge {
    base role;
    description
      "Router that provides an entry point into enterprise or service 
      provider core networks";
  }
  identity core { 
    base role;
    description
      "Component part of the high-speed backbone of the network. It 
      provides fast and efficient data transport, excluding 3GPP";
  }
  identity ran {
    base role;
    description
       "RAN links user equipment, such as a cellphone, computer or 
       any remotely controlled machine, over a fiber or wireless 
       backhaul connection. That link goes to the core network, which 
       manages subscriber information, location and more."
  }
  identity datacenter { 
    base role;
    description
      "Component placed in the data center, mantaining and housing 
      back-end IT system and data stores";
  }
  identity branch {
    base role;
    description
      "Router in a remote branch of an enterprise's network";
  
  }
  identity deployment-mode {
    description
      "This attribute will denote the configured deployment mode
       for the asset and features, if applicable; e.g.,
       High Availability(HA) or Faiover cluster, virtual appliance, 
       etc.";
  }
  identity primary { 
    base deployment-mode;
    description
      "Asset or featurs that support critical applications to 
      minimize system downtime, to achieve high availabiilty or 
      failover";
  }
  identity secondary { 
    base deployment-mode;
    description
      "Redundant asset or feature, that is triggered when the 
      primary encounters performance issues, to achieve high 
      availability or failover";
  }
  identity cloud { 
    base deployment-mode;
    description
      "Especially it refers to remote, distributed and shared asset 
      resources (i.e. data storage, computing power, etc.), which 
      are hooked together and meant to operate as a single 
      ecosystem.";
  }
  identity virtual-appliance { 
    base deployment-mode;
    description
      "pre-configured virtual machine image, ready to run on a 
      hypervisor";
  }
  identity container { 
    base deployment-mode;
    description
      "Standard unit of software that packages up code and all its 
      dependencies so the application runs quickly and reliably from 
      one computing environment to another";

  }
  identity undeployed { 
    base deployment-mode;
    description
      "it refers to an asset that is undeployed";

  }
  identity metric-type {
    description
      "Specify the different type of metrics, i.e accumulated-count,
       average-count, last-count, high-water mark count, low-water
       mark count" ;
  }
  identity accumulated {
    base counter-type;
    description
      "monotonically increasing counters. They're useful for 
       aggregating metric information such as the number of hits 
       on a web page, how many users log into a portal, etc.";
  }
  identity average { 
    base counter-type;
    description
      "typical value in a set of metrics, in particular the mean, 
      which is calculated by dividing the sum of the values in the 
      set by their number.";
  }
  identity last { 
    base counter-type;
    description
      "Last value measured and collected for specific metric.";
  }
  identity high-water-mark { 
    base counter-type;
    description
      "Highest level of value in a set of metrics.";
  }
  identity low-water-mark { 
    base counter-type;
    description
      "Lowest level of value in a set of metrics.";
  }
  identity feature-scope { 
    description
      "Optional tag that could apply to any usage feature, so that
       if there are multiple dimensions of reporting that need to
       be accommodated (i.e., report feature usage by 'site')";
  }
  identity site { 
    base feature-scope;
    description
      "Single location, part of the network";
  }
  identity network { 
    base feature-scope;
    description
      "scope limited to the networking assets";
  }
  typedef feature-usage-type {
    type enumeration {
      enum none {
        description
          "No Usage";
      }
      enum low {
        description
          "Usage meeting the Low Threshold";
      }
      enum medium {
        description
          "Usage meeting the Medium Threshold";
      }
      enum high {
        description
          "Usage meeting the High Threshold";
      }
      // NEED to elaborate more on this list, based on use case 
      // validation
    }
    description
      "feature usage % 0-25-50-75-100";
  }

  identity lmo-class {
    description "Base identity for classes of LMOs";
  }
<CODE ENDS>
} ### LMO Module

<CODE BEGINS> file "ietf-lmo@2022-12-20.yang"
module ietf-lmo {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo";
  prefix ietf-lmo;
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-yang-types {
    prefix yang;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jlindbla@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    "This YANG module add the flexibility to define its own 
     and extensible set of lmo classes.

     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions  
  
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2022-12-20 {
    description
      "deref reference removed";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-03-01 {
    description
      "Initial revision for LMO Module as part of the
       LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  
  container lmos {
    //config false; //temporarily commented out for easy testing
    description
      "Container that includes instances for all types of datasets
       which are part of DMLMO";
    list lmo {
      key lmo-class;
      description
        "list that includes the instances for all DMLMO datasets";
      leaf lmo-class {
        type identityref {
          base ietf-lmo-common:lmo-class;
        }
        description
          "lmo-class defining the type of instance";  
      }
      list inst {
        key id;
        description
          "defines the specific instance";
        leaf id {
          type string;
          description
            "Identifies the instance";
        }
        container parent {
          description
            "identifies the hierarchy structure for a given instance";
          leaf lmo-class {
            type leafref {
              path /lmos/lmo/lmo-class;
            }
            description
              "lmo-class that defines the parent type of instance";
          }
          leaf id {
            type leafref {
               path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class"
            + "=current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
            }
            description
              "identifies the parent type of instance";
          }
        }
        container capture-info {
          // Moved capture-info to the instance level, as
          // asset/... data will generally be collected
          // from one source at one time.
          description
            "Capture information for this data";
          leaf collected-on {
            type yang:date-and-time;
            description
              "Time at which this data was collected";
          }
          leaf collected-from {
            type string;
            description
              "Identifier for original source of this data";
          }
        }
      }
    }
  }
<CODE ENDS>
} ### Aggregated Asset

<CODE BEGINS> file "ietf-lmo-assets@2023-01-16.yang"
module ietf-lmo-assets {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-assets";
  prefix ietf-lmo-asset;
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-yang-types {
    prefix yang;
  }
  import ietf-geo-location {
    prefix ietf-geo-location;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>
     Editor:  Josh Suhr
              <mailto:josuhr@cisco.com>
     Editor:  Sudhendu Kumar
              <mailto:skumar23@ncsu.edu>";
  description
    "This YANG module includes the concept asset aggregation
     and platform dependency of an asset.

     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions  
  
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2023-01-16 {
    description
      "Removed inventory suffix from the YANG model";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-11-25 {
    description
      "Removed inventory information from this module, in order to let
       such information be mapped from other inventory models instead";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-02-22 {
    description
      "Introduced flexible root structure";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2021-10-25 {
    description
      "Initial revision for Aggregated Assets Inventory as part of
       the LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  identity asset {
    base ietf-lmo-common:lmo-class;
    description 
      "An asset is a class of lmo that represents a 
      hardware, software, application, or service component.
      An asset can also be physical or virtual";
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class,'ietf-lmo-asset:asset')";
    description
      "Assets container includes attributes that add the aggregated
       view";
    // Removed vendor, name, description, pid, serial-number, vid, 
    // mac-address, ip-address, entity-name, product-description, udi,
    // transparency-info, from version 08;
    // as these and similar properties are expected to be managed using
    // other inventory mechanisms. Maybe more leafs should be removed.
    leaf role {
      type identityref {
        base ietf-lmo-common:role;
      }
      description
        "What the role of a given device/component is in the 
        network. This attribute normally will be configured on the 
        specific component during setup";
    }
    leaf aggregation {
      type boolean;
      must "../number-of-instances = 1 or current() = 'true'";
      default false;
      description
        "Asset aggregation; e.g., false (default) or true";
    }
    leaf number-of-instances {
      type uint32;
      default 1;
      description
        "Number of instances or endpoints covered by the aggregated
          asset. If different from 1, it should enforce that
          aggregation attribute is set to true";
    }
    leaf platform-dependency-os {
      type identityref {
          base ietf-lmo-common:platform-dependency-os;  
      }
      description
        "Operating system for the asset to be deployed."; 
    }
    container install-location {
      uses ietf-geo-location:geo-location;
      description
        "Physical installed location of the product. Location is
          provided based on what customer/user configures";
    }
    leaf deployment-mode {
      type identityref {
        base ietf-lmo-common:deployment-mode;
      }
      description
        "Deployment mode for the asset, if applicable; e.g.,
          HA cluster, virtual appliance, etc.";
    }
    leaf activation-date {
      type yang:date-and-time;
      description
        "Date of asset activation or initial contact";
    }
    leaf software-version {
      type string;
      description
        "Software version running on the hardware device or
          software component";
    }
    container hotfixes {
      config false;
      description "list of hotfixes";
      list hostfix {
      description
        "List of hotfixes that have been installed"; 
        leaf version {
          type identityref {
            base ietf-lmo-common:version;
          }
          description
            "It includes the first hotfix installed";
        }
        leaf order {
          type uint8;
          description
            "It refers to the order of how the hotfixes have been
              installed, range 0..100";
        }
      }
    }
    leaf software-type {
      type string;
      description
        "Software type or Operating System";
    }
    leaf sign-of-life-timestamp {
      type yang:date-and-time;
      description
        "Date of last contact";
    }
    leaf tags {
      type string;
      description
        "Comma-separated descriptive tags for this asset";
    }
  }
<CODE ENDS>
}
]]></artwork></figure>

</section>
<section anchor="entitlements-1"><name>Entitlements</name>

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-lmo-entitlements@2022-12-20.yang"
module ietf-lmo-entitlements {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-entitlements";
  prefix ietf-lmo-entitlements;
  import ietf-yang-types {
    prefix yang;
  }
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-assets {
    prefix ietf-lmo-asset;
  }
  import ietf-lmo-feature {
    prefix ietf-lmo-feature;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>
     Editor:  Josh Suhr
              <mailto:josuhr@cisco.com>
     Editor:  Sudhendu Kumar
              <mailto:skumar23@ncsu.edu>";
  description
    "This YANG module includes the entitlement attributes of a
     product.

     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions  
  
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2022-12-20 {
    description
      "license(s) renamed to entitlement(s)";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-09-20 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-02-28 {
    description
      "Introduced flexible root structure";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2021-10-25 {
    description
      "Initial revision for Licenses Module as part of the LMO YANG 
      Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

// Can we capture licensing ties to API access where we may be 
// entitled on events queries per second, minute, hour, etc. 
// This is a popular model in the cloud space for example the Google 
// MAPs API??

  identity entitlement {
    base ietf-lmo-common:lmo-class;
    description "A entitlement is a class of lmo that represents how 
    the asset(s) or feature(s) can be leveraged and what is required
    in cases the asset(s) or feature(s) are changed.";
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, "+
         " 'ietf-lmo-entitlements:entitlement')";
    description
      "entitlements container includes attributes for entitlements";
    leaf uid {
      type string;
      description
        "Unique License Identifier";
    }
    choice all-1-asset{
      description
        "Considering entitlement is linked to all or explicitely a 
        one/few assets";
      leaf all-assets {
        type boolean;
        default false;
        description
          "License apply to all assets; e.g., false (default) or 
          true";
      }
      container assets {
        description
          "Assets to which this entitlement are attached";
        list asset {
          key "lmo-class id";
          description
            "list of assests";
          leaf lmo-class {
            type leafref {
              path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
            }
            must "derived-from-or-self(current(), "+
                 " 'ietf-lmo-asset:asset')"; 
            description
              "Asset class to which this entitlement is attached"; 
          }     
          leaf id {
            type leafref {
              path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class "+ 
              " = current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
            }
            description
              "Asset to which this entitlement is attached";
          }
        }  
      }
     } 
    list resource {
      key "id";
      description
        "Resource profile";
      leaf id {
        type string;
        description
          "Identify resource for entitlement consumption metric";
      }
      leaf name {
        type string;
        description
          "Friendly name of the resource";
      }
      leaf summary {
        type string;
        description
          "Brief description of the resource";
      }
      list characteristic {
        key "id";
        description
          "Characteristic of resource consumption, i.e., 
          number of cpu's, limit BW.";
        leaf id {
          type string;
          description
            "Identifier for resource consumption characteristic";
        }
        leaf name {
          type string;
          description
            "Friendly name for resource consumption 
            characteristic";
        }
        leaf description {
          type string;
          description
            "Description for resource consumption 
            characteristic";
        }
        leaf unit {
          type string;
          description
            "unit of measurement for the characteristic";
        }

        // NEED to define identity type for unit: min, hour, sec, 
        // days, ...

        leaf value {
          type yang:counter64;
          description
            "Resource consumption characteristic measurement";
        }
        leaf value-max {
          type yang:counter64;
          description
            "Maximum resource consumption characteristic value";
        }
      }
    }
    container features {
      description
        "Features to which this entitlement are attached";
      list feature {
        key "lmo-class id";
        description
          "list of features";
        leaf lmo-class {
          type leafref {
            path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
          }
          must "derived-from-or-self(current(), "+
               " 'ietf-lmo-feature:feature')";
          description
            "feature to which this entitlement is attached";
        }
        leaf id {
          type leafref {
            path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class = "+
                 " current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
          }
          description
            "Feature to which this entitlement is attached";
        }
      } 
    }
    leaf state {
      type ietf-lmo-common:entitlement-state-t;
      description
        "Entitlement state; e.g., active, inactive, or unknown";
    }
    container renewal-profile {
      description
        "Profile of entitlement renewal status and information";
      leaf activation-date {
        type yang:date-and-time;
        description
          "Activation Date";
      }
      leaf expiration-date {
        type yang:date-and-time;
        description
          "Expiration Date";
      }
    }
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, "+
         " 'ietf-lmo-asset:asset')";
    description
      "assets attributes related to entitlements";
  
    container entitlements {
      description
        "entitlement attributes";
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), "+
             " 'ietf-lmo-entitlements:entitlement')";
        description
          "Asset class to which this entitlement is attached";
      }    
      leaf id {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class = "+
               " current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Asset to which this entitlement is attached";
      }
    }
    
    //Fill more leafs for entitlement if required...
  }  
<CODE ENDS>
} ### Features

<CODE BEGINS> file "ietf-lmo-feature@2022-12-20.yang"
module ietf-lmo-feature {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-feature";
  prefix ietf-lmo-feature;
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-assets {
    prefix ietf-lmo-asset;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>
     Editor:  Josh Suhr
              <mailto:josuhr@cisco.com>
     Editor:  Sudhendu Kumar
              <mailto:skumar23@ncsu.edu>";
  description
    "This YANG module includes the different attributes that define
     description, usage and resource consumption for specific 
     features or capabilities of assets.

     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions  
  
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2022-12-20 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-09-20 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-02-28 {
    description
      "Introduced flexible root structure";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2021-10-25 {
    description
      "Initial revision for Product Usage Module as part of the
       LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  identity feature {
    base ietf-lmo-common:lmo-class;
    description 
      "A feature is a class of lmo that represents 
       options or functional capabilities available in an asset";
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-asset:asset')";
    description
      "feature attributes related to assets";

    container features {
      description
        "Features to be part of an asset";
      list feature {
        key "lmo-class id";
        description
          "Subfeature ID";
        leaf lmo-class {
          type leafref {
            path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
          }
          must "derived-from-or-self(current(), "+
          " 'ietf-lmo-feature:feature')";
          description
            "Reference to lmo-class"; 
        }
        leaf id {
          type leafref {
             path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class = "+
                  " current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
          }
          description
            "Reference to Feature ID";    
        }
      }
    }
    //Fill more leafs for license when organization 
    //module is present here...
  }  
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, "+
         " 'ietf-lmo-feature:feature')";
    description
      "feature attributes";

    leaf name {
      type string;
      description
        "Friendly name of the feature";
    }
    leaf summary {
      type string;
      description
        "Brief description of the feature";
    }
    leaf category {
      type string;
      description
        "Feature category or tag list (as applicable to the 
        product)";
    }
    leaf entitlement {
      type string;
      description
        "Minimum entitlement level, subscription, or license level
          required for the feature";
    }
    leaf first-available-version {
      type string;
      description
        "The first version in which this feature was enabled";
    }
    container backported-versions {
      config false;
      description
        "software patch or update is taken from a recent software 
        version and applied to an older version of the same 
        software";
      list backported-version {
        config false;
        description
          "Backport releases to older release";
        leaf version {
          type identityref {
            base ietf-lmo-common:version;
          }
          description
            "version of the backport release";
        }
      }
    }
    leaf scope {
      type identityref {
        base ietf-lmo-common:feature-scope;
      }
      description
        "Optional tag that could apply to any of the usage 
        features, so that if there are multiple dimensions of 
        reporting that need to be accommodated (i.e., report 
        feature usage by 'site')";
    }
    list config-options {
      key "id";
      description
        "Feature configuration profile - optional, for features 
        that require configuration beyond enable/disable";
      leaf id {
        type string;
        description
          "Identify feature configuration option uniquely across 
          all products";
      }
      leaf name {
        type string;
        description
          "Friendly name of the feature option";
      }
      leaf summary {
        type string;
        description
          "Brief description of the feature option";
      }
      list characteristic {
        key "id";
        description
          "Characteristics of feature configuration options,
            i.e. value=enabled/disabled";
        leaf id {
          type string;
          description
            "Identifier for feature option configuration
              characteristic";
        }
        leaf name {
          type string;
          description
            "Friendly name for feature option configuration
              characteristic";
        }
        leaf value {
          type string;
          description
            "Configuration characteristic value; describes how 
            this feature option characteristic is configured";
        }
      }
    }
    container asset{
      description
        "Asset that this feature is attached to";
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), "+
             " 'ietf-lmo-asset:asset')";
        default ietf-lmo-asset:asset;
        description
          "Asset class to which this feature is attached";
      }    
      leaf id {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class = "+
              "current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Asset to which this feature is attached";
      }  
    }
    container subfeatures {
      description
        "Sub-features to the top-level feature";
      list subfeature {
        key "lmo-class id";
        description
          "Subfeature ID";
        leaf lmo-class {
          type leafref {
            path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
          }
          must "derived-from-or-self(current(), "+
               " 'ietf-lmo-feature:feature')";
          description
            "lmo-class reference";
        }
        leaf id {
          type leafref {
            path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class = "+
                 " current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
          }
          description
            "Reference to Feature ID";
        }
      }
    }
  }
<CODE ENDS>
} ### Usage

<CODE BEGINS> file "ietf-lmo-usage@2022-09-20.yang"
module ietf-lmo-usage {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-usage";
  prefix ietf-lmo-usage;
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-yang-types {
    prefix yang;
  }
  import ietf-lmo-feature {
    prefix ietf-lmo-feature;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jlindbla@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    "This YANG module includes the different attributes that define
     description, usage and resource consumption for specific 
     features or capabilities of assets.

     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions  
  
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  
  revision 2022-09-20 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-02-22 {
    description
      "Introduced flexible root structure";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2021-10-25 {
    description
      "Initial revision for Product Usage Module as part of the
       LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  identity usage {
    base ietf-lmo-common:lmo-class;
    description "A usage is a class of lmo that represents how 
    features of an asset are used";
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, "+
         " 'ietf-lmo-usage:usage')";
    description
      "usage attributes";
    container feature {
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), "+
             " 'ietf-lmo-feature:feature')";
        default ietf-lmo-feature:feature;
        description
          "feature to which this license is attached";
      }
      leaf id {
        type leafref {
           path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class = "+
                " current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Feature to which this license is attached";
      }
      description
        "usage link to a feature";
    }
    leaf name {
      type string;
      description
        "Name of feature usage characteristic";
    }
    leaf summary {
      type string;
      description
        "Brief description of feature usage characteristic";
    }
    leaf uri {
      type string;
      description
        "Target URI of feature characteristic, if applicable - e.g.,
         for clickstream or API";
    }
    leaf deployment-mode {
      type identityref {
        base ietf-lmo-common:deployment-mode;
      }
      description
        "Deployment mode for the feature. When applicable, feature
         might be independent of the deployment mode in the asset;
         e.g., cloud, HA cluster, virtual appliance, etc.";
    }
    leaf scope {
      type identityref {
        base ietf-lmo-common:feature-scope;
      }
      description
        "Optional tag that could apply to any of the usage 
        features, so that if there are multiple dimensions of 
        reporting that need to be accommodated, (i.e., report 
        feature usage by 'site')";
    }
    leaf activation-status {
      type string;
      description
        "Feature activation status for this instance of the 
        product (on/off; active/inactive; enabled/disabled)";
    }
    leaf instances {
      type uint32;
      description
        "Number of instances or end-points using this feature";
    }

    leaf count-type {
      type identityref {
        base ietf-lmo-common:counter-type;
      }
      description
        "Specify the counter type i.e accumulated-count,
          average-count, last-count, high-water mark count
          (+time stamp), low-water mark count (+time stamp)";
    }
    leaf timestamp {
      type yang:date-and-time;
      description  
        "Some counters will benefit from timestamp based on the 
        time when the counter has been collected";
    }
    leaf count {
      type uint32;
      units "times";
      description
        "Count of times the feature has been used";
    }
    list frequency {
      key "name";
      description
        "Frequency with which the feature is used";
      leaf name {
        type string {
          length "1..64";
        }
        description
          "reference in case that feature is for different 
          purpose of usage";
      }
      leaf type-freq {
        type string;
        description
          "Frequency type, i.e daily, weekly, monthly";
      }
      leaf value {
        type yang:counter64;
        description
          "Value collected for the usage";
      }
    }
    list resource-consumption {
      key "id";
      description
        "Resource consumption profile";
      leaf id {
        type string;
        description
          "Identify resource for consumption measurement";
      }
      leaf name {
        type string;
        description
          "Friendly name of the resource";
      }
      leaf summary {
        type string;
        description
          "Brief description of the resource";
      }
      list characteristic {
        key "id";
        description
          "Characteristic of resource consumption";
        leaf id {
          type string;
          description
            "Identifier for resource consumption characteristic";
        }
        leaf name {
          type string;
          description
            "Friendly name for resource consumption 
            characteristic";
        }

        leaf unit {
          type string;
          description
            "unit of measurement for the characteristic";
        }

        // NEED to define identity type for unit: min, hour, sec, 
        // days, ...

        leaf value {
          type yang:counter64;
          description
            "Resource consumption characteristic measurement";
        }
        leaf value-max {
          type yang:counter64;
          description
            "Maximum resource consumption characteristic value";
        }
      }
    }
  }
<CODE ENDS>
} ### Incident Management

<CODE BEGINS> file "ietf-lmo-event-report@2023-07-07.yang"
module ietf-lmo-event-report {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-event-report";
  prefix ietf-lmo-event;

  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-yang-types {
    prefix yang;
  }
  import ietf-lmo-assets {
    prefix ietf-lmo-asset;
  }
  import ietf-lmo-feature {
    prefix ietf-lmo-feature;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>
     Editor:  Josh Suhr
              <mailto:josuhr@cisco.com>
     Editor:  Sudhendu Kumar
              <mailto:skumar23@ncsu.edu>";
  description
    "This YANG module includes the incident management attributes
     to handle incidents.

     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions  
  
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2023-07-07 {
    description
      "rename to event report";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-09-20 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-02-28 {
    description
      "Introduced flexible root structure";
    reference
      "RFC XXXX: LMO YANG Model";
  }  
  revision 2021-10-25 {
    description
      "Initial revision for Incident Management as part of
       the LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  identity incident {
    base ietf-lmo-common:lmo-class;
    description 
    "An incident is a class of lmo that represents an event 
    that is not part of normal operations that disrupts 
    operational processes.";
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, "+
         " 'ietf-lmo-event:incident')";
    description
      "licenses container includes attributes for licenses";

    leaf id {
      type string;
      description 
        "Technical Support Center Case Number id";
    }
    leaf title {
      type string;
      description 
        "headline Incident Case";
    }
    leaf summary {
      type string;
      description 
        "Problem description summary";
    } 
    leaf severity {
      type string;
      description 
      "severity, in some cases also defined as priority";
      // NEED to define different levels of severity, from 
      // severity 1 to 6, i.e. Sev1: network down, Sev6: enhacement
    }
    leaf status {
      type string;
      description 
      "case status, i.e. Customer-Pending, Customer 
      Engineer-Pending, Developer-Pending, Closed, Open, etc.";
      // NEED to define different status
    }
    leaf created {
      type yang:date-and-time;
      description 
      "created date-and-time";
    }
    leaf last_updated {
      type yang:date-and-time;
      description 
      "last updated date-and-time";
    }
    leaf capability {
      type string;
      description 
      "i.e. to reveal associated RMA items";
    }
    leaf technology{
      type string;
      description 
      "Technology related";
    } 
    leaf subtechnology{
      type string;
      description 
      "Subtechnology related";
    } 
    leaf problem-type{
      type string;
      description 
      "Problem type definition, i.e. network, faulty hardware, 
      performance, security, etc. ";
    } 
    leaf resolution{
      type string;
      description 
      "code (closed cases only)";
    } 
    leaf owner{
      type string; 
      description 
      "Customer in charge of the case";
    // NEED to refer to user lmo-class
    } 
    leaf support-engineer{
      type string;
      description 
      "Customer Support Engineer in charge of the case";
    // NEED to refer to user lmo-class
    } 
    container asset {
      description
          "Asset container to which this incident is attached";
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), "+
             " 'ietf-lmo-asset:asset')";
        default ietf-lmo-asset:asset;
        description
          "Asset class to which this incident is attached";
      }    
      leaf id {
        type leafref {
           path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class = "+
                " current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Asset to which this incident is attached";
      }
    }
    container feature {
      description
          "Feature to which this incident is attached";
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), "+
             " 'ietf-lmo-feature:feature')";
        default ietf-lmo-feature:feature;
        description
          "Feature class to which this incident is attached";
      }    
      leaf id {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class = "+
               " current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Feature to which this incident is attached";
      }
    }    
    leaf contract-number {
      type string;
      description
      "Support contract number";
    // NEED to evaluate if it should be independent container. It 
    // should be associated to asset and license
    }
  }
<CODE ENDS>
} ### Organization

<CODE BEGINS> file "ietf-lmo-organization@2022-12-20.yang"
module ietf-lmo-organization {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-organization";
  prefix ietf-lmo-organization;
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-entitlements {
    prefix ietf-lmo-entitlements;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jlindbla@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    "This YANG module defines the organization module and the 
     different attributes that defines it.

     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions  
  
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2022-12-20 {
    description
      "license(s) renamed to entitlement(s)";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-09-20 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-03-01 {
    description
      "Initial revision for Organization Module as part of the
       LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  identity organization {
    base ietf-lmo-common:lmo-class;
    description 
    "An organization is a class of lmo that represents an entity 
    such as a company, an institution, or an association, 
    comprising one or more people and having a particular 
    purpose";
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, "+
         " 'ietf-lmo-organization:organization')";
    description
      "organization attributes";

    leaf address {
      type string;
      description 
        "organization address";
    }
    leaf department {
      type boolean;
      default false;
      description
        "How to categorize the organization";
    }
    //Fill more leafs for organizations here...
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, "+
         " 'ietf-lmo-entitlements:entitlement')";
    description
      "entitlement attributes related to organization";
  
    container organization {
      //NEED to determine how the model will consume 
      //organization/service/user
      //Leaving it here for the moment
      description
        "Organization container";
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), "+
             " 'ietf-lmo-organization:organization')";
        description
          "Organization class to which this entitlement is attached";
      }    
      leaf id {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class = "+
               " current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Organization to which this entitlement is attached";
      }
    }
    //License module can be extended here when organization is 
    //present...
  }   
<CODE ENDS>
} ### User

<CODE BEGINS> file "ietf-lmo-user@2022-12-20.yang"
module ietf-lmo-user {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-user";
  prefix ietf-lmo-user;
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-entitlements {
    prefix ietf-lmo-entitlements;
  }
  import ietf-lmo-organization {
    prefix ietf-lmo-organization;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jlindbla@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    "This YANG module includes the user module and the different 
     attributes that defines it.

     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions  
  
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";

  revision 2022-12-20 {
    description
      "license(s) renamed to entitlement(s)";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-10-11 {
    description
      "fixed definition of users";
    reference
      "RFC XXXX: LMO YANG Model";
  }    
  revision 2022-09-20 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  revision 2022-03-01 {
    description
      "Initial revision for User Module as part of the
       LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  identity user {
    base ietf-lmo-common:lmo-class;
    description 
    "A user is a class of lmo that refers to owner or consumer 
    of the asset. User belongs to an organization. Within the 
    organization there are entities that: a) use the assets 
    in their operations, b) manage the assets. ";
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, "+
         " 'ietf-lmo-user:user')";
    description
      "user attributes";

    leaf billing-account {
      type uint32;
      description "billing account information";
    }
    container represents {
      description
        "Organization to which this user is attached";
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), "+
             " 'ietf-lmo-organization:organization')";
        description
          "Organization class to which this user is attached";
      }
      leaf id {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class = "+
               " current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Organization to which this user is attached";
      }  
    }
    leaf authority {
      type enumeration {
        enum super-user {
          description
            "super-user";
          }
        enum standard-user {
          description
            "standard-user";
          }
        enum restricted-user {
          description
            "restricted-user";
          }
        enum admin {
          description
            "admin";
          }
      }
      default standard-user;
      description 
        "authority assign to the user";
    }
    leaf email {
      type string; 
      description
          "user email";
    }    
    // Fill in more leafs you want on organizations here...
  }

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, "+
         " 'ietf-lmo-entitlements:entitlement')";
    description
      "entitlement attributes related to user";

    container user {
      //NEED to determine how the model will consume 
      //organization/service/user. Leaving it here for the moment
      description 
      "user container";
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), "+
             " 'ietf-lmo-user:user')";
        description
          "User class to which this entitlement is attached";
      }    
      leaf id {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo[ietf-lmo:lmo-class = "+
               " current()/../lmo-class]/ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "User to which this entitlement is attached";
      }
    }
  }
<CODE ENDS>
}
]]></artwork></figure>

</section>
</section>
</section>
<section anchor="deployment-considerations"><name>Deployment Considerations</name>

<t>LMO Data Models defines the data schemas for LMO data. LMO Data Models are based on YANG. YANG data models can be used independent of the transport and can be converted into any encoding format supported by the network configuration protocol. YANG is a protocol independent.</t>

<t>To enable the exchange of LMO data among all interested parties, deployment considerations that are out of the scope of this document, will need to include:</t>

<t><list style="symbols">
  <t>The data structure to describe all metrics and quantify relevant data consistently, i.e. specific formats like XML or JSON encoded message would be deemed valid or invalid based on LMO models.</t>
  <t>The process to share and collect LMO data across the consumers consistently, including the transport mechanism. The LMO YANG models can be used with network management protocols such as NETCONF <xref target="RFC6241"/>, RESTCONF <xref target="RFC8040"/>, streaming telemetry, etc. OpenAPI specification might also help to consume LMO metrics.</t>
  <t>How the configuration of assets should be done.</t>
</list></t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The security considerations mentioned in section 17 of <xref target="RFC7950"/> apply.</t>

<t>LMO brings several security and privacy implications because of the various components and attributes of the information model. For example, each functional component can be tampered with to give manipulated data. LMO when used alone or with other relevant data, can identify an individual, revealing Personal Identifiable Information (PII). Misconfigurations can lead to data being accessed by unauthorized entities.</t>

<t>Methods exist to secure the communication of management information. The transport entity of the functional model MUST implement methods for secure transport. This document also contains an Information model and Data-Model in which none of the objects defined are writable. If the objects are deemed sensitive in a particular environment, access to them MUST be restricted using appropriately configured security and access control rights. The information model contains several optional elements which can be enabled or disabled for the sake of privacy and security. Proper authentication and audit trail MUST be included for all the users/processes that access the LMO.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="the-ietf-xml-registry"><name>The IETF XML Registry</name>

<t>This document registers URIs in the IETF XML registry <xref target="RFC3688"/>. Following the format in <xref target="RFC3688"/>, the registrations defined below are requested:</t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-common <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-assets <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-entitlements <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-feature <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-usage <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-event-report <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-organization <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-user <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

</section>
<section anchor="the-yang-module-names-registry"><name>The YANG Module Names Registry</name>

<t>This document registers YANG modules in the YANG Module Names registry <xref target="RFC7950"/>. Following the format in <xref target="RFC7950"/>, the registrations defined below are requested:</t>

<t>name: ietf-lmo <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo <br />
maintained by IANA: N <br />
prefix: ietf-lmo <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-common <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-common <br />
maintained by IANA: N <br />
prefix: ietf-lmo-common <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-asset-inventory <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-assets <br />
maintained by IANA: N <br />
prefix: ietf-lmo-asset <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-entitlements <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-entitlements <br />
maintained by IANA: N <br />
prefix: ietf-lmo-entitlements <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-feature <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-feature <br />
maintained by IANA: N <br />
prefix: ietf-lmo-feature <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-usage <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-usage <br />
maintained by IANA: N <br />
prefix: ietf-lmo-usage <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-event-report <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-event-report <br />
maintained by IANA: N <br />
prefix: ietf-lmo-event <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-organization <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-organization <br />
maintained by IANA: N <br />
prefix: ietf-lmo-organization <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-user <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-user <br />
maintained by IANA: N <br />
prefix: ietf-lmo-user <br />
reference: RFC XXXX <br /></t>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor='RFC2119'>
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname='S. Bradner' initials='S.' surname='Bradner'/>
    <date month='March' year='1997'/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='2119'/>
  <seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>

<reference anchor='RFC8174'>
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname='B. Leiba' initials='B.' surname='Leiba'/>
    <date month='May' year='2017'/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='8174'/>
  <seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>




    </references>

    <references title='Informative References'>




<reference anchor='I-D.draft-palmero-opsawg-ps-almo-00'>
   <front>
      <title>Asset Lifecycle Management and Operations, Problem Statement</title>
      <author fullname='Marisol Palmero' initials='M.' surname='Palmero'>
         <organization>Cisco Systems</organization>
      </author>
      <author fullname='Frank Brockners' initials='F.' surname='Brockners'>
         <organization>Cisco Systems</organization>
      </author>
      <author fullname='Sudhendu Kumar' initials='S.' surname='Kumar'>
         <organization>NC State University</organization>
      </author>
      <author fullname='Camilo Cardona' initials='C.' surname='Cardona'>
         <organization>NTT</organization>
      </author>
      <author fullname='Diego Lopez' initials='D.' surname='Lopez'>
         <organization>Telefonica I+D</organization>
      </author>
      <date day='29' month='June' year='2023'/>
      <abstract>
	 <t>   This document presents a problem statement for assets lifecycle
   management and operations.  It describes the framework, the
   motivation and requirements for asset-centric metrics including but
   not limited to asset adoption, usability, entitlements, supported
   features and capabilities, enabled features and capabilities.  An
   information model is proposed whose primary objective is to measure
   and improve the network operators&#x27; experience along the lifecycle
   journey, from technical requirements and technology selection through
   renewal, including the end of life of an asset.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-palmero-opsawg-ps-almo-00'/>
   
</reference>

<reference anchor='RFC7950'>
  <front>
    <title>The YANG 1.1 Data Modeling Language</title>
    <author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'/>
    <date month='August' year='2016'/>
    <abstract>
      <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7950'/>
  <seriesInfo name='DOI' value='10.17487/RFC7950'/>
</reference>

<reference anchor='RFC9179'>
  <front>
    <title>A YANG Grouping for Geographic Locations</title>
    <author fullname='C. Hopps' initials='C.' surname='Hopps'/>
    <date month='February' year='2022'/>
    <abstract>
      <t>This document defines a generic geographical location YANG grouping. The geographical location grouping is intended to be used in YANG data models for specifying a location on or in reference to Earth or any other astronomical object.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='9179'/>
  <seriesInfo name='DOI' value='10.17487/RFC9179'/>
</reference>


<reference anchor='I-D.draft-ietf-opsawg-sbom-access-10'>
   <front>
      <title>Discovering and Retrieving Software Transparency and Vulnerability Information</title>
      <author fullname='Eliot Lear' initials='E.' surname='Lear'>
         <organization>Cisco Systems</organization>
      </author>
      <author fullname='Scott Rose' initials='S.' surname='Rose'>
         <organization>NIST</organization>
      </author>
      <date day='28' month='September' year='2022'/>
      <abstract>
	 <t>   To improve cybersecurity posture, automation is necessary to locate
   what software is running on a device, whether that software has known
   vulnerabilities, and what, if any recommendations suppliers may have.
   This memo specifies a model to provide access to this information.
   It may optionally be discovered through manufacturer usage
   descriptions.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-opsawg-sbom-access-10'/>
   
</reference>

<reference anchor='RFC6241'>
  <front>
    <title>Network Configuration Protocol (NETCONF)</title>
    <author fullname='R. Enns' initials='R.' role='editor' surname='Enns'/>
    <author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'/>
    <author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'/>
    <author fullname='A. Bierman' initials='A.' role='editor' surname='Bierman'/>
    <date month='June' year='2011'/>
    <abstract>
      <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='6241'/>
  <seriesInfo name='DOI' value='10.17487/RFC6241'/>
</reference>

<reference anchor='RFC8040'>
  <front>
    <title>RESTCONF Protocol</title>
    <author fullname='A. Bierman' initials='A.' surname='Bierman'/>
    <author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'/>
    <author fullname='K. Watsen' initials='K.' surname='Watsen'/>
    <date month='January' year='2017'/>
    <abstract>
      <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8040'/>
  <seriesInfo name='DOI' value='10.17487/RFC8040'/>
</reference>

<reference anchor='RFC3688'>
  <front>
    <title>The IETF XML Registry</title>
    <author fullname='M. Mealling' initials='M.' surname='Mealling'/>
    <date month='January' year='2004'/>
    <abstract>
      <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='81'/>
  <seriesInfo name='RFC' value='3688'/>
  <seriesInfo name='DOI' value='10.17487/RFC3688'/>
</reference>

<reference anchor='RFC8345'>
  <front>
    <title>A YANG Data Model for Network Topologies</title>
    <author fullname='A. Clemm' initials='A.' surname='Clemm'/>
    <author fullname='J. Medved' initials='J.' surname='Medved'/>
    <author fullname='R. Varga' initials='R.' surname='Varga'/>
    <author fullname='N. Bahadur' initials='N.' surname='Bahadur'/>
    <author fullname='H. Ananthakrishnan' initials='H.' surname='Ananthakrishnan'/>
    <author fullname='X. Liu' initials='X.' surname='Liu'/>
    <date month='March' year='2018'/>
    <abstract>
      <t>This document defines an abstract (generic, or base) YANG data model for network/service topologies and inventories. The data model serves as a base model that is augmented with technology-specific details in other, more specific topology and inventory data models.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8345'/>
  <seriesInfo name='DOI' value='10.17487/RFC8345'/>
</reference>




    </references>


<section numbered="false" anchor="change-log"><name>Change log</name>

<t>RFC Editor Note: This section is to be removed during the final publication of the document.</t>

<t>version 10</t>

<t><list style="symbols">
  <t>Include reference to the information model presented in ALMO, Asset Lifecycle Management.</t>
  <t>Incident Management YANG module renamed: "Event Report"</t>
</list></t>

<t>version 09</t>

<t><list style="symbols">
  <t>Rename "license" to "entitlement".</t>
  <t>renamed ietf-lmo-assets-inventory to ietf-lmo-assets.</t>
  <t>ietf-lmo-assets provides capability of integration and extention for a different approach on how to address inventory use cases. Process is explained in the Appendix A.</t>
  <t>ietf-lmo-example-mapping-XXX YANG modules accommodates the ietf-lmo-assets YANG module to any other inventory which will be required in the future to be referenced.</t>
</list></t>

<t>version 08</t>

<t><list style="symbols">
  <t>fixing errors shown in YANG validation</t>
</list></t>

<t>version 07</t>

<t><list style="symbols">
  <t>fixing references</t>
</list></t>

<t>version 06</t>

<t><list style="symbols">
  <t>fixing errors shown in YANG validation</t>
</list></t>

<t>version 05</t>

<t><list style="symbols">
  <t>introduce fixes for YANG statements</t>
</list></t>

<t>version 04</t>

<t><list style="symbols">
  <t>Remove ietf-lmo-service YANG module, as service is considered within the asset concept</t>
  <t>Fix introduced to the .xml and .txt avoiding a compiling issue on the YANG modules.</t>
</list></t>

<t>version 03</t>

<t><list style="symbols">
  <t>Flexible root structure has been introduced by the ietf-lmo YANG module: Modules are arranged into layers, with ietf-lmo-common and ietf-lmo at the core. Other modules can be added in layers on top.
 This structure allows flexibility and the option to be enhanced by vendor implementation.<br />
 The new structure allows to include other lmo classes, or exclude current lmo classes.</t>
  <t>Feature and Usage containers have been split in two independent modules.  Where Usage relates to runtime data.</t>
  <t>Organization attribute, has been enhanced to an independent YANG module, adding flexibility and the option to be called independently and enhanced.</t>
  <t>Service and User YANG modules, have been also introduced in a similar flexible structure, being part of new lmo classes.</t>
  <t>Information Model, has been enhanced with new modules: Organization, Service and User modules.  On this version the new lmo classes can be called independently or from the entitlements module.  There is no restriction to be called from any of the other YANG modules.</t>
</list></t>

<t>version 02</t>

<t><list style="symbols">
  <t>"Support case" renamed to "incident".</t>
  <t>Add MAC address and IP address attributes under asset-inventory YANG module.</t>
  <t>Link among objects &amp; YANG modules (notably with feature).</t>
  <t>New text about asset usage.</t>
</list></t>

<t>version 01</t>

<t><list style="symbols">
  <t>Fixes for YANG validator and idnits warnings.</t>
</list></t>

<t>version 00</t>

<t><list style="symbols">
  <t>Initial version.</t>
</list></t>

</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>The ideas in this document originate from early work by Tony Colon, Carlos Pignataro, and Yenu Gobena originally referred to as Experience Telemetry.</t>

<t>This document was created by meaningful contributions from Josh Suhr, Eric Vyncke, Yannis Viniotis, Nagendra Kumar Nainar, Yenu Gobena, Dhiren Tailor and Jan Lindblad.</t>

<t>The authors wish to thank Gonzalo Salgueiro, Martin Beverley, Ignacio Dominguez Martinez and many others for their helpful comments and suggestions.</t>

</section>
<section numbered="false" anchor="appendix-a"><name>Appendix A</name>

<t>Hardware network inventory is described as part of network topology which is defined in <xref target="RFC8345"/>, it has been explored in several IETF work as it might need an extension for some of the use cases that need to consume inventory information. This is the case for DMLMO, as assets are defined as hardware, software or even service instances.</t>

<t>This section summarizes and provides an example with the changes to make DMLMO compatible to any future changes that will come as part of the current inventory discussions and decisions.</t>

<t>DMLMO version -09 provides the approach to make DMLMO independent from the network inventory discussions, providing a way to consume any inventory management module(s). Version -09 contains changes to accommodate ietf-lmo-assets, aka ietf-lmo-assets-inventory in previous versions, to any other inventory module that might be required.</t>

<t>The following example considers iana-hardware and ietf-network-inventory YANG modules as inventory YANG modules to consider. It could include others, i.e., openconfig-platform.</t>

<figure><artwork><![CDATA[
<CODE BEGINS> file "iana-hardware@.yang"
module iana-hardware {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:iana-hardware";
  prefix ianahw;

  organization "IANA";
  contact
    "        Internet Assigned Numbers Authority

     Postal: ICANN
             12025 Waterfront Drive, Suite 300
             Los Angeles, CA  90094-2536
             United States of America

     Tel:    +1 310 301 5800
     E-Mail: iana@iana.org>";

  description
    "IANA-defined identities for hardware class.

     The latest revision of this YANG module can be obtained from
     the IANA website.

     Requests for new values should be made to IANA via
     email (iana@iana.org).

     Copyright (c) 2018 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD License

     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     The initial version of this YANG module is part of RFC 8348;
     see the RFC itself for full legal notices.";
  reference
    "https://www.iana.org/assignments/yang-parameters";

  revision 2018-03-13 {
    description
      "Initial revision.";
    reference
      "RFC 8348: A YANG Data Model for Hardware Management";
  }

  /*
   * Identities
   */

  identity hardware-class {
    description
      "This identity is the base for all hardware class
       identifiers.";
  }

  identity unknown {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is unknown
       to the server.";
  }

  identity chassis {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is an
       overall container for networking equipment.  Any class of
       physical component, except a stack, may be contained within a
       chassis; a chassis may only be contained within a stack.";
  }

  identity backplane {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is some sort
       of device for aggregating and forwarding networking traffic,
       such as a shared backplane in a modular ethernet switch.  Note
       that an implementation may model a backplane as a single
       physical component, which is actually implemented as multiple
       discrete physical components (within a chassis or stack).";
  }

  identity container {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is capable
       of containing one or more removable physical entities,
       possibly of different types.  For example, each (empty or
       full) slot in a chassis will be modeled as a container.  Note
       that all removable physical components should be modeled
       within a container component, such as field-replaceable
       modules, fans, or power supplies.  Note that all known
       containers should be modeled by the agent, including empty
       containers.";
  }

  identity power-supply {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is a
       power-supplying component.";
  }

  identity fan {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is a fan or
       other heat-reduction component.";
  }

  identity sensor {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is some sort
       of sensor, such as a temperature sensor within a router
       chassis.";
  }

  identity module {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is some sort
       of self-contained sub-system.  If a module component is
       removable, then it should be modeled within a container

       component; otherwise, it should be modeled directly within
       another physical component (e.g., a chassis or another
       module).";
  }

  identity port {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is some sort
       of networking port capable of receiving and/or transmitting
       networking traffic.";
  }

  identity stack {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is some sort
       of super-container (possibly virtual) intended to group
       together multiple chassis entities.  A stack may be realized
       by a virtual cable, a real interconnect cable attached to
       multiple chassis, or multiple interconnect cables.  A stack
       should not be modeled within any other physical components,
       but a stack may be contained within another stack.  Only
       chassis components should be contained within a stack.";
  }

  identity cpu {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is some sort
       of central processing unit.";
  }

  identity energy-object {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is some sort
       of energy object, i.e., it is a piece of equipment that is
       part of or attached to a communications network that is
       monitored, it is controlled, or it aids in the management of
       another device for Energy Management.";
  }

  identity battery {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is some sort
       of battery.";
  }

  identity storage-drive {
    base ianahw:hardware-class;
    description
      "This identity is applicable if the hardware class is some sort
       of component with data storage capability as its main
       functionality, e.g., hard disk drive (HDD), solid-state device
       (SSD), solid-state hybrid drive (SSHD), object storage device
       (OSD), or other.";
  }
<CODE ENDS>
}


<CODE BEGINS> file "ietf-network-inventory@2022-07-11.yang"
module ietf-network-inventory {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-network-inventory";
  prefix ni;

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC6991: Common YANG Data Types.";
  }

  import iana-hardware {
    prefix ianahw;
    reference
      "RFC 8348: A YANG Data Model for Hardware Management.";
  }

  import ietf-inet-types {
    prefix inet;
  }

  organization
    "IETF CCAMP Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/ccamp/>
     WG List:  <mailto:ccamp@ietf.org>

     Editor:   Chaode Yu
               <yuchaode@huawei.com>

     Editor:   Italo Busi
               <italo.busi@huawei.com>

     Editor:   Aihua Guo
               <aihuaguo.ietf@gmail.com>

     Editor:   Sergio Belotti
               <sergio.belotti@nokia.com>

     Editor:   Jean-Francois Bouquier
               <jeff.bouquier@vodafone.com>

     Editor:   Fabio Peruzzini
               <fabio.peruzzini@telecomitalia.it>";

  description
    "This module defines a model for retrieving network inventory.
    The model fully conforms to the Network Management
    Datastore Architecture (NMDA).

    Copyright (c) 2022 IETF Trust and the persons
    identified as authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject
    to the license terms contained in, the Revised BSD License
    set forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX; see
    the RFC itself for full legal notices.

    The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
    NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
    'MAY', and 'OPTIONAL' in this document are to be interpreted as
    described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
    they appear in all capitals, as shown here.";

  // RFC Ed.: replace XXXX with actual RFC number and remove this
  // note.
  // RFC Ed.: update the date below with the date of RFC publication
  // and remove this note.

  revision 2022-07-11 {
    description
      "version 3.0.0";
    reference
      "draft-yg3bp-ccamp-inventory-yang-01: A YANG Data
      Model for Network Inventory.";
  }

  revision 2022-03-04 {
    description
      "version 3.0.0";
    reference
      "draft-yg3bp-ccamp-inventory-yang-00: A YANG Data
      Model for Network Inventory.";
  }

  revision 2021-11-09 {
    description
      "version 2.0.0";
    reference
      "draft-yg3bp-ccamp-optical-inventory-yang-00: A YANG Data
      Model for Optical Network Inventory.";
  }

  revision 2021-10-25 {
    description
      "Initial revision.";
    reference
      "draft-yg3bp-ccamp-optical-inventory-yang-00: A YANG Data
      Model for Optical Network Inventory.";
  }

  container network-inventory {
    config true;
    description
      "The top-level container for the network inventory
      information.";
    uses equipment-rooms-grouping;
    uses network-elements-grouping;
  }

  grouping common-entity-attributes {
    description
      "A set of attributes which are common to all the entities
      (e.g., component, equipment room) defined in this module.";
    leaf uuid {
      config true;
      type string;
      description
        "Uniquely identifies an entity (e.g., component).";
    }
    leaf name {
      type string;
      description
        "A name for an entity (e.g., component), as specified by
        a network manager, that provides a non-volatile 'handle'
        for the entity and that can be modified anytime during the
        entity lifetime.

        If no configured value exists, the server MAY set the value
        of this node to a locally unique value in the operational
        state.";
    }
    leaf description {
      type string;
      description "a textual description of inventory object";
    }
    leaf alias {
      type string;
      description
      "a alias name of inventory objects. This alias name can be
      specified by network manager.";
    }
  }

  grouping network-elements-grouping {
    description
      "The attributes of the network elements.";
    container network-elements {
      description
        "The container for the list of network elements.";
      list network-element {
        key uuid;
        description
          "The list of network elements within the network.";
        uses common-entity-attributes;
        container ne-location {
          description
            "To be added.";
          leaf-list equipment-room-name {
            type leafref {
              path "/ni:network-inventory/ni:equipment-rooms/" +
                   "ni:equipment-room/ni:name";
            }
            description
              "Names of equipment rooms where the NE is located.
              Please note that a NE could be located in several
              equipment rooms.";
          }
        }
        uses ne-specific-info-grouping;
        uses components-grouping;
      }
    }
  }

  grouping ne-specific-info-grouping {
    description
      "To be added.";
    leaf hardware-rev {
      type string;
      description
        "The vendor-specific hardware revision string for the NE.";
    }
    leaf firmware-rev {
      type string;
      description
        "The vendor-specific firmware revision string for the NE.";
    }
    leaf software-rev {
      type string;
      description
        "The vendor-specific software revision string for the NE.";
    }
    leaf mfg-name {
      type string;
      description "The name of the manufacturer of this NE";
    }
    leaf mfg-date {
      type yang:date-and-time;
      description "The date of manufacturing of the NE.";
    }
    leaf part-number {
      type string;
      description
        "The vendor-specific model name identifier string associated
         with this NE.  The preferred value is the customer-visible
         part number, which may be printed on the NE itself.";
    }
    leaf serial-number {
      type string;
      description
        "The vendor-specific serial number string for the NE";
    }
    leaf product-name {
      type string;
      description
        "indicates the vendor-spefic device type infomation.";
    }
  }

  grouping equipment-rooms-grouping {
    description
      "The attributes of the equipment rooms.";
    container equipment-rooms {
      description
        "The container for the list of equipment rooms.";
      list equipment-room {
        key uuid;
        description
          "The list of equipment rooms within the network.";
        uses common-entity-attributes;
        leaf location {
          type string;
          description
            "compared with the location information of the other
            inventory objects, a GIS address is preferred for
            equipment room";
        }
        container racks {
          description
            "To be added.";
          list rack {
            key uuid;
            description
              "The list of racks within an equipment room.";
            uses common-entity-attributes;
            uses rack-specific-info-grouping;
            list contained-chassis {
              key "ne-ref component-ref";
              description
                "The list of chassis within a rack.";
              leaf ne-ref {
                type leafref {
                  path "/ni:network-inventory/ni:network-elements"
                  + "/ni:network-element/ni:uuid";
                }
                description
                  "The reference to the network element containing
                  the chassis component.";
              }
              leaf component-ref {
                type leafref {
                  path "/ni:network-inventory/ni:network-elements"
                  + "/ni:network-element[ni:uuid"
                  + "=current()/../ne-ref]/ni:components"
                  + "/ni:component/ni:uuid";
                }
                description
                  "The reference to the chassis component within
                  the network element and contained by the rack.";
              }
            }
          }
        }
      }
    }
  }

  grouping rack-specific-info-grouping {
    description
      "To be added.";
    container rack-location {
      description
        "To be added.";
      leaf equipment-room-name {
        type leafref {
          path "/ni:network-inventory/ni:equipment-rooms"
          + "/ni:equipment-room/ni:name";
        }
        description
        "Name of equipment room where this rack is located.";
      }
      leaf row-number {
        type uint32;
        description
          "Identifies the row within the equipment room where
          the rack is located.";
      }
      leaf column-number {
        type uint32;
        description
          "Identifies the physical location of the rack within
          the column.";
      }
    }
    leaf rack-number {
      type uint32;
      description
        "An integer identifier of rack.";
    }
    leaf height {
      type uint16;
      units millimeter;
      description
        "To be added.";
    }
    leaf width {
      type uint16;
      units millimeter;
      description
        "To be added.";
    }
    leaf depth {
      type uint16;
      units millimeter;
      description
        "To be added.";
    }
    leaf max-voltage {
      type uint16;
      units volt;
      description
        "The maximum voltage could be supported by the rack.";
    }
  }

  grouping components-grouping {
    description
      "The attributes of the hardware components.";
    container components {
      description
        "The container for the list of components.";
      list component {
        key uuid;
        description
          "The list of components within a network element.";
        uses common-entity-attributes;
        leaf location {
          type string;
          description
            "To be added.

            In optical transport network, the location string is
            using the following pattern:
              '/ne=<nw-ne-name>[/r=<r_index>][/sh=<sh_index>
              [/s_sh=<s_sh_index> ...]][[/sl=<sl_index>
              [/s_sl=<s_sl_index> ...]][/p=<p_index> …]]'
            ";
        }
        leaf class {
          type identityref {
            base ianahw:hardware-class;
          }
          description
            "An indication of the general hardware type of the
             component.";
          reference
            "RFC 8348: A YANG Data Model for Hardware Management.";
        }
        leaf-list contained-child {
          type leafref {
            path "../ni:uuid";
          }
          description
            "The child components' identifier that are physically
            contained by this component.";
        }
        leaf parent-rel-pos {
          type int32 {
            range "0 .. 2147483647";
          }
          description
            "To be added.";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalParentRelPos";
        }
        container parent-references {
          description
            "To be added.";
          leaf equipment-room-uuid {
            type leafref {
              path "/ni:network-inventory/ni:equipment-rooms/" +
                   "ni:equipment-room/ni:uuid";
            }
            description
              "To be added.";
          }
          leaf ne-uuid {
            type leafref {
              path "/ni:network-inventory/ni:network-elements/" +
                   "ni:network-element/ni:uuid";
            }
            description
              "To be added.";
          }
          leaf rack-uuid {
            type leafref {
              path "/ni:network-inventory/ni:equipment-rooms/" +
                   "ni:equipment-room/ni:racks/ni:rack/ni:uuid";
            }
            description
              "To be added.";
          }
          container component-references {
            description
              "To be added.";
            list component-reference {
              key index;
              description
                "this list object is used to indicate its
                hierarchial parent components' identifier.
                This hierarchial relation can be found by index
                parameter. The topest parent component should be
                0-index.";
              leaf index {
                type uint8;
                description
                  "To be added.";
              }
              leaf class {
                type leafref {
                  path "../../../../ni:class";
                }
                description
                  "To be added.";
              }
              leaf uuid {
                type leafref {
                  path "../../../../ni:uuid";
                }
                description
                  "To be added.";
              }
            }
          }
        }
        leaf hardware-rev {
          type string;
          description
            "The vendor-specific hardware revision string for the
             component.  The preferred value is the hardware revision
             identifier actually printed on the component itself (if
             present).";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalHardwareRev";
        }
        leaf firmware-rev {
          type string;
          description
            "The vendor-specific firmware revision string for the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalFirmwareRev";
        }
        leaf software-rev {
          type string;
          description
            "The vendor-specific software revision string for the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalSoftwareRev";
        }
        leaf serial-num {
          type string;
          description
            "The vendor-specific serial number string for the
             component.  The preferred value is the serial number
             string actually printed on the component itself (if
             present).";
          reference
            "RFC 6933: Entity MIB (Version 4) -
            entPhysicalSerialNum";
        }
        leaf mfg-name {
          type string;
          description
            "The name of the manufacturer of this physical component.
             The preferred value is the manufacturer name string
             actually printed on the component itself (if present).

             Note that comparisons between instances of the
             'model-name', 'firmware-rev', 'software-rev', and
             'serial-num' nodes are only meaningful amongst
             components with the same value of 'mfg-name'.

             If the manufacturer name string associated with the
             physical component is unknown to the server, then this
             node is not instantiated.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName";
        }
        leaf part-number {
          type string;
          description
            "The vendor-specific model name identifier string
             associated with this physical component.  The preferred
             value is the customer-visible part number, which may be
             printed on the component itself.

             If the model name string associated with the physical
             component is unknown to the server, then this node is
             not instantiated.";
          reference
            "RFC 6933: Entity MIB (Version 4) -
            entPhysicalModelName";
        }
        leaf asset-id {
          type string;
          description
            "This node is a user-assigned asset tracking identifier
             for the component.

             A server implementation MAY map this leaf to the
             entPhysicalAssetID MIB object.  Such an implementation
             needs to use some mechanism to handle the differences in
             size and characters allowed between this leaf and
             entPhysicalAssetID.  The definition of such a mechanism
             is outside the scope of this document.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalAssetID";
        }
        leaf is-fru {
          type boolean;
          description
            "This node indicates whether or not this component is
             considered a 'field-replaceable unit' by the vendor.  If
             this node contains the value 'true', then this component
             identifies a field-replaceable unit.  For all components
             that are permanently contained within a
             field-replaceable unit, the value 'false' should be
             returned for this node.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalIsFRU";
        }
        leaf mfg-date {
          type yang:date-and-time;
          description
            "The date of manufacturing of the managed component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate";
        }
        leaf-list uri {
          type inet:uri;
          description
            "This node contains identification information about the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalUris";
        }
        uses component-specific-info-grouping;
      }
    }
  }

  grouping component-specific-info-grouping {
    description
      "In case if there are some missing attributes of component not
      defined by RFC8348. These attributes could be
      component-specific.
      Here we provide a extension structure for all the components
      we recognized. We will enrich these component specifc
      containers in the future.";
    choice component-class {
      description
        "To be added.";
      case chassis {
        when "./class = 'ianahw:chassis'";
        container chassis-specific-info {
          description
            "This container contains some attributes belong to
            chassis only.";
          uses chassis-specific-info-grouping;
        }
      }
      case container {
        when "./class = 'ianahw:container'";
        container slot-specific-info {
          description
            "This container contains some attributes belong to
            slot or sub-slot only.";
          uses slot-specific-info-grouping;
        }
      }
      case module {
        when "./ni:class = 'ianahw:module'";
        container board-specific-info {
          description
            "This container contains some attributes belong to
            board only.";
          uses board-specific-info-grouping;
        }
      }
      case port {
        when "./ni:class = 'ianahw:port'";
        container port-specific-info {
          description
            "This container contains some attributes belong to
            port only.";
          uses port-specific-info-grouping;
        }
      }
    //TO BE ADDED: transceiver
    }
  }

  grouping chassis-specific-info-grouping {
  //To be enriched in the future.
    description
      "To be added.";
  }

  grouping slot-specific-info-grouping {
  //To be enriched in the future.
    description
      "To be added.";
  }

  grouping board-specific-info-grouping {
  //To be enriched in the future.
    description
      "To be added.";
  }

  grouping port-specific-info-grouping {
  //To be enriched in the future.
    description
      "To be added.";
  }
<CODE ENDS>
}
]]></artwork></figure>

<t>The YANG modules ietf-lmo-example-mapping-ietf-network-inventory and ietf-lmo-example-mapping-openconfig-platform make the import of the inventory module(s) and augment the ietf-lmo-assets YANG module to include inventory attributes to the asset identity.</t>

<t>For this practice, ietf-lmo-assets.yang, removes vendor, name, description, pid, serial-number, vid, mac-address, ip-address, entity-name, product-description, udi, transparency-info as these and similar properties are expected to be managed using other inventory mechanism.</t>

<t>This process requires to include a mapping YANG module per imported inventory YANG module.</t>

<t>Module ietf-lmo-example-mapping-ietf-network-inventory, makes the mapping between ietf-network-inventory and ietf-lmo-assets, augmenting asset identity:</t>

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-lmo-example-mapping-ietf-network-inventory@.yang"
module ietf-lmo-example-mapping-ietf-network-inventory {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-example-mapping-ietf-network-inventory";
  prefix ietf-lmo-example-map-ietf;

  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-assets {
    prefix ietf-lmo-asset;
  }
  import ietf-network-inventory {
    prefix ni;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>
     Editor:  Josh Suhr
              <mailto:josuhr@cisco.com>
     Editor:  Sudhendu Kumar
              <mailto:skumar23@ncsu.edu>";
  description
    "This YANG module maps the IETF LMO asset concept to the 
     IETF network inventory framework.

     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions  
  
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";

    revision 2022-11-25 {
    description
      "First version of mapping to IETF asset invetory modules.";
    reference
      "RFC XXXX: mapping inventory and LMO YANG Model";
  }

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class,'ietf-lmo-asset:asset')";

    choice mapping-type {
      // config true;
      description
        "mapping type description";
      case network-element {
        leaf network-element-ref {
          type leafref {
            path "/ni:network-inventory/ni:network-elements/"
            + "ni:network-element/ni:uuid";
          description
            "network element reference description";
          }
        }
      }
      case component {
        leaf component-network-element-ref {
          type leafref {
            path "/ni:network-inventory/ni:network-elements/"
            + "ni:network-element/ni:uuid";
          description
            "component network element reference description";
        }
        leaf component-ref {
          type leafref {
            path "/ni:network-inventory/ni:network-elements/"
            + "ni:network-element"
            + "[ni:uuid = current()/../network-element-ref]/"
            + "ni:components/ni:component/ni:uuid";
          description
            "component reference description";
          }
        }
      }
      case rack { 
        leaf rack-equipment-room-ref {
          type leafref {
            path "/ni:network-inventory/ni:equipment-rooms/"
            + "ni:equipment-room/ni:uuid";
          description
            "rack equipment room reference description";
          }
        }
        leaf rack-ref {
          type leafref {
            path "/ni:network-inventory/ni:equipment-rooms/"
            + "ni:equipment-room"
            + "[ni:uuid = current()/../rack-equipment-room-ref]/"
            + "ni:racks/ni:rack/ni:uuid";
          description
            "rack reference description";  
          }
        }
      }
    }

    description 
      "This adds a reference from LMO instances of class 'asset'
       to the IETF network inventory tree.";
  }
<CODE ENDS>
} Module ietf-lmo-example-mapping-openconfig-platform, includes the mapping between openconfig-platform and ietf-lmo-assets, augmenting asset identity:

<CODE BEGINS> file "ietf-lmo-example-mapping-openconfig-platform@2023-01-16.yang"
module ietf-lmo-example-mapping-openconfig-platform {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-example-mapping-openconfig-platform";
  prefix ietf-lmo-example-map-oc;

  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-assets {
    prefix ietf-lmo-asset;
  }
  // For the show case, import statement should be uncommented, 
  // import openconfig-platform {
  //  prefix oc-platform;
  // }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>
     Editor:  Josh Suhr
              <mailto:josuhr@cisco.com>
     Editor:  Sudhendu Kumar
              <mailto:skumar23@ncsu.edu>";
  description
    "This YANG module maps the IETF LMO asset concept to the 
     OpenConfig platform framework.

     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code. All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions  
  
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2023-01-16 {
    description
      "import openconfig-platform statement commented out.";
    reference
      "RFC XXXX: mapping openconfig inventory and LMO YANG Model";
  }
  revision 2022-11-25 {
    description
      "First version of mapping to OC platform modules.";
    reference
      "RFC XXXX: mapping openconfig inventory and LMO YANG Model";
  }

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class,'ietf-lmo-asset:asset')";

    leaf oc-component-ref {
      type string;
      config true;
      // leafref path "/oc-platform:components/oc-platform:component/" 
      // + "oc-platform:name";
      // this is simplified version to show case
      description "simplified example to include component reference";
    }

    description 
      "This adds a reference from LMO instances of class 'asset'
       to the OpenConfig platform tree.";
  }
<CODE ENDS>
} openconfig-platform.yang is not included in the section for simplicity of the output. 
]]></artwork></figure>

<t>Once compilation is applied to the YANG modules, the following configuration, considers network element "router2" as a hardware network element, which is described under network-inventory YANG module:</t>

<t>network-inventory network-elements network-element 22222
 name          router2
 hardware-rev  1.1
 software-rev  17.1
 mfg-name      cisco
 serial-number AF123456
 product-name  ASR1k
 components component fan
  part-number 678678
 components component psu
  part-number 654321</t>

<t>"router2" asset identity is augmented including attributes from ietf-network-inventory(i.e. rack-equipment-room-ref, rack-ref, network-element-ref, etc) and any other imported YANG module, i.e. openconfig-platform inventory YANG modules, with oc-component-ref.</t>

<t>lmo0(config)#lmos lmo asset inst router2 ? 
Possible completions:
  activation-date          age                             aggregation                capture-info                component-network-element-ref<br />
  component-ref            ietf-lmo-asset:deployment-mode  ietf-lmo-feature:features  install-location            interfaces 
  licenses                 network-element-ref             number-of-instances        oc-component-ref            parent                     <br />
  platform-dependency-os   rack-equipment-room-ref         rack-ref                   role                        sign-of-life-timestamp       <br />
  software-type            software-version                tags</t>

<t>Changes in future versions of DMLMO, might require one unique import statement in the mapping YANG module, from another inventory YANG module.</t>

</section>


  </back>

<!-- ##markdown-source:
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
PgIHFSUqKmU7uo7iW8/fWpjz6wfvgcGkhy59W365K0wBe8OCuRgSVaqQV/fR
dw09RP+bODLc3tZh5XGGd4ZdIhHPBnYf7RFFtw/HqH387RAmpZ9gQZgLzjZh
UsUvzrjeGX/PSVN/Onvx+Enw3ZO/nD+//DPVHQn2G97gbx/cf/AwvH8cHn8+
Rkm8b1F803Mc/FuWiw8qP09wPD5+JN+jIliuoylMUxfZCb5+QtfJypO3q/Qk
K09I2DeG3VevA23Pk7fNWdWvXm6yf/7k9VPux3xg9bbA7B2rtNUp6CqHbsNm
PSldBZgaAbr/41+CH+MJXsL607Kq1uXJ0REmOnEicDFG6MYAy9H14ogzcY7+
bKgAXn4GajW8/Sck3io/4We+Va9Zzz6ZJVVewKO+Vs7uRw3W7tzsG++/8nIZ
XNbLomekf+YlPNA/jqf/sn+wVqPlP2v0WgEjg2LKfLLyruQCCpcwS1VLOr4M
M69TueiLBSkNEHQhXEzRoZ3CuefJ2Gbd8DnL15uCEvAOpocBnIfjgKjqNdYs
1bcT8QYUDqEv/lEDJAMOMTadCzYFe59LYtDIeJmDLkHMmpO/imdYMRpzJlW9
QLz8iDdxyJzk9npJhu3/6N76iLPdcms/VL09QKZV0SOhuw6rpMKss3VdlDU3
jOPSGqaJixmHbstxdx3ul6TuycjVOLrvS7l7tPzvLh8D0vlxWwVFOCuswWN6
bI2nCjEGs/fK4Fm8iFLsF3GV8E1AhRgbP2mkbljRu4+l25OF+wN1TqnKbByb
MyqrCfECR2vfiQqbvd9sqkQMSo2RV0/Pgv8FH8+k19fX42I+DWM6NjQtTncE
3+Ebh48AOXwbBwfheysOrrAuXxqkhIuMEknLsT4/8h9s2UFwGnatubH/kMEx
A3GCjhC1pZONHSvQMwQmjc1+Wa34hIQLoYUSIPV7v3hAexDefxA++HI7aOcm
XXSOBVCxygBVtNJV498JfMfh/S/DBw+HwMdtMvXLuE+OhKW7RFYFGsz1NAP4
ALrdQuQP5ILALe2dDBMwm60l0f0tVpQebVunfV/k/HHwGl5tIdA3JWX9tme1
dDnrJ9bxkButYywv6/zUBRqB91K/4qdcA6Sexal1PXiiS/utwXOR312q6Q2e
6gfrpcEzcdr38DkydaXTvk1X2bvrTvPLLoTCSfZeWtES2SaWSY0lFDCbAPOl
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
5GTu/P+TJhc0ilICAA==

-->

</rfc>

