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


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

]>


<rfc ipr="trust200902" docName="draft-palmero-opsawg-dmlmo-06" 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="2022" month="September" day="21"/>

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

    <abstract>


<t>This document motivates and specifies a data model for lifecycle management and operations. It describes the motivation and requirements to collect asset-centric metrics including but not limited to asset adoption and usability, licensing, supported features and capabilities, enabled features and capabilities, etc.; with the primary objective to measure and improve the overall user experience along the lifecycle journey, from technical requirements and technology selection through advocacy and renewal, including the end of life of an asset.</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 consumption and licensing models. Any service can be deployed by composing multiple assets together where an asset refers to hardware, software, application, system or service. For example, cloud-native infrastructure 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, the 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. 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 behind 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 draft is focused on asset inventory, licenses information, feature usage and incident management. This draft specifies four YANG modules <xref target="RFC7950"/> focused on LMO, including:</t>

<figure><artwork><![CDATA[
* Licenses, 
* Assets, 
* Usage level of Asset features, and 
* Incident Management.
]]></artwork></figure>

<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>Terminology and abbreviations used in this document:</t>

<t><list style="symbols">
  <t>Asset: refers to hardware, software, applications, 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 the entire asset or the part of the asset.</t>
  <t>EOL: End of Life.</t>
  <t>Features: are options or functional capabilities available in an asset.</t>
  <t>License: is issued by an entity such as the developer or the Open Source community and allows the user to operate the asset. Licenses determine how the asset can be leveraged and what is required in cases the asset is changed.</t>
  <t>LMO: Lifecycle Management and Operations.</t>
  <t>Optimal Software Version(OSV): refers to the elected software version considered optimal in the user environment.</t>
  <t>PID: Product Identifier.</t>
  <t>Usage: refers to how features of the asset are used.</t>
  <t>User: refers to the organization that owns or consumes the asset. Within the organization there are entities that: a) use the assets in their operations, b) manage the assets.</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>

</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, license, 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>Licenses may not have been obtained at the optimum level for a given feature, where a user might have bought licenses 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 the technology used within the asset.</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="license-inventory-and-activation"><name>License Inventory and Activation</name>

<t>An operations engineer would like to understand which licenses 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 license and how to activate them.</t>

<t>It is relatively straightforward to have an inventory of existing licenses 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 license 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 licenses, etc.</t>

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

<t>Information on how assets are licensed 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, license, 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 licenses; a license may contain one or more sub-licenses.  The level of usage for each feature and license associated with the asset is measured.  For every asset, a list of incidents could be created.</t>

<t>For example, a user needs to measure the utilization of a specific license for a specific type of asset.  The information about the license may reside in a license server.  The state (activated or not) of the license 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 licenses.  The user experience is thus enhanced by
having accurate knowledge about the utility of the given license.</t>

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

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

<t>The model allows for future expansion by new metrics that will quantify user experience. Notice that future asociation relationship and future expansion might be linked to asset or to one of the other datasets: incident, feature usage or licenses.</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-inventory"><name>Aggregated Asset Inventory</name>

<t>This specification uses <xref target="I-D.draft-ietf-netmod-geo-location-11"/>, <xref target="I-D.draft-ietf-opsawg-sbom-access-03"/></t>

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

<t>This specification uses <xref target="I-D.draft-ietf-netmod-geo-location-11"/>, <xref target="I-D.draft-ietf-opsawg-sbom-access-03"/></t>

