What is WITSML?

Wellsite information transfer standard markup language (WITSML) is an open standard for defining and transmitting technical drilling data between disparate systems and companies in the E&P petroleum industry.

WITSML is a technology which allows previously incompatible or proprietary systems to interoperate and share data.

The WITSML standard is being developed and maintained by Energistics, a non-profit consortium designed to develop and deploy open data exchange standards in the oil and gas industry.

What is ETP?

Energistics Transfer Protocol (ETP) is a data exchange specification that enables the efficient transfer of data between applications and systems. It defines a data streaming mechanism so that data receivers do not have to poll for data and can receive new data as soon as it is available from a data provider.

ETP is defined as about 50 distinct messages that can run asynchronously between a client and a server, all implemented on top of the WebSocket protocol. Messages are serialized over the connection using the Apache Avro standard. Model data is delivered as a combination of XML and compressed bulk data according to the DEFLATE (GZip) standard.

ETP is the transportation protocol of the EnergyML standards from Energistics. ETP can deliver both WITSML 1.* and WITSML 2.0.

What is JWitsml?

JWitsml is a Java library for accessing data on WITSML servers. The goal of the JWitsml project is to support WITSML client software with WITSML data through a clean, complete, well documented, efficient and extremely simple to use Java programming interface.

JWitsml supports both the WebSocket/ETP protocol and the older HTTP/Soap protocol.

There exists many tools for browsing WITSML data, but in order to get hold of the actual data for performing advanced computations or create custom applications, a library like JWitsml is required.

Main features as of Q2/2017:

  • Complete coverage of all WITSML types
  • CRUD (Create, Read, Update, Delete) support for all types
  • Full WITSML 2.0 support through WebScoket/ETP
  • Full WITSML 1.4, 1.3 and 1.2 support through HTTP/Soap
  • Powerful WITSML query engine
  • Thread-safeness: Scaled for multi-threaded client environment
  • Readily available for use on the Android mobile platform
  • All hand-coded to acheive best possible code quality
  • Excelent API documentation and tutorials
JWitsml can be used for:
  • Creating full-scale, multi-threaded, real-time E&P applications
  • Creating real-time geosteering applications
  • Creating advanced WITSML viewers for browsing remote WITSML servers
  • Creating WITSML real-time apps for mobile units
  • Accessing real-time log data for visualization and QL-computations
  • Moving data between WITSML databases
  • Moving data between WITSML and corporate ER databases
  • Populating WITSML 2.0 databases from WITSML 1.*
  • Populating WITSML servers with log data converted from LAS, LIS, DLIS, BIT, CSV, Excel etc.
  • Extracting real-time log data for LAS, LIS, DLIS, BIT, CSV or Excel export
  • Report drilling information to the authorities
  • Creating real-time drilling or logging simulators
  • Creating WITSML server validation, benchmarking and performance test applications
  • Performing unit conversion between more than 2.300 petroleum related units

Open as PDF: JWitsml fact sheet


Illustrates the capabilities of JWitsml and how the library is used in Log Studio.
Shows how JWitsml is used in Log Studio to upload well log content from various sources to WITSML with single button clicks.


      JWitsml API for Java: Javadoc

      JWitsml API for .Net: Doxygen (on request)

      Tutorial: JWitsml tutorial