WITSML & Data

Optimising WITSML Store Ingestion Performance for North Sea Geosteering

Learn how a robust WITSML store architecture improves data streaming reliability and lowers latency for critical wellsite geosteering decisions.

11 September 2026Data Engineer, MWD/LWD Engineer, Geosteering Engineer
Listen to this article0:00 / --:--

You are monitoring an 8.5-inch lateral section in a Central North Sea reservoir while drilling at 60 metres per hour. Gamma ray and directional surveys are arriving via a WITSML store, but batch query delays of 15 seconds mean your geosteering model lags three metres behind the bit. As operators increase lateral drill rates and narrow target windows across UKCS fields, query latencies and payload bloat from legacy WITSML store connections lead to out-of-zone drilling before survey updates process.

Mechanical Mechanics of SOAP Query Polling and ETP Streaming Ingestion

Legacy WITSML v1.4.1.1 stores rely on HTTP SOAP Web Services, requiring client applications to repeatedly invoke WMLS_GetFromStore using XML query templates to pull updated data. Under this paradigm, defined in the WITSML STORE Application Program Interface API Specification, the client initiates a TCP connection, constructs a SOAP request envelope containing the target wellbore XML schema, sends the HTTP POST request across the network, and waits for the server to serialize and return the matching document.

When retrieving growing data objects such as log and trajectory from a v1.4.1.1 WITSML store, servers return a status code of +2 if returned nodes exceed maxDataNodes, forcing recursive pagination requests across depth intervals. The client application must inspect the returned Result code, identify that the payload was truncated, parse the highest returned index, and issue a subsequent WMLS_GetFromStore call specifying a new start index. For high-frequency measurement-while-drilling log objects containing thousands of curve elements, this iterative handshake introduces severe processing overhead on both the aggregation server and the consuming geosteering client. GeoMaster integrates native WITSML data streaming ingest to eliminate query overhead across active rig connections.

The industry addressed these architectural limitations by publishing the Energistics WITSML v2.1 and ETP v1.2 specifications, as detailed in WITSML Developers & Users. WITSML v2.1 replaces HTTP request-response polling with Energistics Transfer Protocol (ETP v1.2) over WebSockets, establishing a persistent publish-subscribe channel that pushes Apache Avro binary deltas instantly upon rig-site store writes. Instead of repeatedly querying full XML documents, the client negotiates a persistent WebSocket connection once, subscribes to specific data channels, and receives binary-encoded sub-node updates as soon as new samples are written to the rig store.

Critical Performance Criteria for High-Frequency Subsurface Ingestion

In high-angle target navigation across thin North Sea reservoirs, data delivery latency must remain below 500 milliseconds to ensure true vertical depth adjustments occur within a 1-metre TVD window. When drilling at high penetration rates, total spatial lag is a function of mechanical rate of penetration and cumulative data processing latency. This relationship is expressed as:

Lspatial=(ROP3600)×ΔttotalL_{spatial} = \left(\frac{ROP}{3600}\right) \times \Delta t_{total}

where LspatialL_{spatial} is the spatial telemetry lag behind the bit in metres, ROPROP is the rate of penetration in metres per hour, and Δttotal\Delta t_{total} is the end-to-end ingestion and parsing latency in seconds.

For an operation drilling at an ROP of 60 metres per hour (0.01667 m/s0.01667\text{ m/s}), if legacy SOAP polling, server processing, and recursive maxDataNodes pagination cause a cumulative delay Δttotal\Delta t_{total} of 180 seconds, the spatial lag calculation yields:

Lspatial=(603600)×180=0.01667×180=3.0 metresL_{spatial} = \left(\frac{60}{3600}\right) \times 180 = 0.01667 \times 180 = 3.0\text{ metres}

A 3.0-metre spatial lag in a 1.5-metre-thick reservoir dipping at 2 degrees can cause a geosteering engineer to miss a structural dip change, driving the bottom hole assembly into the target caprock before the log response reaches the steering display.

Bandwidth utilization presents another major obstacle for offshore data infrastructure. XML formatting in WITSML v1.4.1.1 store responses incurs up to 85% bandwidth overhead due to repeated structural tag definitions, namespace declarations, and ASCII string encoding of numeric floats. Conversely, binary serialization in ETP v1.2 reduces data payloads by up to 70% by encoding floating-point telemetry directly into compact Apache Avro binary frames without textual schema redundant tags.

