Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ Integration Service

Complete Integration Example

  • Last UpdatedJul 27, 2026
  • 3 minute read

Here's a comprehensive example showing how to initialize and use multiple clients:

using AVEVA.IntegrationService.DataAPI.SDK;

using AVEVA.IntegrationService.DataAPI.SDK.ApiClient;

using AVEVA.IntegrationService.DataAPI.SDK.Models;

using System;

using System.Data;

using System.Threading.Tasks;

namespace DataAPIExample

{

class Program

{

static async Task Main(string[] args)

{

// Configuration

string host = "https://your-server/integration/v1";

string accessToken = "your-access-token";

int waitingTime = 60;

// Determine authentication type

var authType = !string.IsNullOrEmpty(accessToken)

? AuthenticationType.Connect

: AuthenticationType.NTLM;

// Example 1: Health Check

Console.WriteLine("=== Health Check ===");

var healthCheckFactory = new HealthCheckClientFactory();

var healthClient = healthCheckFactory.CreateHealthCheckClient(host);

var healthStatus = await healthClient.HealthCheckAPI(host);

Console.WriteLine($"API Health: {healthStatus}");

if (healthStatus != System.Net.HttpStatusCode.OK)

{

Console.WriteLine("API is not healthy. Exiting...");

return;

}

// Example 2: Engineering Client

Console.WriteLine("\n=== Engineering Client ===");

var engineeringClient = DataApiClientFactory.CreateDataApiClient<EngineeringClient>(

host, authType, waitingTime, accessToken, null);

var dataSources = await engineeringClient.GetDataSources();

Console.WriteLine($"Found {dataSources.Count()} engineering datasources");

var objectInfo = await engineeringClient.GetObjectInfo(

"EngineeringDS",

"/SITE,/ZONE"

);

Console.WriteLine($"Retrieved {objectInfo.Rows.Count} engineering objects");

// Example 3: Excel Client

Console.WriteLine("\n=== Excel Client ===");

var excelClient = DataApiClientFactory.CreateDataApiClient<ExcelClient>(

host, authType, waitingTime, accessToken, null);

var excelFiles = await excelClient.GetExcels("ExcelDS", liveData: true);

foreach (var excel in excelFiles)

{

Console.WriteLine($"Excel: {excel.Name}");

}

var excelData = await excelClient.GetExcelData("ExcelDS", "Report.xlsx", liveData: true);

Console.WriteLine($"Excel data contains {excelData.Tables.Count} sheets");

// Example 4: Simulation Client

Console.WriteLine("\n=== Simulation Client ===");

var simulationClient = DataApiClientFactory.CreateDataApiClient<SimulationClient>(

host, authType, waitingTime, accessToken, null);

var simulations = await simulationClient.GetSimCentralSimulations("SimDS");

foreach (var sim in simulations)

{

Console.WriteLine($"Simulation: {sim.Name}");

var snapshots = await simulationClient.GetSimCentralSnapshots("SimDS", sim.Name);

Console.WriteLine($" Snapshots: {snapshots.Count}");

if (snapshots.Count > 0)

{

var schema = await simulationClient.GetSimCentralSchema("SimDS", sim.Name, snapshots[0]);

Console.WriteLine($" Schema tables: {schema.Tables.Count}");

}

}

// Example 5: SQL Client

Console.WriteLine("\n=== SQL Client ===");

var sqlClient = DataApiClientFactory.CreateDataApiClient<SqlClient>(

host, authType, waitingTime, accessToken, null);

var tables = await sqlClient.GetTables("SQLDS");

Console.WriteLine($"Found {tables.Rows.Count} SQL tables");

var employeeData = await sqlClient.GetTableData(

"SQLDS",

"Employees",

filter: "Department eq 'Engineering'"

);

Console.WriteLine($"Retrieved {employeeData.Rows.Count} employees");

// Example 6: ETAP Client

Console.WriteLine("\n=== ETAP Client ===");

var etapClient = DataApiClientFactory.CreateDataApiClient<ETAPClient>(

host, authType, waitingTime, accessToken, null);

var etapSchema = await etapClient.GetEtapSchema("ETAPDS");

Console.WriteLine($"ETAP Schema tables: {etapSchema.Tables.Count}");

var etapData = await etapClient.GetEtapData("ETAPDS");

Console.WriteLine($"ETAP Data tables: {etapData.Tables.Count}");

// Example 7: ERM Client

Console.WriteLine("\n=== ERM Client ===");

var ermClient = DataApiClientFactory.CreateDataApiClient<ERMClient>(

host, authType, waitingTime, accessToken, null);

var equipmentData = await ermClient.GetTableData("ERMDS", "Equipment");

Console.WriteLine($"Retrieved {equipmentData.Rows.Count} equipment records");

// Example 8: SignalR Pub/Sub

Console.WriteLine("\n=== SignalR Pub/Sub ===");

if (authType == AuthenticationType.Connect)

{

var signalRClient = await SignalRHubConnectionFactory.CreatePubSubClient(

HttpClientUtilities.GetHttpClientFactory(),

new HubConnectionManager(),

AuthenticationType.Connect,

host,

accessToken

);

signalRClient.MessagePublished += (sender, e) =>

{

Console.WriteLine($"Message received: AckId={e.Message.AckId}");

};

await signalRClient.Subscribe("EngineeringDS");

Console.WriteLine("Subscribed to EngineeringDS");

// Wait a bit to receive messages

await Task.Delay(2000);

// Unsubscribe

await signalRClient.Unsubscribe("EngineeringDS");

Console.WriteLine("Unsubscribed from EngineeringDS");

}

// Example 9: Post Data

Console.WriteLine("\n=== Post Data ===");

DataTable newData = new DataTable("Projects");

newData.Columns.Add("ProjectID", typeof(string));

newData.Columns.Add("Name", typeof(string));

newData.Columns.Add("Budget", typeof(decimal));

newData.Rows.Add("PRJ001", "New Project", 1000000.00);

var postResult = await sqlClient.PostTableData(

datasourceName: "SQLDS",

tableName: "Projects",

data: newData,

AckId: "",

Context: "{\"Operation\":\"Insert\"}",

Topic: "ProjectUpdates",

expiryDuration: 48

);

Console.WriteLine($"Posted data with AckId: {postResult.AcknowledgementId}");

// Example 10: Retrieve posted data by AckId

Console.WriteLine("\n=== Retrieve by AckId ===");

var retrievedData = await sqlClient.GetTableDataByAcknowledgementId(

"SQLDS",

postResult.AcknowledgementId

);

Console.WriteLine($"Retrieved {retrievedData.Rows.Count} rows from acknowledgement");

Console.WriteLine("\n=== Completed all operations ===");

}

}

}

