Skip to main content

App Provisioning

Introduction

App provisioning provides several critical functionalities for usage of the Corva platform. Amongst these, provisioning gives clients the ability to restrict access to apps within their organization, as well as the ability to promote and sell their applications within the Corva app store.


What is Provisioning?

Provisioning provides three main functionalities within the Corva platform

  1. App provisioning: give any client the ability to manage internal subscriptions to apps. The client has the ability to allow or restrict access to applications at a company, program, or rig/frac fleet level.
  2. App purchases: give clients the ability to offer their application in the app store, as well as purchase applications from other clients. To offer any application within the app store, it must be approved through the provisioning app review process which will be described below.
  3. App dependencies: allow clients to have back-end applications added automatically to newly created streams.

Where is Provisioning Located?

App provisioning can be found at the top of Dev Center as its own tab, as may be seen in the image below.

image|690x395

This however is not a default option to all users and it must be requested. In order to request access to the Provisioning tab, please follow the steps on the next section.


Who Can Use Provisioning?

Provisioning is Available to all Corva users upon request. If you do not see the ‘Provisioning’ tab in Dev Center that means that you do not have corresponding access permission.


Request Permission to “Provisioning” Flow

Only Company Admin has access to manage permissions. For a Company Admin the following steps must be followed:

  1. Open your User Profile page
  2. Click “Manage Permissions” button [Must have Permissions management access]
  3. Open “Dev Center” tab
  4. Click “Add Permission” button
  5. Choose ‘Dev Center Component’ = ‘Provisioning’ & ‘Ability’ = ‘Access’
  6. Click “Add Permission” button on modal

image|690x395


How do I use Provisioning?

This section will describe how to use the main three functions of App provisioning.

In this section we describe how you may create internal permissions to applications through the provisioning process. To start the provisioning process you need to have access to “Provisioning” tab in the Dev Center.

NOTE : App Provisioning works on newly created wells and rerun wells only if the apps have been provisioned in the App Provisioning tool before the new well is created or a rerun occurs. If the app is not provisioned before a new well is created or a rerun occurs, then you will need to add the backend app manually to the asset's stream.

NOTE : When creating Program or rig level App Provisioning, they are exclusive. If a provisioning is created for a program and then another for a rig under that program, the rig will be removed from the program provisioning. The only provisioning that is inclusive is a company level provisioning.


Creating App Provisioning

  1. Go to the provisioning tab in Dev Center (step 1 in image)
  1. Open Provisioning section (it has the same name as your company) in the provisioning tab (step 2 in image)
  1. Click the “Create Provisioning” button (step 3 in image)

image|690x395

  1. Input provision name, choose a segment, choose assets and add those apps that should be available in the App Store. Notice, only those assets that you added to the provision will be available while adding App to dashboard.

  2. Save changes

image|690x395

After these steps, all apps that were added to the provision will be available in the App Store for other users of the same company. When a user adds an App, the user is able to choose only those assets that were set in provision.


Provisioning Use Cases

The following set of use cases provide examples of how provisioning can be used to segment application accessibility by company, program, and rig. These examples reflect the updated Subscriptions 2.0 hierarchy.


Pre-conditions

Assets:

  • 1 company
  • 2 programs/BU: Program A, Program B
  • 4 rigs: Rig A and Rig AA belong to Program A; Rig B and Rig BB belong to Program B

Apps:

  • 3 FE apps: FE App X, FE App Y, FE App Z
  • 3 BE apps: BE App XX, BE App YY, BE App ZZ → BE App XX is added as a dependency of FE App X; BE App YY is added as a dependency of FE App Y; BE App ZZ is added as a dependency of FE App Z

Comment

All use cases are provided for segment = drilling, log_type = time.

Additional materials (charts)

https://docs.google.com/drawings/d/1g7VsPx7O8UM68D_lUv6j3scjeP4sal5AiT5rUjf2C4s/edit

Use Case #1

Problem: The company wants FE App X and FE App Y to have access to all company rigs.

image|690x395

Solution:

  1. Create one company-level subscription that includes both FE apps [FE App X, FE App Y]

image|690x395

Subscription details:

  1. Segment = Drilling
  2. Asset Type = Company
  3. Apps = [FE App X, FE App Y]

Result:

  1. All company rigs will be available in the asset selector for both FE App X and FE App Y.
  2. BE App XX and BE App YY will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream.

Use Case #2

Problem: The company wants:

  1. FE App X has access to all company assets
  2. FE App Y has access to Rig A only

image|690x395

Solution:

  1. Create one company-level subscription for FE App X
  2. Create one rig-level subscription for FE App Y

image|690x395

Subscription details: Subscription #1

  1. Segment = Drilling
  2. Asset Type = Company
  3. Apps = [FE App X]

Subscription #2

  1. Segment = Drilling
  2. Asset Type = Rig
  3. Assets = Rig A
  4. Apps = [FE App Y]