<figure><artwork><![CDATA[
module: ietf-lmo-assets-inventory

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw vendor?                   ietf-lmo-common:vendor-id
    +--rw name?                     string
    +--rw description?              string
    +--rw pid?                      string
    +--rw serial-number?            string
    +--rw vid?                      string
    +--rw mac-address?              yang:mac-address
    +--rw ip-address*               inet:ip-address
    +--rw entity-name?              string
    +--rw product-description?      string
    +--rw udi?                      string
    +--rw transparency-info?        inet:uri
    +--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="licenses"><name>Licenses</name>

<figure><artwork><![CDATA[
module: ietf-lmo-licenses

  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:license-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 licenses
       +--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-incident-management

  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@2022-02-28.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 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 license-id-t {
    type string;
    description
      "License ID Type";
  }
  typedef license-model-t {
    type enumeration {
      enum perpetual {
        description
          "Perpetual license";
      }
      enum subscription {
        description
          "Subscription license";
      }
      enum usage-based {
        description
          "Usage-based license";
      }
      enum other {
        description
          "Undefined license type";
      }
    }
    description
      "License Model Type";
  }
  identity license-buying-program-t {
    description
      "License Buying Program that contains the plan to generate
       revenue for specific asset";
  }
  identity enterprise-agreement {
        base license-buying-program-t; 
        description
          "Enterprise Agreement";
  }
  identity managed-service-license-agreement {
        base license-buying-program-t; 
        description
          "Managed Service License Agreement";
  }
  identity service-provider-network-agreement {
        base license-buying-program-t; 
        description
          "Service Provider Network Agreement";
  }
  identity collab-active-user {
        base license-buying-program-t; 
        description
          "Collaboration Active User";
  }
  identity service-full-coverage {
        base license-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, 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 vendros to 
          limit the number of licenses for the use of the specific 
          asset";
  }
  typedef license-key-t {
    type string;
    description
      "License Key Type";
  }
  typedef purchase-order-t {
    type string;
    description
      "License purchase order number";
  }
  typedef license-state-t {
    type enumeration {
      enum inactive {
        description
          "Inactive State";
      }
      enum active {
        description
          "Active State";
      }
      enum unknown {
        description
          "Unknown State";
      }
    }
    description
      "License 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 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.";
  }
  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";
  }
  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 counter-type {
    description
      "Specify the different type of counters, 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>
} ### Aggregated Asset Inventory

<CODE BEGINS> file "ietf-lmo-assets-inventory@2022-07-07.yang"
module ietf-lmo-assets-inventory {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-assets-inventory";
  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-inet-types {
    prefix inet;
  }
  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 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";
    leaf vendor {
      type ietf-lmo-common:vendor-id;
      description
        "Vendor or Manufacturer name or identifier; e.g. Cisco";
    }
    leaf name {
      type string;
      description
        "name of the asset, aka hostname";
    }
    leaf description {
      type string;
      description
        "brief description of the asset";
    }
    leaf pid {
      type string;
      description
        "Part or Product Identifier";
    }
    leaf serial-number {
      type string;
      description
        "Serial number";
    }
    leaf vid {
      type string;
      description
        "Hardware Version ID";
    }
    leaf mac-address {
      type yang:mac-address;
      description
        "The mac-address type represents an IEEE 802 MAC address.
      The canonical representation uses lowercase characters.";
    }
    leaf-list ip-address {
      type inet:ip-address;
      description
        "IP address, representing the management IP of the asset.
      It can refer to ipv4 and/or ipv6 address.";
    }
    leaf entity-name {
      type string;
      description
        "Hardware type, e.g., chassis, slot, or power-supply";
    }
    leaf product-description {
      type string;
      description
        "Standard description of the assset; e.g., '1-port Gigabit
          Ethernet'";
    }
    leaf udi {
      type string;
      description
        "Identify uniquely an asset = vendor-id + pid + id";
    }
    leaf transparency-info { 
      type inet:uri;
      description
        "Link to software bill of material and security advisory
        information, see draft-ietf-opsawg-sbom-access";
    }
    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>
} ### Licenses

<CODE BEGINS> file "ietf-lmo-licenses@2022-09-20.yang"
module ietf-lmo-licenses {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-licenses";
  prefix ietf-lmo-licenses;
  import ietf-yang-types {
    prefix yang;
  }
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-feature {
    prefix ietf-lmo-feature;
  }
  import ietf-lmo-assets-inventory {
    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 licenses 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-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 
// licensed on events queries per second, minute, hour, etc. 
// This is a popular model in the cloud space for example the Google 
// MAPs API??

  identity license {
    base ietf-lmo-common:lmo-class;
    description "A license is a class of lmo that represents ...";
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-licenses:license')";
    description
      "licenses container includes attributes for licenses";
    leaf uid {
      type string;
      description
        "Unique License Identifier";
    }
    choice all-1-asset{
      description
        "Considering license 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 license 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 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
              "Asset to which this license is attached";
          }
        }  
      }
     } 
    list resource {
      key "id";
      description
        "Resource profile";
      leaf id {
        type string;
        description
          "Identify resource for license 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 license 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 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";
        }
      } 
    }
    leaf state {
      type ietf-lmo-common:license-state-t;
      description
        "License state; e.g., active, inactive, or unknown";
    }
    container renewal-profile {
      description
        "Profile of license 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 licenses";
  
    container licenses {
      description
        "license 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-licenses:license')";
        description
          "Asset class 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
          "Asset to which this license is attached";
      }
    }
    
    // Fill more leafs for license if it is required here...
  }  
<CODE ENDS>
} ### Features

