Skip to main content
Skip table of contents

WITSML

.NET AGENT

Overview

The WITSML connector enables Seeq to access data from WITSML 1.4.1.1 (via SOAP or ETP) and 2.0 (via ETP) servers. The connector indexes wells, wellbores, and time logs. Each mnemonic (WITSML 1.4.1.1) or channel (WITSML 1.4.1.1 over ETP or WITSML 2.0) is indexed as a signal in Seeq, with metadata including the Name, Description, Value Unit of Measure (unit), DataSource, StartDateTimeIndex and EndDateTimeIndex. Signals can be organized into an asset tree using wells, wellbores, and log levels as assets.

Prerequisites

The WITSML Connector is licensed as a Seeq Connector Plus and will not start up unless the Seeq Server installation is licensed to support it.  Please contact your Seeq Sales Executive or Account Manager for more information regarding licensing.

Configuration

This is an example configuration template that is displayed in the Additional Configuration box that appears when you click Configure for an existing datasource (or if a new datasource is being created, in the Create new datasource connection modal that appears after clicking Add Datasource) on the Datasources administration page.

CODE
{
    "ServerUri": "http://my.company.net/Witsml.Web/api/soap",
    "Username": null,
    "Password": null,
    "UseDefaultCredentials": false,
    "WitsmlVersion": "WITSML1411",
    "ProtocolVersion": "SOAP",
    "BuildAssetTree": true,
    "EtpGetResourcesRequestTimeout": null,
    "EtpChannelRangeRequestTimeout": null
}
WITSML Additional Configuration

Property Name

Default Value

Data Type

Description

ServerUri

null

String

This is the URI for the WITSML server. If the server is a WITSML 1.4.1.1 SOAP server, the address will begin with http:// or https:// and may end in something like /WMLS.asmx or /soap. For ETP connections, the address will begin with ws:// or wss:// and may end with /etp. Here are some example URIs: ws://my.company.net/witsml.web/api/etp, http://my.company.net/Witsml.Web/api/soap.

Username

null

String

The username for connecting to the WITSML server.

Password

null

String/SecretFile

The password for the account specified in the Username field. It is recommended to leverage a Secrets File to store this information.

UseDefaultCredentials

false

Boolean

This field is only applicable when connecting to a WITSML 1.4.1.1 server over SOAP. This sets the UseDefaultCredentials property of the WMLS accordingly; this in turn causes the System.Net.CredentialsCache.DefaultCredentials to be used for authentication to the WITSML server, which usually means that the credentials of the account running the .NET Agent are those used for the connection.

WitsmlVersion

null

String

This is the WITSML server version. It should be set to either WITSML1411 or WITSML200.

ProtocolVersion

null

String

This is the protocol version supported by the WITSML server. It should be set to SOAP, ETP11, or ETP12. SOAP cannot be used for WITSML200 connections. There is no difference in the way ETP11 and ETP12 connections are handled.

Note that for ETP connections, only ChannelRangeRequests are performed on the ChannelStreaming protocol.

BuildAssetTree

true

Boolean

Set to true to organize signals into an asset tree consisting of a root node (named based on the connection name), Wells, Wellbores, and Logs. The mnemonics/channels are signals under a Log. Any Wells, Wellbores, or Logs that don’t contain signals will not be added to the asset tree.

Note that for ETP connections, the ChannelSet level is not represented in the tree.

In some cases, it may be desirable to group Wells into subtrees rather than a flat list under the root asset; in this case, it is recommended to set BuildAssetTree to false and use the Well, Wellbore, and Log properties of each signal for organization.

EtpMaxDataItems

null

Integer

This is the maximum number of results to return in a single ChannelData request when a ChannelRangeRequest is made. This parameter must be set to null if a WITSML server only returns a MessageFlags of 1 in response to ChannelRangeRequests. In this case, there is no way to determine when a response is complete, and requests will time out; to avoid this, setting EtpMaxDataItems to null causes the data requests to return after the first ChannelData is received. When not null, the number of values returned in a ChannelData will be the lesser of this value or the server-side limit.

EtpGetResourcesRequestTimeout

null

Integer

This is the time in seconds after which a GetResources or GetObject request will time out.

EtpChannelRangeRequestTimeout

null

Integer

This is the time in seconds after which a ChannelRangeRequest will time out.

IndexLogsWithUnknownDirection

false

Boolean

Set to true to index logs with an unknown direction. Use this functionality with caution: if the indexed logs do not include a direction, they might be in reverse order by timestamp - which will cause data requests to fail.

Known Issues

There are no known issues for the WITSML connector. Please report any issues you find to our support portal.

Troubleshooting

You may need to update the MaxResultsPerRequest configuration parameter for some ETP connections. For WITSML servers that never return a ChannelData with MessageFlags set to 3, it is critical that MaxResultsPerRequest be set below the limit set by the server. For example, if the server sends ChannelData messages that contain at most 10000 samples, the MaxResultsPerRequest should be set to 9999 or less. This is to ensure that Seeq can use the presence or absence of an additional sample to determine whether to make further requests when the last sample returned has a timestamp prior to the end timestamp of the request.

If you are running into other issues with connecting to or access data from WITSML, view our guide for troubleshooting datasource issues.

Performance considerations

You may want to tweak the MaxResultsPerRequest configuration parameter for some ETP connections. When a server responds to ChannelRangeRequests with ordered ChannelData messages that have a MessageFlags value of 1 for all but the last message, and a MessageFlags value of 3 for the last message, the MaxResultsPerRequest parameter can be set to tune query performance or left as null to use the limit set in Seeq Administration interface.

Additionally, view our guide on optimizing datasource performance for general guidance.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.