WITSML Server
In this WITSML Project customer wants to implement the process which reads incoming well/wellbore data from the field on an edge gateway and and then update the information at the server running on the Gateway or send it to the WITSML server repository to create/update the associated well/wellbore information.
The edge application was built to run on any Agora Edge Gateway, and it is leveraging the Agora Edge App SDK (2.0) and C# .NET 6.0 for configuration, logging, and sending/receiving data from the Agora Edge App MQTT Broker.
In WITSML we have major 2 components :-
- WITSML Client
- WITSML Server
WITSML Server will provide data from the edge Gateway to a WITSML Client. Data will be stored on the gateway and made available to authenticated/authorized WITSML Client using basic Auth (username/password) as described by the WITSML server specification.
`
Figure 1: WITSML Server
Technical Overview
The application is developed using C# .NET Core 6 and leverages the existing Agora Edge Apps SDK with facilities for Logging, Configuration, and communicating to the gateway's Message Broker.
WITSML Server
The WITSML Server app is on the same network as a WITSML Client. The application listens for data published by other apps on the gateway using the MQTT broker as well as responds to WITSML requests from external WITSML Clients using a web endpoint.
The following are the points to consider for the WITSML Server Application:
- Should have the capability to authenticate the incoming requests against configurable username/passwords (not stored as clear text).
a. A password configuration file (not part of the AEA2 SDK Configuration) will act as User Database.
b. The password configuration file should be stored in the config folder so that AgoraOps can update the users allowed to access the system. c. Should have the capability to reload the config file if some user changes the username/password in the config file. - If the user is authenticated, the app will allow those users to access the data that they want to access if authorized. (CRUD Operations)
- App stores the data locally in a File structure.
- App will only support Well, Wellbore, Log, and Log Curve WITSML data types.
Architectural Overview
This section provides a brief overview regarding the architecture showing how Agora applications and edge devices are being used, how they transmit log data, and how they store log data.
Figure 1 : Agora Edge Apps Field Architecture
- Agora gateways are installed on rig/well site for data collection.
- Apps are developed for the gateway using the Agora Edge App SDK 2.0 (AEA2 SDK) using .NET Core 6.0.
- Agora Edge Apps (AEAs) are packaged as Docker containers.
- AEAs are deployed and configured on the gateway by AgoraOps personnel.
- The WITSML Client or Server are AEAs and may receive data from other applications running on the gateway or externally using the WITSML protocol.
- The WITSML Client creates/reads/writes/updates data on external WITSML Servers, such as InterAct.
- The WITSML Server provides a web endpoint that will allow external WITSML Clients to create/read/write/update data.
- The WITSML Server stores data on the gateway using files.
Technical Details
Server Details
InterAct Server
Env | Development and Testing Purpose |
---|---|
Server URL | https://evt.interact.slb.com/Witsml/Store/Store.asmx |
Create Connection with WITSML Server (InterACT)
For making the connection with the InterACT Test server the following information shall be provided in the AEA.json file.
- Server URL
- Username
- Password (clear text)
"WITSMLSender": {
"ServerURL": "https://evt.interact.slb.com/Witsml/Store/Store.asmx",
"Username": "username",
"Password": "password",