<CODE BEGINS> file "ietf-lmo-feature@2022-09-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-inventory {
    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-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-lmo-feature {
    prefix ietf-lmo-feature;
  }
  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 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-incident-management@2022-09-20.yang"
module ietf-lmo-incident-management {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-incident-management";
  prefix ietf-lmo-incident;

  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-yang-types {
    prefix yang;
  }
  import ietf-lmo-assets-inventory {
    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 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 ...";
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-incident: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-09-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-licenses {
    prefix ietf-lmo-licenses;
  }
  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-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 ...";
  }
  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-licenses:license')";
    description
      "license 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 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
          "Organization to which this license is attached";
      }
    }
    // Fill more leafs for license when organization module is present here...
  }   
<CODE ENDS>
} ### User

<CODE BEGINS> file "ietf-lmo-user@2022-09-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-organization {
    prefix ietf-lmo-organization;
  }
  import ietf-lmo-licenses {
    prefix ietf-lmo-licenses;
  }
  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-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 represents ...";
  }
  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-licenses:license')";
    description
      "license 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 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
          "User to which this license 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-inventory <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-licenses <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-incident-management <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: lmocom <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: lmocom <br />
reference: RFC XXXX <br /></t>

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

<t>name: ietf-lmo-licenses <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-licenses <br />
maintained by IANA: N <br />
prefix: lmolicense <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: lmousage <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: lmousage <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-incident-management <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-incident-management <br />
maintained by IANA: N <br />
prefix: lmoscm <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: lmoscm <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: lmoscm <br />
reference: RFC XXXX <br /></t>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>





<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<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='RFC7950' target='https://www.rfc-editor.org/info/rfc7950'>
<front>
<title>The YANG 1.1 Data Modeling Language</title>
<author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'><organization/></author>
<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='I-D.draft-ietf-netmod-geo-location-11'>
   <front>
      <title>A YANG Grouping for Geographic Locations</title>
      <author fullname='Christian Hopps' initials='C.' surname='Hopps'>
         <organization>LabN Consulting, L.L.C.</organization>
      </author>
      <date day='11' 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='Internet-Draft' value='draft-ietf-netmod-geo-location-11'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-netmod-geo-location-11.txt' type='TXT'/>
</reference>


<reference anchor='I-D.draft-ietf-opsawg-sbom-access-03'>
   <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='24' month='October' year='2021'/>
      <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-03'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-opsawg-sbom-access-03.txt' type='TXT'/>
</reference>