Result:

  1. All company rigs will be available in the asset selector for FE App X only.
  2. For FE App Y, only Rig A will be available in the asset selector.
  3. BE App XX will be added to all existing company drilling time streams with well status ≠ complete and to every newly created drilling time stream.
  4. BE App YY will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig A only.

Use Case #3

Problem: The company wants:

  1. FE App X has access to all company assets
  2. FE App Y has access to all rigs from Program A

image|690x395

Solution:

  1. Create one company-level subscription for FE App X
  2. Create one program-level subscription for FE App Y

image|690x395

Subscription details: Subscription #1

  1. Segment = Drilling
  2. Asset Type = Company
  3. Apps = [FE App X]

Subscription #2

  1. Segment = Drilling
  2. Asset Type = Program
  3. Assets = Program A
  4. Apps = [FE App Y]

Result:

  1. All company rigs will be available in the asset selector for FE App X only.
  2. For FE App Y, only Rig A and Rig AA will be available in the asset selector.
  3. BE App XX will be added to all existing company drilling time streams with well status ≠ complete and to every newly created drilling time stream.
  4. BE App YY will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig A and Rig AA.

Use Case #4

Problem: The company wants:

  1. FE App X has access to all company assets
  2. FE App Y has access to all rigs from Program A
  3. FE App Z has access to Rig A only

image|690x395

Solution:

  1. Create one company-level subscription for FE App X
  2. Create one program-level subscription for FE App Y
  3. Create one rig-level subscription for FE App Z

image|690x395

Subscription details: Subscription #1

  1. Segment = Drilling
  2. Asset Type = Company
  3. Apps = [FE App X]

Subscription #2

  1. Segment = Drilling
  2. Asset Type = Program
  3. Assets = Program A
  4. Apps = [FE App Y]

Subscription #3

  1. Segment = Drilling
  2. Asset Type = Rig
  3. Assets = Rig A
  4. Apps = [FE App Z]

Result:

  1. All company rigs will be available in the asset selector for FE App X only.
  2. For FE App Y, only Rig A and Rig AA will be available in the asset selector.
  3. For FE App Z, only Rig A will be available in the asset selector.
  4. BE App XX will be added to all existing company drilling time streams with well status ≠ complete and to every newly created drilling time stream.
  5. BE App YY will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig A and Rig AA.
  6. BE App ZZ will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig A.

Use Case #5

Problem: The company wants:

  1. FE App X has access to all rigs from Program A
  2. FE App Y and FE App Z have access to all rigs from Program B

image|690x395

Solution:

  1. Create two program-level subscriptions: one for FE App X, another for FE App Y and FE App Z

image|690x395

Subscription details: Subscription #1

  1. Segment = Drilling
  2. Asset Type = Program
  3. Asset = Program A
  4. Apps = [FE App X]

Subscription #2

  1. Segment = Drilling
  2. Asset Type = Program
  3. Assets = Program B
  4. Apps = [FE App Y, FE App Z]

Result:

  1. For FE App X, only Rig A and Rig AA will be available in the asset selector.
  2. For FE App Y and FE App Z, only Rig B and Rig BB will be available in the asset selector.
  3. BE App XX will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig A and Rig AA.
  4. BE App YY and BE App ZZ will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig B and Rig BB.

Use Case #6

Problem: The company wants all apps to be available only for Rig A.

image|690x395

Solution:

  1. Create one rig-level subscription

image|690x395

Subscription details: Subscription #1

  1. Segment = Drilling
  2. Asset Type = Rig
  3. Assets = Rig A
  4. Apps = [FE App X, FE App Y, FE App Z]

Result:

  1. For FE App X, FE App Y, and FE App Z, only Rig A will be available in the asset selector.
  2. BE App XX, BE App YY, and BE App ZZ will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig A.

Use Case #7

Problem: The company wants:

  1. FE App X has access to Rig A
  2. FE App Y has access to Rig B

image|690x395

Solution:

  1. Create two rig-level subscriptions

image|690x395

Subscription details: Subscription #1

  1. Segment = Drilling
  2. Asset Type = Rig
  3. Assets = Rig A
  4. Apps = [FE App X]

Subscription #2

  1. Segment = Drilling
  2. Asset Type = Rig
  3. Assets = Rig B
  4. Apps = [FE App Y]

Result:

  1. For FE App X, only Rig A will be available in the asset selector.
  2. For FE App Y, only Rig B will be available in the asset selector.
  3. BE App XX will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig A.
  4. BE App YY will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig B.

Use Case #8

Problem: The company wants:

  1. FE App X has access to Rig A
  2. FE App Y has access to Rig AA

image|690x395

Solution:

  1. Create two rig-level subscriptions

image|690x395

