Skip to content
index.html 66.7 KiB
Newer Older
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
        
          
          <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Service Ordering
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_5">
            <span class="md-nav__icon md-icon"></span>
            Service Ordering
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../service_ordering/ordering_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Ordering Services from catalogs
    <li class="md-nav__item md-nav__item--nested">
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
        
          
          <label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
            
  
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_6">
            <span class="md-nav__icon md-icon"></span>
      <a href="../../addons/intro/" class="md-nav__link">
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_2" >
        
          
          <label class="md-nav__link" for="__nav_6_2" id="__nav_6_2_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    CAMARA
    
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_2_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_6_2">
            <span class="md-nav__icon md-icon"></span>
            CAMARA
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
      <a href="../../addons/camara/intro/" class="md-nav__link">
    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" checked>
        
          
          <label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Design & Architecture
    
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="true">
          <label class="md-nav__title" for="__nav_7">
            <span class="md-nav__icon md-icon"></span>
            Design & Architecture
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../architecture/" class="md-nav__link">
        
  
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
    
  
  
  
    <li class="md-nav__item md-nav__item--active">
      
      <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
      
      
        
      
      
        <label class="md-nav__link md-nav__link--active" for="__toc">
          
  
  </span>
  

          <span class="md-nav__icon md-icon"></span>
        </label>
      
      <a href="./" class="md-nav__link md-nav__link--active">
        
  
  </span>
  

      </a>
      
        

<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#initial-state" class="md-nav__link">
    <span class="md-ellipsis">
      Initial state
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#order-scheduler" class="md-nav__link">
    <span class="md-ellipsis">
      Order scheduler
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#start-order-process" class="md-nav__link">
    <span class="md-ellipsis">
      Start order process
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#nfvodeploymentrequest-process" class="md-nav__link">
    <span class="md-ellipsis">
      NFVODeploymentRequest process
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#check-in-progress-orders-process" class="md-nav__link">
    <span class="md-ellipsis">
      Check In Progress orders process
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#external-service-provider-deployment-request-process" class="md-nav__link">
    <span class="md-ellipsis">
      External Service Provider Deployment Request process
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#fetch-partner-services-process" class="md-nav__link">
    <span class="md-ellipsis">
      Fetch Partner Services Process
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#local-service-orchestration-process" class="md-nav__link">
    <span class="md-ellipsis">
      Local Service Orchestration Process
    </span>
  </a>
  
</li>
      
    </ul>
  
</nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../cridge/" class="md-nav__link">
        
  
    <li class="md-nav__item">
      <a href="../oauth/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Authentication
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_7" >
          <label class="md-nav__link" for="__nav_7_7" id="__nav_7_7_label" tabindex="0">
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_7_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_7_7">
            <span class="md-nav__icon md-icon"></span>
            APIs
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../tmfapi/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Issue management
  <span class="md-ellipsis">
    Central logging
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
          <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_8">
            <span class="md-nav__icon md-icon"></span>
      <a href="../../contribute/developing/" class="md-nav__link">
      <a href="../../contribute/documenting/" class="md-nav__link">
  </span>
  

      </a>
    </li>
  

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              
              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      Table of contents
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#initial-state" class="md-nav__link">
    <span class="md-ellipsis">
      Initial state
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#order-scheduler" class="md-nav__link">
    <span class="md-ellipsis">
      Order scheduler
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#start-order-process" class="md-nav__link">
    <span class="md-ellipsis">
      Start order process
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#nfvodeploymentrequest-process" class="md-nav__link">
    <span class="md-ellipsis">
      NFVODeploymentRequest process
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#check-in-progress-orders-process" class="md-nav__link">
    <span class="md-ellipsis">
      Check In Progress orders process
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#external-service-provider-deployment-request-process" class="md-nav__link">
    <span class="md-ellipsis">
      External Service Provider Deployment Request process
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#fetch-partner-services-process" class="md-nav__link">
    <span class="md-ellipsis">
      Fetch Partner Services Process
    </span>
  </a>
  
</li>
      
        <li class="md-nav__item">
  <a href="#local-service-orchestration-process" class="md-nav__link">
    <span class="md-ellipsis">
      Local Service Orchestration Process
    </span>
  </a>
  
</li>
      
    </ul>
  
</nav>
                  </div>
                </div>
              </div>
            
          
          
            <div class="md-content" data-md-component="content">
              <article class="md-content__inner md-typeset">
                
                  