<reference anchor='RFC6241' target='https://www.rfc-editor.org/info/rfc6241'>
<front>
<title>Network Configuration Protocol (NETCONF)</title>
<author fullname='R. Enns' initials='R.' role='editor' surname='Enns'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'><organization/></author>
<author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'><organization/></author>
<author fullname='A. Bierman' initials='A.' role='editor' surname='Bierman'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc8040'>
<front>
<title>RESTCONF Protocol</title>
<author fullname='A. Bierman' initials='A.' surname='Bierman'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='K. Watsen' initials='K.' surname='Watsen'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc3688'>
<front>
<title>The IETF XML Registry</title>
<author fullname='M. Mealling' initials='M.' surname='Mealling'><organization/></author>
<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>




    </references>


<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 and many others for their helpful comments and suggestions.</t>

</section>
<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 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 licenses module.  There is no restriction to be called from any of the other YANG odules.</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>


  </back>

<!-- ##markdown-source:
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
fT4JuaOlQUKjBxKWV/C6KVLZk8YguoISIC41Jdawz8ScCoUPiQk0lEKmJqTb
myeix1i6nyiJDphPPnLZ1Cmkks2KnE5HYxxq887V2k1Vb9MrRRfyq0tzG9QQ
SWOcbu7ftEpeqc3BFtC/q82wCaSbnIR0jeDg+fyeKYKmrSuVfNi97K8kkxrv
O5sU5/qNS5xu2FrZd+yTnUeuMy5ovoclxC8Mjb2zAUSDdFFEY2eIQsEEf0ty
kAu/neZ3YyZz+XWv3ScX6u44/JuZBFj+Kb57o8aqNzyyRlONffa2G8ZDOtXk
urFoWChvGCGuU5t1WdAdXeDH8PNJZ0ttW64UOecoGI/H/Tx8ee1MTHzaguRo
8T3LNQW63JbbG9upm8tsD6iZMHvw9tNf2hpyZvqGVxydy/rCKpfUi1yc2jLD
w5p9ec2C7iBwWZKx88VuFxewY2Hm9q7wKoI5wzhVZfldrMJG6yphNdRKa7Wu
K66EqGvIXSXess/RH5ANmjJL1NEHVrttsRf5FGNoYGYoHov0ryWo/0sFigaY
yeE1VfByG4BKWXZnHLQIcVNVmlIFRDHsByhamMDbQ/7INK1CkG3NeDp+yCZE
P5AaVWJPRllLR9OuMDv3ANj8EKba7MYM9JM+PyjyusLGMuV1UsVLjH9geUXs
b+y8KzW3U3xwkDnwaN0MQubfik3tEYFJMzyWQJa8y9S4Unq8l1jbOo02oMp8
aqqVX567QJMlMAArr/iXhfXhXar/8STJXrmgPsEv77nr2Aa83qYestXwb+Uw
wwvgHDS0usx8eD08xUKGHnvQh4xe4qGEuV5T1fAmlcE5WdZTYjKRR6VneCQy
KqU8TaURwbrI/0EDRsH3Sfg4oburkXR5hXXhXxiGc1kewDfkSNPkfNjuYzPZ
QnqGCCOSOoW6ujfbV9KAiiqLOr0JnaGkXae/F4a9laNGd9PIKXpJTe2doajO
L8wEvG+hpFZOlbhRrxY+pjm2Wj0IFWcoQYs8w5qSSRHXYD7xqFgmUDfiEmyg
KDFE4m5a5jtpTAOxqoripbTiqwbWsQ4xqQ8s04OW8jy/xgKcNBIW+8XS2k4/
c8fRZGYegIlKfsQKO1QeBtYjJjDuCVoCdqmwNQ1PYeiCOyJggXeabRx8V3IX
R2eUBAPDVLlReozow+48w+0BS2mdmG5Mx/WIQ7dWpvJWYmf7LcK1PHDp70a+
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
HRUo1j3U3D8ieuH0WfkUvv//sy434ZCXAQA=

-->

</rfc>

