Introduction
WITSML (Wellsite Information Transfer Standard Markup Language) is an industry standard for the real-time exchange of well operations data. Its goal is to provide a unified and standard solution for communication between various applications and systems throughout the well's life cycle. WITSML 2.0, the latest version of this standard, is built upon the Energistics Common Technical Architecture (CTA) and offers significant improvements compared to previous versions. This version is designed to facilitate the seamless, reliable, and secure flow of data from the wellsite to offices and operational centers.
WITSML 2.0: Architecture and Core Concepts
WITSML 2.0 has introduced major changes in how data is modeled and exchanged. While previous versions of WITSML focused more on the SOAP API, WITSML 2.0 uses the Energistics Transfer Protocol (ETP) , which is a sub-protocol of WebSocket. This change enables low-latency, real-time data streaming and bi-directional communication.
The WITSML 2.0 architecture is based on a robust, hierarchical data model that organizes data into objects. These objects are defined using XML Schemas (XSDs) and use Universal Unique Identifiers (UUIDs) to ensure data uniqueness and traceability. The main goal of WITSML 2.0 is to provide a cohesive framework for:
- Reducing Ambiguity: Standardizing data definitions and units to ensure consistent interpretation.
- Increasing Interoperability: Enabling data exchange between different software and enterprise systems.
- Supporting Real-time Data: Enabling fast and efficient data streams for immediate decision-making.
- Maintaining Data Quality: Providing mechanisms to ensure data accuracy and integrity.
WITSML 2.0 Data Objects
In WITSML 2.0, data is structured in objects, each responsible for holding specific information. The five main objects detailed in this article are: Well, Wellbore, Log, ChannelSet, and Channel.
1. The "Well" Object
The Well
object in WITSML 2.0 represents the highest level of the data hierarchy and contains all information related to a single well. This object acts as the primary container for all operations and data associated with a specific well. The Well
is a crucial business and operational entity that serves as the starting point for organizing information related to a well's drilling and production.
Purpose:
- Provide a unique reference for a physical well.
- Aggregate general well information such as name, status (e.g., drilling, completed, abandoned), primary geographical location, and well datum information.
- Act as the root of the hierarchy for its associated
Wellbore
objects.
Attributes:
Although the full details of the XSD attributes (such as name
, uid
, numGovt
, wellDatum
, wellLocation
) are not easily accessible in public Energistics resources, it can be inferred from its use and role in the WITSML 2.0 data model that it will include unique identifiers (UID), name, government/regulatory numbers, well status (statusWell), well purpose (purposeWell), well datum information, and reference locations (wellLocation).
2. The "Wellbore" Object
The Wellbore
object in WITSML 2.0 organizes information related to a single wellbore originating from a Well
. A Well
can include multiple Wellbore
s (e.g., in sidetracks or multi-lateral wells), but each Wellbore
is uniquely associated with one Well
.
Purpose:
- Model the physical or planned path beneath the surface.
- Store information related to location, orientation (e.g., measured depth, true vertical depth, azimuth, and inclination), wellbore type (e.g., main, sidetrack), drilling status (e.g., drilling, completed), and purpose (e.g., production, injection).
- Act as a container for deeper operational data objects such as
Log
andTrajectory
.
Attributes:
Wellbore.uid
: The unique identifier for the wellbore in WITSML.Wellbore.name
: The human-readable name for the wellbore.Wellbore.wellboreParent.uid
: The mandatory reference to the parentWell
's unique identifier.Wellbore.wellboreParent.name
: The name of the parentWell
.typeWellbore
: The type of wellbore (e.g., "main", "sidetrack", "reentry").purposeWellbore
: The purpose of the wellbore (e.g., "exploration", "development", "injection").statusWellbore
: The current status of the wellbore (e.g., "drilling", "completed", "pluggedAndAbandoned").wellboreTrajectory
: Information related to the wellbore path (including survey stations).
3. The "Log" Object
The Log
object in WITSML 2.0 is a container for time-series or depth-based data in a wellbore, typically displayed as log curves. In WITSML 2.0, the Log
object differs significantly from the one in WITSML 1.4.1.1, where the Log
in version 2.0 is primarily used to organize high-level metadata and reference ChannelSet
s. This change was made to separate the actual log data (contained within Channel
s and ChannelSet
s) from the log metadata.
Purpose:
- Provide a logical reference for a set of log data within a wellbore.
- Store general metadata about the logging operation, such as the start/end date and time of logging, and a reference to the relevant
Wellbore
. - Encompass one or more
ChannelSet
objects, which contain the log curves and their associated metadata.
Attributes:
Log.uid
: The unique identifier for the log.Log.name
: The human-readable name for the log.Log.wellboreParent.uid
: The mandatory reference to the parentWellbore
's unique identifier.Log.wellboreParent.name
: The name of the parentWellbore
.indexType
: The type of log index (e.g., "measured depth", "time").startDateTimeIndex
: The start date and time of the log index.endDateTimeIndex
: The end date and time of the log index.ChannelSet
: The container object that includes a collection ofChannel
s.
4. The "ChannelSet" Object
The ChannelSet
object is a key concept in WITSML 2.0 that groups a collection of Channel
s sharing a common index. This index can be measured depth (MD), true vertical depth (TVD), time (TIME), or any other index type relevant to a group of data. The ChannelSet
plays a crucial role in organizing and retrieving log data, especially for real-time data streaming via ETP.
Purpose:
- Logically group related
Channel
s that share a common index. - Define common metadata for a group of
Channel
s, such as the index type (MD, TIME), units, and index ranges. - Provide a unique URI for the real-time data stream via ETP.
- Increase efficiency in managing and exchanging large volumes of log data by organizing them into related sets.
Attributes:
ChannelSet.uid
: The unique identifier for the ChannelSet.ChannelSet.name
: The human-readable name for the ChannelSet.ChannelSet.logParent.uid
: The reference to the parentLog
's unique identifier.ChannelSet.logParent.name
: The name of the parentLog
.index
: Information related to the primary index for all channels in this set (e.g., index type, unit, start, and end of the index).channel
: A list of one or moreChannel
objects belonging to this set.runNumber
: The log run number for a set of channels.dTimCreation
: The date and time of ChannelSet creation.
5. The "Channel" Object
The Channel
object in WITSML 2.0 represents a single log curve or a specific data stream. This object is equivalent to the LogCurveInfo
concept in WITSML 1.4.1.1 and provides the most granular level of detail for log data. Each Channel
contains its own specific metadata as well as a reference to the actual data (which may be binary-encoded and transferred separately).
Purpose:
- Define the specifications of a single data curve (e.g., temperature, pressure, gamma ray).
- Store curve-specific metadata, such as the unit of measure, resolution, alternate names, and information about the data origin (ChannelDerivation).
- Provide a unique identifier for tracking and managing the data of a specific curve.
Attributes:
Channel.uid
: The unique identifier for the channel.Channel.name
: The human-readable name for the channel (e.g., "GR" for gamma ray, "DEPT" for depth).Channel.channelSetParent.uid
: The reference to the parentChannelSet
's unique identifier.Channel.channelSetParent.name
: The name of the parentChannelSet
.mnemonic
: A short name or abbreviated code for the channel (e.g., "GR", "RT", "DEN").unit
: The unit of measure for the channel data (e.g., "gAPI", "kPa", "degC").nullValue
: The numerical value representing missing or invalid data.dataType
: The data type of the channel (e.g., "double", "float", "string").-
ChannelDerivation
: Information about how the channel data was produced. Possible values include:raw
: Raw, unprocessed data.sampled
: Sampled data.simulated
: Simulated data.spliced
: Data combined from different sources.model
: Data generated by a model.
dTimCreation
: The date and time of channel creation.
Connections Between WITSML 2.0 Objects
The WITSML 2.0 data model is designed hierarchically to reflect the logical relationships between data objects. This structure ensures that data is placed in the proper context and is easily navigable:
Well
is the highest level and serves as the root for a physical well.- Each
Well
can include one or moreWellbore
s.Wellbore
s have a mandatory reference to their parentWell
. - Each
Wellbore
can include one or moreLog
s.Log
s also have a mandatory reference to their parentWellbore
. - Each
Log
includes one or moreChannelSet
s.ChannelSet
s have a reference to their parentLog
. - Each
ChannelSet
includes one or moreChannel
s.Channel
s also have a reference to their parentChannelSet
.
This hierarchical structure enables efficient data management and exchange, as applications can access the specific data they need by navigating from the root (Well) downwards.
Use Cases and Best Practices in WITSML 2.0
With its advanced capabilities, WITSML 2.0 covers a wide range of use cases in oil and gas operations:
- Real-Time Data Streaming: Using ETP and WebSocket, WITSML 2.0 enables the real-time transfer of sensor data from the wellsite to operational centers. This is critical for monitoring drilling, making real-time evaluations, and reacting quickly to unexpected conditions.
- Offline and Batch Data Transfer: In addition to real-time streaming, WITSML 2.0 still supports batch and file-based data transfer, which is suitable for larger datasets or scenarios where a continuous connection is not available.
- Data Quality Assurance (DQA): WITSML 2.0 includes mechanisms for evaluating and improving data quality throughout the exchange cycle, including the definition of standard units, Null values, and comprehensive metadata.
- More Complex Wellbore Modeling: Extensive support for wellbore geology, stimulation design and execution, and cementing enables more accurate and comprehensive modeling of well operations.
- Data Lineage: The ability to trace the origin and changes of data over time, which is very important for historical analysis and regulatory compliance.
Best Practices for WITSML 2.0 Implementation:
- Use of Unique Identifiers (UIDs): For each data object, the use of stable and unique UIDs is crucial for the correct tracking and referencing of data.
- Strict Adherence to Schemas: To ensure interoperability, applications must strictly follow the WITSML 2.0 XML schemas and data definitions.
- Use of ETP for Real-time: For real-time scenarios, using ETP is strongly recommended to benefit from streaming and low-latency capabilities.
- Metadata Management: Entering complete and accurate metadata for each object (especially
ChannelSet
andChannel
) is essential for correct understanding and interpretation of the data. - Validation and Revalidation: Implementing validation processes to check data compliance with the WITSML standard and ensure its accuracy.
- Training and Development: Participating in Energistics training courses and using development tools (DevKits) to ensure a correct understanding of the standard and efficient implementation.
Conclusion
WITSML 2.0 is a significant advancement in data exchange standards for the oil and gas industry. With its focus on ETP, a robust and hierarchical data model, and advanced capabilities for real-time data streaming and data quality, this standard paves the way for more efficient, intelligent, and safer drilling and production operations. A deep understanding of the main objects such as Well
, Wellbore
, Log
, ChannelSet
, and Channel
and their relationships is essential for any developer or user intending to implement or use WITSML 2.0. By adopting best practices, companies can unlock the full potential of this standard to improve their decision-making and operational productivity.