{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Table of Contents","description":"Accelerate E&P application development and protect your innovation by consuming our Data and Domain APIs / Platform APIs.","lang":"en-US","meta":[{"name":"robots","content":"noindex"}],"llmstxt":{"hide":true,"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"table-of-contents","__idx":0},"children":["Table of Contents ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"TOC"},"children":[]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#ingestion-workflow-using-wellbore-dag"},"children":["Ingestion Workflow using wellbore ingestion DAG"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#ingestion-workflow-using-wellbore-dag"},"children":["Introduction"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#ingestion-framework"},"children":["Ingestion Framework"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#components"},"children":["Components"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#access-controls"},"children":["Access Controls"]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#how-to-execute-the-wellbore-workflow"},"children":["How to execute the wellbore ingestion workflow"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#1-get-signed-url-using-file-service"},"children":["1. Get Signed URL using File Service"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#2-upload-file-using-signed-url"},"children":["2. Upload file using signed URL"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#3-create-file-metadata-record-using-file-service"},"children":["3. Create File Metadata record using File Service"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#4-run-ingestion-workflow"},"children":["4. Run ingestion Workflow"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#5-monitor-workflow-status"},"children":["5. Monitor Workflow Status"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#6-validate-ingested-data"},"children":["6. Validate Ingested Data"]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#file-metadata-record"},"children":["File Metadata record"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#welllog-ingestion"},"children":["WellLog Ingestion"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#created-welllog-records"},"children":["Created WellLog records"]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#trajectory-ingestion"},"children":["Trajectory Ingestion"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#created-trajectory-records"},"children":["Created Wellbore Trajectory records"]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#pre-registered-dags"},"children":["Pre-registered DAG"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#limitations"},"children":["Limitations"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#KnownIssues"},"children":["Known Issues"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"introduction","__idx":1},"children":["Introduction ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"ingestion-workflow-using-wellbore-dag"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This document guides users who want to leverage the Wellbore Ingestion Directed Acyclic Graph (DAG) and have their data ingested from LAS, DLIS or LIS files. It covers the existing DAG capability, describes how to push the input LAS, DLIS or LIS files for ingestion, defines a way to trigger the DAG, how to monitor the status of ingestion and list created records."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"ingestion-framework","__idx":2},"children":["Ingestion Framework ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"ingestion-framework"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Managed Planning Data Foundation R3 ingestion framework is built to ingest various types of data files like CSV/LAS/DLIS/LIS etc. with Apache Airflow, an open-source platform to Author, Schedule and Monitor workflows. Workflows in Airflow are collections of tasks that have directional dependencies. Specifically, Airflow uses a DAG to represent a workflow. At a high level, a DAG can be thought of as a container that holds tasks and their dependencies, and sets the context for when and how those tasks should be executed."," ","There are various components in the framework which enable uploading a file, creating the required schemas for ingestion or invoking the ingestors. Each is explained in detail in sections that follow."," ","The ingestion framework comes with some pre-registered DAGs. These are available out of the box and can be used by end users to execute specific workflows. Some of these pre-registered DAGs are for CSV, LAS and Document ingestion workflows."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"components","__idx":3},"children":["Components ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"components"},"children":[]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["File Service"]}," – Facilitates management of files on data platform. Uploading, secure discovery and downloading of files are capabilities provided by File Service. ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/solutions/core-service/apis/osdu-file-service"},"children":["API Reference"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Storage Service"]}," – JSON object store that facilitates storage of metadata information for domain entities. Also raises storage events when records are saved using Storage Service. ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/solutions/core-service/apis/osdu-storage-service"},"children":["API Reference"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Wellbore DMS"]}," – Stores curves bulk data for WellLogs. Also provides many features for Wellbore related data like Family recognition."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Notification Service"]}," – Subscriber to storage event. Consumer interested in storage events can leverage Notification Service. Consumer should use the Register Service to register the subscription."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Workflow Service"]}," – Facilitates management of workflows on data platform. Wrapper over the workflow engine and abstracts lot of technical nuances of the workflow engine from consumers. ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/solutions/core-service/apis/osdu-workflow-service"},"children":["API Reference"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Airflow engine"]}," – Heart of the ingestion framework. Actual Workflow orchestrator."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["DAGs"]}," – Based on Direct Acyclic Graph concept, represent workflows that are authored, orchestrated, managed and monitored by the workflow engine."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/csv-components.51727171112f63549708ed4597d74d426510e5237c71b7a329c9af1af8e86a5b.a0dccf2e.png","alt":"API Security - High level"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"access-controls","__idx":4},"children":["Access Controls ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"access-controls"},"children":[]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Access Required:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"#"},"children":["#"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Service level group"},"children":["Service level group"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Service API Operations"},"children":["Service API Operations"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["service.workflow.viewer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["List Custom Operators"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["service.workflow.creator"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Register DAG"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["3"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["service.workflow.admin"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Register Custom Operator, Trigger Workflow, Data sharing between two tasks in ONE workflow (SAS URL)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["4"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["service.file.viewers & service.file.editors"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To upload and download file and create File meta Data"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["5"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["service.legal.editor & service.legal.user"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create and Retrieve Legal Tags"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["6"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["service.schema-service.editors, service.schema-service.viewers & service.schema-service.admin"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To create, update and view the schema"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["7"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["service.storage.admin, service.storage.creator & service.storage.viewer"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To create, update and view records in storage"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["8"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["service.search.user & service.search.admin"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["To search records"]}]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-to-execute-the-ingestion-workflow","__idx":5},"children":["How to execute the ingestion workflow ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"how-to-execute-the-ingestion-workflow"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/csv-ingestion.af29b99d70e9364774870e483ac26e140620672b43f90d8d7e38c22bbc1cb5ea.a0dccf2e.jpeg","alt":"Generic Steps to Execute a DAG using Ingestion Workflow Service"},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"1-get-signed-url-using-file-service","__idx":6},"children":["1. Get Signed URL using File Service ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"1-get-signed-url-using-file-service"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A signed URL is required in order to be able to upload the LAS, DLIS or LIS file to cloud storage."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.delfi.slb.com/workspace/solutions/Subsurface/DataFlowServices/apis/OSDU-File-Service"},"children":["API Reference"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["GET Request: /file/v2/files/uploadURL"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Response:"]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Sample Response  "]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"    {\n        \"FileID\": \"0bc2ad23cecb4275916089280da336ca\",\n        \"Location\": {\n            \"SignedURL\": \"https://osdur3mvpdp1qadizpdata.blob.core.windows.net/file-staging-area/osdu-user%2F1611218353490-2021-01-21-08-39-13-490%2F0bc2ad23cecb4275916089280da336ca?sv=2019-12-12&se=2021-01-28T08%3A39%3A14Z&sr=b&sp=cw&sig=y3%2FVHfeCyotI5bJU9446vHnpbIIchtrsB40szoj0QMM%3D\",\n            \"FileSource\": \"/osdu-user/1611218353490-2021-01-21-08-39-13-490/0bc2ad23cecb4275916089280da336ca\"\n        }\n    }\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["We will refer to this response in next steps. The ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["SignedURL"]}," attribute will be used to upload the file in next step (2) and the ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["FileSource"]}," will be used in step 4 in order to run workflow."]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"2-upload-file-using-signed-url","__idx":7},"children":["2. Upload file using signed URL ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"2-upload-file-using-signed-url"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Upload the file using the signed URL obtained from previous step. Use a PUT request passing the input file. The file gets uploaded to cloud storage."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["PUT Request: Use the ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["SignedURL"]}," value from previous step"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["HTTP Headers:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["'x-ms-blob-type: BlockBlob'"]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Execute the PUT request by adding the file as a binary request."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"3-create-file-metadata-record-using-file-service","__idx":8},"children":["3. Create File Metadata record using File Service ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"3-create-file-metadata-record-using-file-service"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use File Service to create metadata. The metadata enables discovery of file and secure downloads. It also provides a mechanism to query information associated with the file that is needed during its processing. Refer to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#file-metadata-record"},"children":["File Metadata Record Reference"]}," below for more details."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["API Reference"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.delfi.slb.com/workspace/solutions/Subsurface/DataFlowServices/apis/OSDU-File-Service"},"children":["File Service API"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["POST Request: /file/v2/files/metadata",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Payload:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Set the metadata ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.Filesource"]}," parameter to be the ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["FileSource"]}," value obtained from step 1."]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Sample File Generic ingestion request"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"    {\n        \"kind\": \"<authority>:wks:dataset--File.Generic:1.0.0\",\n        \"data\": {\n            \"DatasetProperties\": {\n                \"FileSourceInfo\": {\n                    \"FileSource\": \"/osdu-user/1642503396962-2022-01-18-10-56-36-962/9c8494f978da4a289c8b959f97dedc1d\",\n                    \"Name\": \"example.las\"\n                }\n            },\n            \"Endian\": \"LITTLE\",\n            \"ExtensionProperties\": {\n                \"FileContentsDetails\": {\n                    \"Authority\": \"osdu\",\n                    \"FileType\": \"las\"\n                }\n            },\n            \"Name\": \"example.las\"        \n        },\n        \"acl\": {\n            \"viewers\": [\n                \"data.default.viewers@<domain>.com\"\n            ],\n            \"owners\": [\n                \"data.default.viewers@<domain>.com\"\n            ]\n        },\n        \"legal\": {\n            \"legaltags\": [\n                \"<valid legal tag>\"\n            ],\n            \"otherRelevantDataCountries\": [\n                \"US\"\n            ],\n            \"status\": \"compliant\"\n        }\n    }\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Sample Response  "]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n\"id\": \"<authority>:file:4cedbed0-837b-4797-9683-f088a7a15014\"\n}            \n","lang":"json"},"children":[]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"4-run-ingestion-workflow","__idx":9},"children":["4. Run ingestion Workflow  ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"4-run-ingestion-workflow"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is an explicit way to trigger the execution of an ingestion workflow using the Workflow Service ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["workflowRun"]}," endpoint."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["API Reference: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.delfi.slb.com/workspace/solutions/Subsurface/DataFlowServices/apis/OSDU-Workflow-Service"},"children":["Workflow Service"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["POST Request: /workflow/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<workflow_name>"]},"/workflowRun"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["wellbore_ingestion_wf"]}," is the default wellbore ingestion ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["workflow_name"]}," defined by the ingestion framework. See all standard wellbore ingestion workflow names ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#pre-registered-dags"},"children":["here"]},". Create custom workflows using the Workflow service."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["HTTP Headers:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["'Correlation-ID': <valid correlation id>'"]},": correlation ID optional header can be set as a UUID generated by the user. This correlation ID can be used at a later stage to monitor ingestion and list created records. Another option is to get Correlation-ID header added automatically in the response."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Payload:"]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Sample Request Payload "]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"executionContext\": {\n    \"id\": \"<file metadata id obtained in step 3 >\",\n    \"dataPartitionId\": \"<dataPartition>\"\n  },\n  \"runId\": \"Optional. Run ID can be set explicitly by the user. If not set, the system will generate a run ID for the workflow run.\"\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Sample Response Payload "]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"workflowId\": \"wellbore_ingestion_wf\",\n    \"runId\": \"06f9c92f-e302-4987-9c69-a62abcc7e0cd\",\n    \"startTimeStamp\": 1617191215379,\n    \"status\": \"submitted\",\n    \"submittedBy\": \"<user>@<domain>.com\"\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Error Codes "]},{"$$mdtype":"Tag","name":"pre","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\n  | Code | Message                                       |\n  | ---- | --------------------------------------------- |\n  | 400  | Bad Request. Partition ID is missing/invalid. |\n  | 401  | Unknown or Invalid user.                      |\n  | 403  | User forbidden from accessing this API.       |\n  | 404  | Not Found. Workflow Doesn't exist.            |\n  "]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"5-monitor-workflow-status","__idx":10},"children":["5. Monitor Workflow Status ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"5-monitor-workflow-status"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We can monitor the execution status of the workflow using the monitor Workflow Status API. The workflow run may have these possible status codes:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Code"},"children":["Code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Message"},"children":["Message"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["submitted"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Workflow trigger accepted by platform, but actual workflow run has not started."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["running"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Workflow in progress or under execution."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["failed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Workflow execution completed with failures."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["success"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Workflow execution completed successfully."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After the execution of a workflow run has started, monitor the execution status of the workflow run using the Workflow Service. From step 4, use the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["workflow_name"]}," and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["runId"]}," from the response."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["API Reference: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.delfi.slb.com/workspace/solutions/Subsurface/DataFlowServices/apis/OSDU-Workflow-Service"},"children":["Workflow Service"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["GET Request: /workflow/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<workflow_name>"]},"/workflowRun/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<runId>"]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Sample Response Payload "]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"workflowId\": \"wellbore_ingestion_wf\",\n    \"runId\": \"06f9c92f-e302-4987-9c69-a62abcc7e0cd\",\n    \"startTimeStamp\": 1614579997265,\n    \"endTimeStamp\": 1614607532205,\n    \"status\": \"success\",\n    \"submittedBy\": \"<user>@<domain>.com\",\n}\n","lang":"json"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"6-validate-ingested-data","__idx":11},"children":["6. Validate Ingested Data ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"6-validate-ingested-data"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The user can find the ingested records using Status Processor Service POST ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/v1/status/query"]}," endpoint. The user can find the correlation Id in the Response header of the triggered workflow run (see part 4). The correlationId is a mandatory parameter using which the user can find the details of the ingested records."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.delfi.slb.com/workspace/solutions/Subsurface/DataFlowServices/apis/OSDU-Status-Processor-Service"},"children":["API Reference"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["POST Request: /v1/status/query"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Payload:"]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Sample Request Payload "]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"statusQuery\": {\n        \"correlationId\": \"50ca4a66-ba9c-4e45-ad66-be193dac8441\",\n        \"stage\": [\n           \"INGESTOR\"\n        ],    \n        \"limit\": 100,\n        \"offset\": 0\n    }\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Sample Response Payload "]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"results\": [\n        {\n        \"correlationId\": \"50ca4a66-ba9c-4e45-ad66-be193dac8441\",\n        \"recordId\": \"fc4279dc-8e65-4c82-bff8-cf7a677a69c8\",\n        \"recordIdVersion\": \"1\",\n        \"stage\": \"INGESTOR\",\n        \"status\": \"SUBMITTED\",\n        \"message\": \"Workflow run submitted. \",\n        \"errorCode\": 0,\n        \"userEmail\": \"user@slb.com\",\n        \"timestamp\": 1629375242377\n        },\n        {\n        \"correlationId\": \"50ca4a66-ba9c-4e45-ad66-be193dac8441\",\n        \"recordId\": \"fc4279dc-8e65-4c82-bff8-cf7a677a69c8\",\n        \"recordIdVersion\": \"1\",\n        \"stage\": \"INGESTOR\",\n        \"status\": \"IN_PROGRESS\",\n        \"message\": \"Workflow execution started\",\n        \"errorCode\": 0,\n        \"timestamp\": 1629375258\n        },\n        {\n        \"correlationId\": \"50ca4a66-ba9c-4e45-ad66-be193dac8441\",\n        \"recordId\": \"fc4279dc-8e65-4c82-bff8-cf7a677a69c8\",\n        \"recordIdVersion\": \"1\",\n        \"stage\": \"INGESTOR\",\n        \"status\": \"SUCCESS\",\n        \"message\": \"Workflow execution successful\",\n        \"errorCode\": 0,\n        \"timestamp\": 1629375386\n        }\n    ],\n    \"count\": 3,\n    \"totalCount\": 3,\n    \"limit\": 100,\n    \"offset\": 0\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Status of records:"]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Status of records for Payload "]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"\n    {\n    \"statusQuery\": {\n        \"correlationId\": \"50ca4a66-ba9c-4e45-ad66-be193dac8441\",\n        \"stage\": [\n        \"INGESTOR_SYNC\"\n        ]\n    },\n    \"limit\": 100,\n    \"offset\": 0\n    }\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Status of records for WellLog Ingestion Response "]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"    {\n    \"results\": [\n        {\n        \"correlationId\": \"50ca4a66-ba9c-4e45-ad66-be193dac8441\",\n        \"recordId\": \"opendes:master-data--Well:d97d4fec301d48e7bdc37763cb7ebc54\",\n        \"stage\": \"INGESTOR_SYNC\",\n        \"status\": \"SUCCESS\",\n        \"errorCode\": 0,\n        \"timestamp\": 1629375336035\n        },\n        {\n        \"correlationId\": \"50ca4a66-ba9c-4e45-ad66-be193dac8441\",\n        \"recordId\": \"opendes:master-data--Wellbore:b2641a34b46e47b38ffb8e5db34c2392\",\n        \"stage\": \"INGESTOR_SYNC\",\n        \"status\": \"SUCCESS\",\n        \"errorCode\": 0,\n        \"timestamp\": 1629375336035\n        },\n        {\n        \"correlationId\": \"50ca4a66-ba9c-4e45-ad66-be193dac8441\",\n        \"recordId\": \"opendes:work-product-component--WellLog:3dd82790207d491aac5505cf029797db\",\n        \"stage\": \"INGESTOR_SYNC\",\n        \"status\": \"SUCCESS\",\n        \"errorCode\": 0,\n        \"timestamp\": 1629375336035\n        }\n    ]\n    \"count\": 100,\n    \"totalCount\": 286,\n    \"limit\": 100,\n    \"offset\": 0\n    }\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Status of records for Wellbore Trajectory Ingestion Response "]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"    {\n    \"results\": [                          \n        {\n        \"correlationId\": \"50ca4a66-ba9c-4e45-ad66-be193dac8441\",\n        \"recordId\": \"opendes:work-product-component--WellboreTrajectory:3dd82790207d491aac5505cf029797db\",\n        \"stage\": \"INGESTOR_SYNC\",\n        \"status\": \"SUCCESS\",\n        \"errorCode\": 0,\n        \"timestamp\": 1629375336035\n        }\n    ]\n    \"count\": 100,\n    \"totalCount\": 286,\n    \"limit\": 100,\n    \"offset\": 0\n    }\n","lang":"json"},"children":[]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Validate ingested data using the Wellbore DMS Service."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Check Wellbore record:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.delfi.slb.com/workspace/solutions/Subsurface/WellboreDMS/apis/WDMS-OSDU-DA-v3"},"children":["API Reference"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["/wellbores/{record_id}"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["GET Request: /wellbores/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<record_id>"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Parameter ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["record_id"]}," is the id of the ingested wellbore record received, for example in the status monitoring request above ."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The response shows the ingested data."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Check WellLog record:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.delfi.slb.com/workspace/solutions/Subsurface/WellboreDMS/apis/WDMS-OSDU-DA-v3"},"children":["API Reference"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["/welllogs/{record_id}"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["GET Request: /welllogs/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<record_id>"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Parameter ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["record_id"]}," is the id of the ingested welllog record received, for example in the status monitoring request above ."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The response shows the ingested data."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Check WellboreTrajectory record:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.delfi.slb.com/workspace/solutions/Subsurface/WellboreDMS/apis/WDMS-OSDU-DA-v3"},"children":["API Reference"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["/wellboretrajectories/{record_id}"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["GET Request: /wellboretrajectories/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<record_id>"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Parameter ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["record_id"]}," is the id of the ingested wellbore trajectory record received, for example in the status monitoring request above ."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The response shows the ingested data."]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"file-metadata-record","__idx":12},"children":["File Metadata record ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"file-metadata-record"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The file Metadata is used to provide the ACL, Legal Tags, file source of the ingested data and optional attributes like custom CRS or reusing an existing Wellbore."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sample Metadata:"]},{"$$mdtype":"Tag","name":"details","attributes":{},"children":[{"$$mdtype":"Tag","name":"summary","attributes":{},"children":[" Sample File record metadata"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"acl\": {\n        \"viewers\": [\n        \"data.default.viewers@<domain>.com\"\n        ],\n        \"owners\": [\n        \"data.default.viewers@<domain>.com\"\n        ]\n    },\n    \"legal\": {\n        \"legaltags\": [\n        \"<valid legal tag>\"\n        ],\n        \"otherRelevantDataCountries\": [\n        \"US\"\n        ],\n        \"status\": \"compliant\"\n    },\n    \"kind\": \"<authority>:wks:dataset--File.Generic:1.0.0\",\n    \"data\": {\n        \"DatasetProperties\": {\n            \"FileSourceInfo\": {\n                \"FileSource\": \"/osdu-user/1642523046165-2022-01-18-16-24-06-165/180f41d44aa343779f6cc1cff03f2ab8\",\n                \"Name\": \"926408_100000295090_1.dlis\"\n            }\n        },\n        \"ExistenceKind\": \"<data_partition_id>:reference-data--ExistenceKind:Prototype:\", \n        \"ResourceSecurityClassification\": \"<data_partition_id>:reference-data--ResourceSecurityClassification:RESTRICTED:\",\n        \"Endian\": \"LITTLE\",\n        \"ExtensionProperties\": {\n            \"FileContentsDetails\": {\n                \"Authority\": \"osdu\",\n                \"FileType\": \"dlis\",\n                \"FrameOfReference\": [\n                    {\n                        \"kind\": \"CRS\",\n                        \"name\": \"MAGNA_Colombia_Bogota\",\n                        \"persistableReference\": \"{\\\"lateBoundCRS\\\":{\\\"wkt\\\":\\\"PROJCS[\\\\\\\"MAGNA_Colombia_Bogota\\\\\\\",GEOGCS[\\\\\\\"GCS_MAGNA\\\\\\\",DATUM[\\\\\\\"D_MAGNA\\\\\\\",SPHEROID[\\\\\\\"GRS_1980\\\\\\\",6378137.0,298.257222101]],PRIMEM[\\\\\\\"Greenwich\\\\\\\",0.0],UNIT[\\\\\\\"Degree\\\\\\\",0.0174532925199433]],PROJECTION[\\\\\\\"Transverse_Mercator\\\\\\\"],PARAMETER[\\\\\\\"False_Easting\\\\\\\",1000000.0],PARAMETER[\\\\\\\"False_Northing\\\\\\\",1000000.0],PARAMETER[\\\\\\\"Central_Meridian\\\\\\\",-74.0775079166667],PARAMETER[\\\\\\\"Scale_Factor\\\\\\\",1.0],PARAMETER[\\\\\\\"Latitude_Of_Origin\\\\\\\",4.59620041666667],UNIT[\\\\\\\"Meter\\\\\\\",1.0],AUTHORITY[\\\\\\\"EPSG\\\\\\\",3116]]\\\",\\\"ver\\\":\\\"PE_10_3_1\\\",\\\"name\\\":\\\"MAGNA_Colombia_Bogota\\\",\\\"authCode\\\":{\\\"auth\\\":\\\"EPSG\\\",\\\"code\\\":\\\"3116\\\"},\\\"type\\\":\\\"LBC\\\"},\\\"singleCT\\\":{\\\"wkt\\\":\\\"GEOGTRAN[\\\\\\\"MAGNA_To_WGS_1984_1\\\\\\\",GEOGCS[\\\\\\\"GCS_MAGNA\\\\\\\",DATUM[\\\\\\\"D_MAGNA\\\\\\\",SPHEROID[\\\\\\\"GRS_1980\\\\\\\",6378137.0,298.257222101]],PRIMEM[\\\\\\\"Greenwich\\\\\\\",0.0],UNIT[\\\\\\\"Degree\\\\\\\",0.0174532925199433]],GEOGCS[\\\\\\\"GCS_WGS_1984\\\\\\\",DATUM[\\\\\\\"D_WGS_1984\\\\\\\",SPHEROID[\\\\\\\"WGS_1984\\\\\\\",6378137.0,298.257223563]],PRIMEM[\\\\\\\"Greenwich\\\\\\\",0.0],UNIT[\\\\\\\"Degree\\\\\\\",0.0174532925199433]],METHOD[\\\\\\\"Geocentric_Translation\\\\\\\"],PARAMETER[\\\\\\\"X_Axis_Translation\\\\\\\",0.0],PARAMETER[\\\\\\\"Y_Axis_Translation\\\\\\\",0.0],PARAMETER[\\\\\\\"Z_Axis_Translation\\\\\\\",0.0],AUTHORITY[\\\\\\\"EPSG\\\\\\\",15738]]\\\",\\\"ver\\\":\\\"PE_10_3_1\\\",\\\"name\\\":\\\"MAGNA_To_WGS_1984_1\\\",\\\"authCode\\\":{\\\"auth\\\":\\\"EPSG\\\",\\\"code\\\":\\\"15738\\\"},\\\"type\\\":\\\"ST\\\"},\\\"ver\\\":\\\"PE_10_3_1\\\",\\\"name\\\":\\\"MAGNA-SIRGAS * EPSG / Colombia Bogota zone [3116,15738]\\\",\\\"authCode\\\":{\\\"auth\\\":\\\"SLB\\\",\\\"code\\\":\\\"3116001\\\"},\\\"type\\\":\\\"EBC\\\"}\"\n                    }\n                ],\n                \"CoordinateReferenceSystemID\": \"<data_partition_id>:reference-data--CoordinateReferenceSystem:8cfcd4e5-9fda-5a85-93cd-4562b92e6172\",\n                \"WellboreID\": \"<data_partition_id>:master-data--Wellbore:ee8d18d487ee449c9d81d0e547bae31d\",\n                \"WellLogTypeID\": \"<data_partition_id>:reference-data--LogType:Raw:\"\n            }\n        },\n        \"Name\": \"926408_100000295090_1.dlis\"\n    }\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["ACL:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Specifies the Access Control list"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/solutions/compliance-service/apis/osdu-entitlements-service-v2"},"children":["API Reference"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"      \"acl\": {\n          \"viewers\": [\n              \"data.default.viewers@<domain>.com\"\n          ],\n          \"owners\": [\n              \"data.default.viewers@<domain>.com\"\n          ]\n      }\n","lang":"json"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Legal Tags:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Specifies the legal tags. This holds the details of the data compliance for the data ingested"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/solutions/compliance-service/apis/osdu-compliance-service"},"children":["API Reference"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"  \"legal\": {\n      \"legaltags\": [\n          \"opendes-public-usa-dataset-7643990\"\n      ],\n      \"otherRelevantDataCountries\": [\n          \"US\"\n      ],\n      \"status\": \"compliant\"\n  }\n\n","lang":"json"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["File source:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["This is the relative file path of the LAS, DLIS, LIS, CSV, XLS, XLSX file uploaded in the file-staging-area."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["This values is the ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["relative file path"]}," that you have received from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Get Signed Url"]}," response (",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#1-get-signed-url-using-file-service"},"children":["mentioned above in Step 1"]},")"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["File type:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is the type of file: either las, dlis, lis, csv xlsx or xls."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"  \"data\": {\n      \"ExtensionProperties\": {\n          \"FileContentsDetails\": {\n              \"FileType\": \"las\"\n          }\n      }\n  }\n\n","lang":"json"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Authority:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This attribute indicates that ingestion should use OSDU schemas. It is there for backward compatibility reasons and should always be osdu."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":" \"data\": {\n     \"ExtensionProperties\": {\n         \"FileContentsDetails\": {\n             \"Authority\": \"osdu\"\n         }\n     }\n }\n\n","lang":"json"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Parent Wellbore for WellLog:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An existing wellbore can be provided (optional) that will be used as parent of WellLog records that will be created. The"," ","passed record needs to be a valid master-data--Wellbore. In that case, ingestion will not create any wellbore and"," ","all wellbore properties in the ingested file will not be stored anywhere (this behavior will change at a later"," ","stage)."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Parent Wellbore for Wellbore Trajectory:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["An existing wellbore has to be provided (mandatory) that will be used as parent of WellboreTrajectory record that will be created. The"," ","parent wellbore needs to be a valid master-data--Wellbore. An invalid wellbore fails the ingestion."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"  \"data\": {\n      \"ExtensionProperties\": {\n          \"FileContentsDetails\": {\n              \"WellboreID\": \"opendes:master-data--Wellbore:ee8d18d487ee449c9d81d0e547bae31d\"\n              }\n\n","lang":"json"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Frame of Reference (optional)",{"$$mdtype":"Tag","name":"a","attributes":{"name":"frame-of-reference"},"children":[]},":"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["It is possible to explicitly provide a CRS by using this property, for example when the CRS name in the file is"," ","missing or does not match with any CRS in CRS Catalog. The CRS from the file will be ignored in that case. (refer"," ","to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#created-welllog-records"},"children":["Created WellLog records"]}," for more details on default behavior)."," ","The data.SpatialLocation.AsIngestedCoordinates section of the parent Wellbore record is set with CRS input information."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"  \"data\": {\n      \"ExtensionProperties\": {\n          \"FileContentsDetails\": {\n              \"FrameOfReference\": [\n                  {\n                      \"kind\": \"CRS\",\n                      \"name\": \"MAGNA_Colombia_Bogota\",\n                      \"persistableReference\": \"{\\\"lateBoundCRS\\\":{\\\"wkt\\\":\\\"PROJCS[\\\\\\\"MAGNA_Colombia_Bogota\\\\\\\",GEOGCS[\\\\\\\"GCS_MAGNA\\\\\\\",DATUM[\\\\\\\"D_MAGNA\\\\\\\",SPHEROID[\\\\\\\"GRS_1980\\\\\\\",6378137.0,298.257222101]],PRIMEM[\\\\\\\"Greenwich\\\\\\\",0.0],UNIT[\\\\\\\"Degree\\\\\\\",0.0174532925199433]],PROJECTION[\\\\\\\"Transverse_Mercator\\\\\\\"],PARAMETER[\\\\\\\"False_Easting\\\\\\\",1000000.0],PARAMETER[\\\\\\\"False_Northing\\\\\\\",1000000.0],PARAMETER[\\\\\\\"Central_Meridian\\\\\\\",-74.0775079166667],PARAMETER[\\\\\\\"Scale_Factor\\\\\\\",1.0],PARAMETER[\\\\\\\"Latitude_Of_Origin\\\\\\\",4.59620041666667],UNIT[\\\\\\\"Meter\\\\\\\",1.0],AUTHORITY[\\\\\\\"EPSG\\\\\\\",3116]]\\\",\\\"ver\\\":\\\"PE_10_3_1\\\",\\\"name\\\":\\\"MAGNA_Colombia_Bogota\\\",\\\"authCode\\\":{\\\"auth\\\":\\\"EPSG\\\",\\\"code\\\":\\\"3116\\\"},\\\"type\\\":\\\"LBC\\\"},\\\"singleCT\\\":{\\\"wkt\\\":\\\"GEOGTRAN[\\\\\\\"MAGNA_To_WGS_1984_1\\\\\\\",GEOGCS[\\\\\\\"GCS_MAGNA\\\\\\\",DATUM[\\\\\\\"D_MAGNA\\\\\\\",SPHEROID[\\\\\\\"GRS_1980\\\\\\\",6378137.0,298.257222101]],PRIMEM[\\\\\\\"Greenwich\\\\\\\",0.0],UNIT[\\\\\\\"Degree\\\\\\\",0.0174532925199433]],GEOGCS[\\\\\\\"GCS_WGS_1984\\\\\\\",DATUM[\\\\\\\"D_WGS_1984\\\\\\\",SPHEROID[\\\\\\\"WGS_1984\\\\\\\",6378137.0,298.257223563]],PRIMEM[\\\\\\\"Greenwich\\\\\\\",0.0],UNIT[\\\\\\\"Degree\\\\\\\",0.0174532925199433]],METHOD[\\\\\\\"Geocentric_Translation\\\\\\\"],PARAMETER[\\\\\\\"X_Axis_Translation\\\\\\\",0.0],PARAMETER[\\\\\\\"Y_Axis_Translation\\\\\\\",0.0],PARAMETER[\\\\\\\"Z_Axis_Translation\\\\\\\",0.0],AUTHORITY[\\\\\\\"EPSG\\\\\\\",15738]]\\\",\\\"ver\\\":\\\"PE_10_3_1\\\",\\\"name\\\":\\\"MAGNA_To_WGS_1984_1\\\",\\\"authCode\\\":{\\\"auth\\\":\\\"EPSG\\\",\\\"code\\\":\\\"15738\\\"},\\\"type\\\":\\\"ST\\\"},\\\"ver\\\":\\\"PE_10_3_1\\\",\\\"name\\\":\\\"MAGNA-SIRGAS * EPSG / Colombia Bogota zone [3116,15738]\\\",\\\"authCode\\\":{\\\"auth\\\":\\\"SLB\\\",\\\"code\\\":\\\"3116001\\\"},\\\"type\\\":\\\"EBC\\\"}\"\n                  }\n              ]\n          }\n      }\n  }\n\n","lang":"json"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["CoordinateReferenceSystemID(optional):"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["CoordinateReferenceSystemID allows to pass explicitely an OSDU Coordinate Reference System id into the payload of the file record for created Wellbore when ingesting WellLog and for Wellbore Trajectory. Its value can be set to the data.projectedCrsID attribute of the created WellboreTrajectory record. If there is no CoordinateReferenceSystemID passed into the payload then the service tries to resolve from the Trajectory header file a CRS name and its corresponding"," ","CoordinateReferenceSystemID in the CoordinateReferenceSystem OSDU catalog to be set to the data.projectedCrsID attribute of the WellboreTrajectory record."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pattern to be respected : ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"^[\\\\w\\\\-\\\\.]+:reference-data\\\\-\\\\-CoordinateReferenceSystem:[\\\\w\\\\-\\\\.\\\\:\\\\%]+:[0-9]*$:\""]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"  \"data\": {\n      \"CoordinateReferenceSystem\": \"opendes:reference-data--CoordinateReferenceSystem:WGS_1984_UTM_Zone_28S:\"\n  }\n\n","lang":"json"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["ExistenceKind(optional):"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["ExistenceKind describes at which stage the instance is in the cradle-to-grave span of its existence. Typical values are: \"Proposed\", \"Planned\", \"Active\", \"Inactive\", \"Marked for Disposal\", \"Prototype\". This is an attribute to be added to"," ","Well, Wellbore, WellLog and Wellbore Trajectory metadata."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"  \"data\": {\n      \"ExistenceKind\": \"opendes:reference-data--ExistenceKind:Prototype:\"\n  }\n\n","lang":"json"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["ResourceSecurityClassification(optional):"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is used to describe the resource security classifications. Typical values are: \"Confidential\", \"Private\", \"Public\", \"Secret\", \"Restricted\". This is an attribute to be added to Well, Wellbore, WellLog and Wellbore Trajectory metadata."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"  \"data\": {\n      \"ResourceSecurityClassification\": \"opendes:reference-data--ResourceSecurityClassification:RESTRICTED:\"\n  }\n\n","lang":"json"},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["WellLogTypeID(optional):"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is used to describe the type of logs. Typical values are: \"Edited\", \"Interpreted\", \"Raw\", \"Corrected\". This is an attribute to be added to WellLog metadata."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"  \"data\": {\n      \"ExtensionProperties\": {\n          \"FileContentsDetails\": {\n              \"WellLogTypeID\": \"opendes:reference-data--LogType:Raw:\"\n          }\n      }\n  }\n\n","lang":"json"},"children":[]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"welllog-ingestion","__idx":13},"children":["WellLog Ingestion ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"welllog-ingestion"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["WellLog Ingestion supports 2 versions of WellLog, which are: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["osdu:wks:work-product-component--WellLog:1.1.0"]}," and"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["osdu:wks:work-product-component--WellLog:1.2.0"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["osdu:wks:work-product-component--WellLog:1.1.0"]}," is the default ingestion target kind, it happens also when"," ","the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TargetKind"]}," is set as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["osdu:wks:work-product-component--WellLog:1.1.0"]}," in file record."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the user wants to ingest a file as WellLog:1.2.0, the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TargetKind"]}," in the file record  needs to be set as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["osdu:wks:work-product-component--WellLog:1.2.0"]}," ","so that Ingestion can generate the WellLog Entity based on this version of the WellLog."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"\"data\": {\n    \"ExtensionProperties\": {\n        \"FileContentsDetails\": {\n            \"TargetKind\": \"osdu:wks:work-product-component--WellLog:1.2.0\"\n        }\n    }\n}\n      \n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Supported file formats are:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Log ASCII Standard (LAS) version 1.0, 1.2 and 2.0 files including some LAS files not compliant with the specification that mixes features from different versions and Techlog specific extensions"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Digital Log Interchange Standard (DLIS) version 1 files"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Log Information Standard (LIS79) files"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"created-welllog-records","__idx":14},"children":["Created WellLog records ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"created-welllog-records"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The file ingestion creates records with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["osdu:wks:master-data--Well:1.0.0"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["osdu:wks:master-data--Wellbore:1.0.0"]},","," ","and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["osdu:wks:work-product-component--WellLog:1.1.0"]}," kinds."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Users can pass the name of their database to the File.Generic payload as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Source"]}," under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FileContentsDetails"]},"."," ","The data.Source attribute is set into the WellLog, Wellbore, Well through Ingestion by reading the Source parameter in the File.Generic record"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Well"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Wellbore"]}," records creation:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The service creates both ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Well"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Wellbore"]}," records if there is no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WellboreID"]}," passed into the payload of the file generic record."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If a UWI is present in ingested file, it gets assigned to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.FacilityID"]}," and as an alias in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.NameAliases"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.FacilityID"]}," is added from UWI, the file ingestion also sets ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.FacilityTypeID"]}," as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data-partition-id:reference-data--FacilityType:Wellbore:"]}," for Wellbore record and as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data-partition-id:reference-data--FacilityType:Well:"]}," for Well record."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["It is possible to set the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.SpatialLocation.AsIngestedCoordinates.persistableReferenceCrs"]}," property of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Wellbore"]}," record:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Passing explicitely the CRS through the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FrameOfReference"]}," option (optional)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If there is no CRS explicitely passed through the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FrameOfReference"]}," option, the file ingestion searches for a CRS name in the header of the file (LAS, DLIS) and tries to resolve the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["persistableReferenceCrs"]},"."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Users can pass a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CoordinateReferenceSystemID"]},"(optional)."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["When this ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CoordinateReferenceSystemID"]}," is passed explicitly, a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Wellbore"]}," record is created with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CoordinateReferenceSystemID"]}," value set to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.SpatialLocation.AsIngestedCoordinates.CoordinateReferenceSystemID"]}," property."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Otherwise the service tries to identify in the LAS or DLIS header file a CRS name. It searches in OSDU ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CoordinateReferenceSystem"]}," reference catalog for a CRS with the same name or alias and set the result to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.SpatialLocation.AsIngestedCoordinates.CoordinateReferenceSystemID"]}," property."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When some elevations properties are found in the ingested file, they are added in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.VerticalMeasurements"]}," of the Wellbore record (e.g. EREF and DREF properties)."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If there is only one elevation in the ingested file or datum, it is assigned as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DefaultVerticalMeasurementID"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In case there are more than one elevation in the ingested file, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DefaultVerticalMeasurementID"]}," is assigned depending on the datum of those elevations based on this order of priority:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["KB (Kelly Bushing)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["GR (Ground Level)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["MSL (Mean Sea Level)."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the datum is not found in the above list, the file ingestion chooses the first datum in the file to be set as the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DefaultVerticalMeasurementID"]},"."]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WellLog"]}," creation:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A family is assigned to each curve in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WellLog"]}," record based on their mnemonic and unit if they can be found in family catalog. Otherwise family won't be added."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["NaN and Infinity values coming from DLIS properties are stored as string values."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The bulk data associated to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WellLog"]}," record is stored to Wellbore DMS and can be retrieved through the WDDMS ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WellLog"]}," data API."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["First value in reference curve is assigned to data.TopMeasuredDepth and data.SamplingStart."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Last value in reference curve is assigned to data.BottomMeasuredDepth and data.SamplingStop."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["data.SamplingInterval is added when sampling rate in reference curve is constant. data.IsRegular flag is also set to true in that case or set to false otherwise (for WellLog >1.2.0 only)."]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"trajectory-ingestion","__idx":15},"children":["Trajectory Ingestion ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"trajectory-ingestion"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["It happens when ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TargetKind"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["osdu:wks:work-product-component--WellboreTrajectory:1.1.0"]},"."," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WellboreID"]}," property in File record is mandatory."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Supported file formats are:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["CSV files"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Excel files (XLSX, XLS)"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["with following Meta data structure:"," ","UWI, Source, ServiceCompanyID, SurveyType, SurveyToolTypeID..."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"created-wellbore-trajectory-records","__idx":16},"children":["Created Wellbore Trajectory records ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"created-trajectory-records"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ingestion creates a record with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["osdu:wks:work-product-component--WellboreTrajectory:1.1.0"]}," kind."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A reference to a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TrajectoryStationPropertyType"]}," is assigned to each station (channel, curve) in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WellboreTrajectory"]}," record with the following logic:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Trying to resolve a family from the family catalog based on the mnemonic and unit of the channel."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["From the family and azimuth reference type (for some channels only) to find a match with code or alias name in the OSDU ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TrajectoryStationPropertyType"]}," reference catalog."," ","If one of those steps fails a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TrajectoryStationPropertyTypeID is assigned with the"]},"TrajectoryStationPropertyType` reference data pattern concatenated with the channel mnemonic."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If there is no vertical measurement (Elevation value and Datum of reference) defined in the header of the ingested file, the file ingestor tries to find in the parent ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Wellbore"]}," record the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DefaultVerticalMeasurementID"]}," and to reference this default vertical measurement in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WellboreTrajectory"]}," record."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Users can pass a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CoordinateReferenceSystemID"]},"(optional). When this ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CoordinateReferenceSystemID"]}," is passed explicitly, a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WellboreTrajectory"]}," record is created with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CoordinateReferenceSystemID"]}," value set to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.ProjectedCRSID"]}," property."," ","Otherwise the service tries to identify in the trajectory header file a CRS name. It searches in OSDU ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CoordinateReferenceSystem"]}," reference catalog for a CRS with the same name or alias and set the result to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data.ProjectedCrsID"]}," property."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Users can pass the name of their database to the File.Generic payload as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Source"]}," under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FileContentsDetails"]},"."," ","The data.Source attribute is set into the WellboreTrajectory through Ingestion with the following order of priority:"," ","By reading the Source parameter in the File.Generic record"," ","By reading the Source from the header file (CVX trajectory format)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The bulk data associated to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WellboreTrajectory"]}," record is stored to Wellbore DMS and can be retrieved through the WDDMS ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WellboreTrajectory"]}," data API."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"pre-registered-dag","__idx":17},"children":["Pre-registered DAG ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"pre-registered-dags"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ingestion framework comes with pre-registered DAG(s) to do ingestion and the ingestion framework created the corresponding workflow(s), which are available to use:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["workflow name: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["wellbore_ingestion_wf"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"limitations","__idx":18},"children":["Limitations ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"limitations"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ingestion Workflow Service known limitations:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Not yet integrated with Managed Planning Data Foundation Notification Service",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Manually call the Workflow Service to execute a registered DAG."]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Scalability limitations: 90 queued up workflow requests, with 10 concurrent workflows execution."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"known-issues","__idx":19},"children":["Known Issues ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"KnownIssues"},"children":[]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["N/A"]}]}]},"headings":[{"value":"Table of Contents","id":"table-of-contents","depth":2},{"value":"Introduction","id":"introduction","depth":2},{"value":"Ingestion Framework","id":"ingestion-framework","depth":2},{"value":"Components","id":"components","depth":3},{"value":"Access Controls","id":"access-controls","depth":3},{"value":"How to execute the ingestion workflow","id":"how-to-execute-the-ingestion-workflow","depth":2},{"value":"1. Get Signed URL using File Service","id":"1-get-signed-url-using-file-service","depth":3},{"value":"2. Upload file using signed URL","id":"2-upload-file-using-signed-url","depth":3},{"value":"3. Create File Metadata record using File Service","id":"3-create-file-metadata-record-using-file-service","depth":3},{"value":"4. Run ingestion Workflow","id":"4-run-ingestion-workflow","depth":3},{"value":"5. Monitor Workflow Status","id":"5-monitor-workflow-status","depth":3},{"value":"6. Validate Ingested Data","id":"6-validate-ingested-data","depth":3},{"value":"File Metadata record","id":"file-metadata-record","depth":3},{"value":"WellLog Ingestion","id":"welllog-ingestion","depth":2},{"value":"Created WellLog records","id":"created-welllog-records","depth":3},{"value":"Trajectory Ingestion","id":"trajectory-ingestion","depth":2},{"value":"Created Wellbore Trajectory records","id":"created-wellbore-trajectory-records","depth":3},{"value":"Pre-registered DAG","id":"pre-registered-dag","depth":2},{"value":"Limitations","id":"limitations","depth":2},{"value":"Known Issues","id":"known-issues","depth":2}],"frontmatter":{"seo":{"title":"Table of Contents"}},"lastModified":"2025-11-25T03:33:46.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/solutions/wellbore-dms/tutorial/wellbore-ingestion-las-lis-dlis","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}