Real-World Windows Forms Example

Based on the WinFormSample project pattern:

using AVEVA.IntegrationService.DataAPI.SDK;

using System;

using System.Threading.Tasks;

using System.Windows.Forms;

public partial class DataSourceForm : Form

{

private string _host = "https://your-server/integration/v1";

private string _connectToken = "your-token"; // or null/empty for NTLM

public DataSourceForm()

{

InitializeComponent();

}

private async void btnGetDataSources_Click(object sender, EventArgs e)

{

try

{

lblStatus.Text = "Loading...";

var client = DataApiClientFactory.CreateDataApiClient<EngineeringClient>(

host: _host,

authType: !string.IsNullOrEmpty(_connectToken)

? AuthenticationType.Connect

: AuthenticationType.NTLM,

waitingTimeInMinutesForLiveData: 60,

token: _connectToken,

hubCancellationToken: null

);

var dataSources = await client.GetDataSources();

dataGridView1.DataSource = dataSources;

lblStatus.Text = $"Loaded {dataSources.Count()} datasources";

}

catch (Exception ex)

{

MessageBox.Show($"Error: {ex.Message}", "Error",

MessageBoxButtons.OK, MessageBoxIcon.Error);

lblStatus.Text = "Error occurred";

}

}

private async void btnGetTables_Click(object sender, EventArgs e)

{

try

{

if (string.IsNullOrEmpty(txtDataSourceName.Text))

{

MessageBox.Show("Please enter a datasource name");

return;

}

lblStatus.Text = "Loading tables...";

var client = DataApiClientFactory.CreateDataApiClient<EngineeringClient>(

_host,

!string.IsNullOrEmpty(_connectToken)

? AuthenticationType.Connect

: AuthenticationType.NTLM,

60,

_connectToken,

null

);

var tables = await client.GetTables(txtDataSourceName.Text);

dataGridView1.DataSource = tables;

lblStatus.Text = $"Loaded {tables.Rows.Count} tables";

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Error");

lblStatus.Text = "Error occurred";

}

}

private async void btnGetTableData_Click(object sender, EventArgs e)

{

try

{

if (string.IsNullOrEmpty(txtDataSourceName.Text) ||

string.IsNullOrEmpty(txtTableName.Text))

{

MessageBox.Show("Please enter datasource and table names");

return;

}

lblStatus.Text = "Loading data...";

var client = DataApiClientFactory.CreateDataApiClient<EngineeringClient>(

_host,

!string.IsNullOrEmpty(_connectToken)

? AuthenticationType.Connect

: AuthenticationType.NTLM,

60,

_connectToken,

null

);

var data = await client.GetTableData(

txtDataSourceName.Text,

txtTableName.Text

);

dataGridView1.DataSource = data;

lblStatus.Text = $"Loaded {data.Rows.Count} rows";

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "Error");

lblStatus.Text = "Error occurred";

}

}

}

Related Links