<h1 id="openslice-service-orchestration-and-order-management-osom">Openslice Service Orchestration and Order Management - OSOM</h1>
<p>OSOM is a service responsible for:</p>
<ul>
<li>Service Order Management (SOM)</li>
<li>Service Orchestration (SO)</li>
</ul>
<p>It uses open source Flowable Business process engine (https://www.flowable.org) .</p>
<p>A Service Order follows the states as defined in TMF641 specification: </p>
<p><a class="glightbox" href="../../images/service_order_states.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="Service Order state" src="../../images/service_order_states.png" /></a></p>
<h2 id="initial-state">Initial state</h2>
<p>When a new order is created, it goes into the Initial state. It is stored in the repository and triggers an Event.</p>
<p><a class="glightbox" href="../../images/service_order_initial_state.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="Initial state" src="../../images/service_order_initial_state.png" /></a></p>
<p>Administrators are notified usually from the Ticketing System of a new order. They login to Openslice and change the State of the order either to ACKNOWLEDGED or REJECTED. If ACKNOWLEDGED they can Propose a startDate, add Notes, and add any additional service items</p>
<h2 id="order-scheduler">Order scheduler</h2>
<p>A process checks every 1 minute for ACKNOWLEDGED orders.</p>
<p><a class="glightbox" href="../../images/order_scheduler_bpm.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="Order scheduler BPM" src="../../images/order_scheduler_bpm.png" /></a></p>
<p><a class="glightbox" href="../../images/order_scheduler_diagram.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="Order scheduler" src="../../images/order_scheduler_diagram.png" /></a></p>
<p>It retrieves all orders that are in ACKNOWLEDGED state and if the start date is in time it will initialize the process by settingn the order in IN_PROGRESS state. Finally the Start Order Process will start.</p>
<h2 id="start-order-process">Start order process</h2>
<p>This process for now is a draft simple prototype to make a simple orchestration via NFVO. Here the actual Services (TMF638/640 model) are created and attached to Service Order and Service Inventory.</p>
<p><a class="glightbox" href="../../images/start_order_process_bpm.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="Start Order BPM" src="../../images/start_order_process_bpm.png" /></a></p>
<p><a class="glightbox" href="../../images/start_order_process_diagram.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="Start Order interactions" src="../../images/start_order_process_diagram.png" /></a></p>
<p>We expect here to check which tasks can be orchestrated by NFVO and which by human. We create the equivalent Services(TMF638/640 model) for this order.</p>
<ol>
<li>During check it should decide to create Service(s) for this service order O1 and send it to ServiceInventory</li>
<li>The Services(TMF638 model) are assigned to the Order O1 In supportService List</li>
<li>Each OrderItem OI1 is related to one serviceSpecification</li>
<li>Each ServiceSpecification has also related serviceSpecRelationships</li>
<li>So if we receive an order O1 for a ServiceSpec A which relates to (a bundle of) 3 specs(2 CFS, 1 RFS) we do the following:<ol>
<li>Create a Service S_A(TMF638 model) for ServiceSpec A for Order O1</li>
<li>We create also 3 Services S_C1, S_C2 and S_R1 equivalent to the serviceSpecRelationships (2 CFS, 1 RFS) </li>
<li>At this point the order will have 1 Local Service Orchestration Process(S_A),  2 supportingServices  refs(S_C1, S_C2) and 1 supportingResource(S_R1)</li>
<li>The 3 supportingServices and 1 supportingResource correspond to total 4 Services in ServiceInventory</li>
<li>Service S_A will have: <ol>
<li>startMode 1: Automatically by the managed environment</li>
<li>State: RESERVED and the Lifecycle will be handled by OSOM</li>
</ol>
</li>
<li>Services S_C1 and S_C2 we decide that cannot be orchestrated then they have <ol>
<li>startMode: 3: Manually by the Provider of the Service</li>
<li>State: RESERVED and the Lifecycle will be handled by OSOM</li>
<li>If the CFS is a bundle spec it is further recursively orchestrated </li>
</ol>
</li>
<li>Service S_R1 will have <ol>
<li>startMode 1: Automatically by the managed environment.</li>
<li>State: RESERVED</li>
<li>IF The Service has the characteristic CharacteristicByName( "NSDID") it will be further processed by the NFVO </li>
</ol>
</li>
</ol>
</li>
</ol>
<p>There will be two instances of task "User Task Manual Complete Service" each for Services S_C1 and S_C2. The task is Transient for now. It displays only the services that are not automated! 
Here is a flow for future:</p>
<ol>
<li>We wait here for human decision.</li>
<li>From API we get a result:
    a. If set to ACTIVE/TERMINATED then we complete the task
    b. In any other state we stay in this task until it is resolved as in step a
    c. The Status of ORDER O1 is also updated to PARTIAL</li>
</ol>
<p>There will be an instance of  NFVODeploymentRequest process  each for Service S_R1. (see later)</p>
<ol>
<li>This process is related with the NFVO orchestration</li>
<li>It will send a msg to NFVO(s?) for a specific deployment request</li>
</ol>
<p>All services in "Order Complete" are in a status:</p>
<ol>
<li>Depending on the result the service S_A is either ACTIVE or INACTIVE or TERMINATED</li>
<li>The Status of ORDER O1 is also updated to COMPLETED  or PARTIAL (in case we have some services running) or FAILED (in cases we have errors)</li>
</ol>
<p>A Service follows the states as defined in TMF638 Service Inventory specification: </p>
<p><a class="glightbox" href="../../images/service_states.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="Service state" src="../../images/service_states.png" /></a></p>