Subscription details: Subscription #1

  1. Segment = Drilling
  2. Asset Type = Rig
  3. Assets = Rig A
  4. Apps = [FE App X]

Subscription #2

  1. Segment = Drilling
  2. Asset Type = Rig
  3. Assets = Rig AA
  4. Apps = [FE App Y]

Result:

  1. For FE App X, only Rig A will be available in the asset selector.
  2. For FE App Y, only Rig AA will be available in the asset selector.
  3. BE App XX will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig A.
  4. BE App YY will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig AA.

Use Case #9

Problem: The company wants:

  1. FE App X has access to Rig A
  2. FE App Y has access to Rig AA
  3. FE App Z has access to all company rigs

image|690x395

Solution:

  1. Create one company-level subscription
  2. Create two rig-level subscriptions

image|690x395

Subscription details: Subscription #1

  1. Segment = Drilling
  2. Asset Type = Company
  3. Apps = [FE App Z]

Subscription #2

  1. Segment = Drilling
  2. Asset Type = Rig
  3. Assets = Rig A
  4. Apps = [FE App X]

Subscription #3

  1. Segment = Drilling
  2. Asset Type = Rig
  3. Assets = Rig AA
  4. Apps = [FE App Y]

Result:

  1. All company rigs will be available in the asset selector for FE App Z only.
  2. For FE App X, only Rig A will be available in the asset selector.
  3. For FE App Y, only Rig AA will be available in the asset selector.
  4. BE App ZZ will be added to all existing company drilling time streams with well status ≠ complete and to every newly created drilling time stream.
  5. BE App XX will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig A.
  6. BE App YY will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig AA.

Use Case #10

Problem: The company wants:

  1. FE App Z has access to all rigs from Program A
  2. FE App X has access to Rig A
  3. FE App Y has access to Rig AA

image|690x395

Solution:

  1. Create one program-level subscription
  2. Create two rig-level subscriptions

image|690x395

Subscription details: Subscription #1

  1. Segment = Drilling
  2. Asset Type = Program
  3. Assets = Program A
  4. Apps = [FE App Z]

Subscription #2

  1. Segment = Drilling
  2. Asset Type = Rig
  3. Assets = Rig A
  4. Apps = [FE App X]

Subscription #3

  1. Segment = Drilling
  2. Asset Type = Rig
  3. Assets = Rig AA
  4. Apps = [FE App Y]

Result:

  1. All rigs from Program A (Rig A and Rig AA) will be available in the asset selector for FE App Z only.
  2. For FE App X, only Rig A will be available in the asset selector.
  3. For FE App Y, only Rig AA will be available in the asset selector.
  4. BE App ZZ will be added to all existing Program A drilling time streams with well status ≠ complete and to every newly created drilling time stream.
  5. BE App XX will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig A.
  6. BE App YY will be added to all existing drilling time streams with well status ≠ complete and to every newly created drilling time stream related to Rig AA.

What is the App Availability with or without Permissions?

App VisibilityRoleProvisioning ExistsAble to Add App to Dashboard
PrivateDeveloper Admin at the same company (not app owner)NoNo
DeveloperDeveloper Admin at the same company (not app owner)NoYes
CompanyDeveloper Admin at the same company (not app owner)NoNo
PublicDeveloper Admin at the same company (not app owner)NoYes
PrivateAdmin at the same companyNoNo
DeveloperAdmin at the same companyNoNo
CompanyAdmin at the same companyNoNo
PublicAdmin at the same companyNoYes
PrivateUser at the same companyNoNo
DeveloperUser at the same companyNoNo
CompanyUser at the same companyNoNo
PublicUser at the same companyNoYes
PrivateRestricted user at the same companyNoNo
DeveloperRestricted user at the same companyNoNo
CompanyRestricted user at the same companyNoNo
PublicRestricted user at the same companyNoYes
PrivateApp ownerYesNo
DeveloperApp ownerYesYes
CompanyApp ownerYesYes
PublicApp ownerYesYes
PrivateDeveloper Admin at the same company (not app owner)YesNo
DeveloperDeveloper Admin at the same company (not app owner)YesYes
CompanyDeveloper Admin at the same company (not app owner)YesYes
PublicDeveloper Admin at the same company (not app owner)YesYes
PrivateAdmin at the same companyYesNo
DeveloperAdmin at the same companyYesNo
CompanyAdmin at the same companyYesYes
PublicAdmin at the same companyYesYes
PrivateUser at the same companyYesNo
DeveloperUser at the same companyYesNo
CompanyUser at the same companyYesYes
PublicUser at the same companyYesYes
PrivateRestricted User at the same companyYesNo
DeveloperRestricted User at the same companyYesNo
CompanyRestricted User at the same companyYesYes
PublicRestricted User at the same companyYesYes

App Purchases

This section describes how to place an app in the App Store and make it available for purchase by other third parties, as well as how to purchase a third company app and add it to a dashboard.