Furthermore, concurrent client scaling on a WITSML store degrades exponentially under SOAP polling when more than 10 subsurface applications issue simultaneous WMLS_GetFromStore calls every 2 seconds. Each incoming SOAP request requires the WITSML store server to spawn or assign an execution thread, open an SQL database connection, parse incoming XML templates, assemble an outgoing XML DOM tree, and close the HTTP session. This process depletes server CPU resources and thread pools during high-activity drilling operations.

Direct Architectural Comparison of WITSML Store Ingestion Methods

A direct evaluation highlights the architectural trade-offs between traditional SOAP polling and ETP streaming protocols for real-time wellsite data aggregation:

Criterion SOAP Query Polling (WITSML v1.4.1.1) ETP WebSocket Streaming (WITSML v2.1 / ETP v1.2)
Communication Model Request-response HTTP polling via WMLS_GetFromStore Persistent pub-sub streaming via WebSockets
Serialization Format Verbose XML document schemas Compact binary Apache Avro encoding
Transfer Latency 2,000 ms to 15,000 ms per polling cycle 50 ms to 200 ms continuous stream
Bandwidth Efficiency High overhead (up to 85% schema boilerplate) High efficiency (up to 70% payload reduction)
Server Connection Overhead Short-lived TCP connection teardown and setup Single persistent TCP WebSocket connection
Growing Object Handling Index paging with maxDataNodes status +2 checks Automatic delta streaming on store write events

Retrieving real-time depth logs across a 3,000-metre lateral well via legacy XML query templates requires parsing multi-megabyte files, whereas ETP v1.2 streams individual channels as raw 64-bit float arrays. In legacy SOAP implementations, every log update requires the store to build an entire log curve XML document or handle complex index start-and-stop queries to isolate new intervals. The client application must allocate memory to deserialize multi-megabyte XML trees into application objects, triggering frequent garbage collection cycles and thread locking in desktop applications.

Under ETP v1.2, channel data streaming decouples data routing from document metadata. When a new depth sample arrives at the store, the server sends a minimal binary message frame containing only the channel identifier, timestamp, depth index, and payload value encoded as a raw 64-bit float array. As demonstrated in technical literature such as A New Communications Protocol for Real-Time Decision Making, central aggregator server memory usage drops by over 60% when converting active subsurface ingestion channels from SOAP query parsing to ETP binary frame handling.

Decision Matrix for WITSML Store Protocol Selection

Engineers selecting a WITSML store integration protocol for UKCS offshore operations should apply specific criteria based on operational constraints and hardware capabilities.

Deploy ETP v1.2 streaming ingest whenever drilling high-angle UKCS lateral wells where rate of penetration exceeds 45 metres per hour or real-time log correlation tolerances are tighter than 1 metre TVD. In these fast-drilling scenarios, sub-second telemetry delivery is vital for protecting directional control decisions, minimizing tortuosity, and staying within narrow hydrocarbon-bearing sub-units.

Retain legacy WITSML v1.4.1.1 SOAP polling exclusively for batch post-section historical data backfills, static well header imports, or legacy rig infrastructure lacking ETP v1.2 capability. When pulling fixed reference data, batch static trajectory lists, or completed section logs where real-time latency is irrelevant, SOAP web services provide simple implementation requirements and straightforward firewall traversal.

Implement a hybrid edge architecture on rig sites to translate local WITSML v1.4.1.1 XML streams into ETP v1.2 before backhauling data across bandwidth-constrained satellite connections to town office stores. Edge processing gateways deployed on the rig network can handle high-frequency local polling of legacy WITSML store servers, convert incoming XML payloads into compressed Apache Avro binary frames, and backhaul those frames over secure WebSocket streams to centralized cloud stores. This approach optimizes satellite link efficiency while allowing town-based geosteering models to maintain sub-second updates without overloading field infrastructure.

Frequently asked questions

References

  1. 1.A New Communications Protocol for Real-Time Decision Making · onepetro.org
  2. 2.WITSML Developers & Users · energistics.org
  3. 3.Energistics® Publishes a Brochure Extolling the Business Value of Using WITSML v2.1 and ETP v1.… · energistics.org
  4. 4.[PDF] WITSML STORE Application Program Interface (API) Version 1.4.1 · docs.pronova-tde.com