Request to Place an App in the App Store

Before the app becomes available in the App Store, at least one of its versions should be successfully validated and approved.

A Developer Admin needs to do the following:

  1. Open App page in Dev Center on “Version” tab
  2. Upload the app package and publish it.
  3. Send app package to Corva for Review

image|690x395

  1. Wait until the review request is processed. Once approved, you will see Review Status = Approved. Package approval automatically sets App visibility = Public. Once Visibility = Public, the app is available in the App Store. Admins from other companies are able to request it.
  2. Once app is reviewed you will receive a Status updated in the Provisioning -> Reviews page and a notification.

image|690x395

Recommendation : Before sending an app for review, please double check that it works smoothly and all needed info is added to the “App Info” page. User must consider the following two scenarios:

NOTE : If the app visibility is changed from public to any other visibility, the app will disappear from App Store. The app will stil be presented on dashboards where it had been added before.

NOTE : If you did not pass review and package review status becomes “Rejected”, that means that your app does not meet requirements to become available on the App Store. Make the suggested updates, then upload the new package and send it to review again.


Request to Purchase an App from the App Store?

Before any company user is able to add an app to a dashboard, it needs to be requested by Company admin

  1. Company Admin goes to App store to request an App of interest

image|690x395

  1. Company admin is able to request additional apps from the same developer and the same segment along with initial app

image|690x395

  1. Connect assets that will be available for requested apps

image|690x395

  1. Confirm that you grant the App and App Developers access to datasets (without this step you are not able to proceed with purchase)

image|690x395

  1. After this, you need to wait while the app owner approves the request. During this time you will see “Waiting for approval” on app’s card

image|690x395

  1. Once it approved, users are able to add the app to their dashboards

image|690x395


Request to Upgrade Purchased App

  1. Find the App in the App Store that was previously purchased

  2. Click “Upgrade” button

image|690x395

  1. Set updated list of assets, mark checkbox and press “Send” button

image|690x395

  1. While you are waiting for update request approve, you are able to add app with initial list of assets

image|690x395

  1. After the upgrade request is approved, there will be an upgraded list of assets available

image|690x395


App Dependencies

Upon having an application provisioned for an asset, rig (or Completions asset type), program or company, any backend application will be automatically added to a new streams created. Since provisioning is created for front end applications, dependencies to backend applications create the appropriate link.

This section describes how to set backend application dependencies such that they are automatically added to streams if they are provisioned as described in the previous section, “Creating App Provisioning”.

Dependencies can only be created between backend and frontend apps. If a backend app does not have a frontend app, then a dummy frontend app must be created as a shell to attach the proper dependencies. The following two sections describe how to add dependencies, as well as how to create a dummy frontend app to host the dependent backen app.


Backend Dependencies to a Frontend App

In the example below, we show how the backend app Wireline Wits Summary, is added as a dependency to the fronent app Wireline Traces.

  1. Go to frontend App in the App Store that you wish to add dependencies to

image|690x395

  1. Select Dependencies from navigation bar on the left

image|690x395

  1. Select the backend application from the dropdown menu

image|690x395

  1. The backend application will be displayed with a chip below

image|690x395

  1. Once the backend application is added as a dependency, it will be visible in the Provisioning screen as “Related Backend App”. The image below displays how the frontend application, provisiontestone, was provisioned for asset Rishi_Michael_FF, with the backend app Apptime2 as a dependent.

image|690x395


Backend Dependencies without a Frontend App

In the case where a backend app does not have a frontend app, but is still required to be deployed automatically to new streams, a dummy frontend app must be created as a shell with at least one package, even if it is empty. The following process must be used.

  1. As developeradmin of the same company of the backend application that needs provisioning, go to the App Store
  2. Create New App on the top right

image|690x395

  1. Select Frontend App

image|690x395

  1. Select appropriate segment and same category as the backend app to be provisioned

image|690x395

  1. Select desired CLI instructions

image|690x395

  1. Go to your desired CLI editor and follow instruction on step 5. If npm is not up to date execute: npm i -g @corva/create-app yarn

  2. Pick javascript or typescript and copy command from step 5 to execute in CLI. Enter the directory for the app and execute: yarn zip . This will create a zip package.

image|690x395

  1. Go back to Corva App Creation wizard and select "ADD NEW APP" (complete step 5). You will be re-directed to App Info page in Dev Center.

  2. Select Versions from left hand column.

image|690x395

  1. Press UPLOAD NEW VERSION option on top right and select the zip created in step 6. Otherwise drag and driop the zip file into into the drag and drop window.

image|690x395

  1. Make sure visibility of the app is the same as backend app

image|690x395

  1. Add Dependency following steps from “Backend Dependencies to a Frontend App” section above
  2. Add Provision for fronted app following steps in section “Creating App Provisioning” above