# SyteLine IDO SOAP Web Service Client Generator

> Source: https://netray.co/tools/syteline-ido-soap-web-service-client-generator
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Free Tools

## Short answer

Generate a working C# console client and a PowerShell equivalent for the Mongoose IDO SOAP web service on on-premises SyteLine.

## Category

developer

## Erp

Infor SyteLine

## Audience

- Integration engineer
- SyteLine developer
- .NET developer

## Tool

**Kind:** template

**Output:** code

**Language:** csharp

**Fields:**

#### Service URL

**Key:** url

**Type:** text

**Default:** http://utilserver/IDORequestService/IDOWebService.asmx

**Help:** Confirm the .asmx path on your utility server; open it with ?WSDL to check.

#### User

**Key:** user

**Type:** text

**Default:** svc_integration

#### Environment variable holding the password

**Key:** pwd_env

**Type:** text

**Default:** SL_PASSWORD

#### Configuration name

**Key:** config

**Type:** text

**Default:** CSI_PROD

#### IDO to load

**Key:** ido

**Type:** text

**Default:** SLItems

#### Property list

**Key:** props

**Type:** text

**Default:** Item, Description, UM

#### Filter

**Key:** filter

**Type:** text

**Default:** Item LIKE 'PN-%'

#### Order by

**Key:** orderby

**Type:** text

**Default:** Item

#### Record cap (-1 = 200, 0 = all)

**Key:** recordcap

**Type:** number

**Default:** -1

#### IDO that publishes the method

**Key:** method_ido

**Type:** text

**Default:** UETItemChecks

#### Method name

**Key:** method

**Type:** text

**Default:** UETItemReorderCheckSp

#### Method input 1

**Key:** p1

**Type:** text

**Default:** PN-48213

#### Method input 2

**Key:** p2

**Type:** text

**Default:** MAIN

**Blocks:**

#### 1. C# console client (service reference named IDOWebService)

**Body:** // Add a service reference to {{url}}?WSDL with namespace IDOWebService.
using System;
using System.Data;
using System.ServiceModel;

class Program
{
    static void Main()
    {
        // Use BasicHttpSecurityMode.Transport when the URL is https.
        var binding = new BasicHttpBinding(BasicHttpSecurityMode.None) { MaxReceivedMessageSize = 10485760 };
        var client = new IDOWebService.DOWebServiceSoapClient(binding, new EndpointAddress("{{url}}"));

        string password = Environment.GetEnvironmentVariable("{{pwd_env}}");
        string token = client.CreateSessionToken("{{user}}", password, "{{config}}");

        // Session token, IDO, properties, filter, order by, post-query method, record cap
        DataSet ds = client.LoadDataSet(token, "{{ido}}", "{{props}}", "{{filter}}", "{{orderby}}", "", {{recordcap}});

        DataTable table = ds.Tables[0];
        foreach (DataRow row in table.Rows)
        {
            foreach (DataColumn col in table.Columns)
            {
                Console.Write(col.ColumnName + "=" + row[col] + "  ");
            }
            Console.WriteLine();
        }

        // CallMethod: parameters travel as XML, in method order. ByRef='Y' marks output parameters.
        // XML-escape any value that can contain < > & or quotes.
        string parms = "<Parameters>"
            + "<Parameter ByRef='N'>{{p1}}</Parameter>"
            + "<Parameter ByRef='N'>{{p2}}</Parameter>"
            + "<Parameter ByRef='Y'/>"
            + "<Parameter ByRef='Y'/>"
            + "</Parameters>";

        object rc = client.CallMethod(token, "{{method_ido}}", "{{method}}", ref parms);
        Console.WriteLine("Return value: " + rc);
        Console.WriteLine("Parameters after call: " + parms);
    }
}

#### 2. PowerShell equivalent (Windows PowerShell 5.1)

**Body:** # New-WebServiceProxy exists in Windows PowerShell 5.1, not in PowerShell 7.
$svc = New-WebServiceProxy -Uri '{{url}}?WSDL'
$cred = Get-Credential -UserName '{{user}}' -Message 'SyteLine password'
$token = $svc.CreateSessionToken($cred.UserName, $cred.GetNetworkCredential().Password, '{{config}}')

$ds = $svc.LoadDataSet($token, '{{ido}}', '{{props}}', "{{filter}}", '{{orderby}}', '', {{recordcap}})
$ds.Tables[0] | Format-Table -AutoSize

$parms = "<Parameters><Parameter ByRef='N'>{{p1}}</Parameter><Parameter ByRef='N'>{{p2}}</Parameter><Parameter ByRef='Y'/><Parameter ByRef='Y'/></Parameters>"
$ref = [ref]$parms
$rc = $svc.CallMethod($token, '{{method_ido}}', '{{method}}', $ref)
"Return value: $rc"
"Parameters after call: " + $ref.Value

**Notes:** Signatures follow the Mongoose IDO web service documentation: CreateSessionToken(user, password, configuration), LoadDataSet(token, IDO, properties, filter, order by, post-query method, record cap) and CallMethod(token, IDO, method, ref XML parameters). Verify the .asmx path on your server, check parameter names and order against the WSDL, and confirm the client class name Visual Studio generates from it (DOWebServiceSoapClient is typical for the DOWebService class). The default method is the custom example from the companion stored procedure generator; replace it with a real method on your IDO.

## Content

**Intro:** This generator produces a C# console client and a PowerShell script for the Mongoose IDO SOAP web service used by on-premises SyteLine 8, 9 and 10. It covers the three calls most integrations need: get a session token, load rows and call an IDO method.

**Sections:**

#### How to use it

**Body:** Point the service URL at the IDO web service on your utility server and open it with ?WSDL in a browser to confirm the path. In Visual Studio add a service reference to that WSDL with the namespace IDOWebService, which generates the DOWebServiceSoapClient class used in the code. Fill in the user, configuration, IDO, properties and filter, and keep the password in an environment variable or a secrets store, never in code. Run the load first with a small record cap, then try the method call against a test configuration.

**Bullets:**

- Record cap -1 returns 200 rows, 0 returns all rows, a positive number returns that many.
- Filters are SQL-style expressions on IDO properties.
- The post-query method argument is usually an empty string.

#### What each call does

**Body:** CreateSessionToken validates the user, password and configuration and returns a token string that every later call takes as its first argument. LoadDataSet runs the IDO's LoadCollection and returns a System.Data.DataSet, so results drop straight into a DataTable, a grid or a CSV writer. CallMethod invokes an IDO method; its parameters are an XML string of Parameter elements in method order, each with ByRef set to Y or N, and the same string comes back filled in with output values, which is why it is passed by ref. SaveDataSet, not generated here, handles inserts, updates and deletes from a DataSet.

#### Worked example

**Body:** With the defaults, LoadDataSet returns up to 200 items whose number starts with PN-, printing Item, Description and UM for each. The CallMethod block calls UETItemReorderCheckSp on UETItemChecks with PN-48213 and MAIN; after the call, the third Parameter element holds the quantity short and the fourth holds any message, and the return value is 0 on success. If the method fails, the return value is non-zero and the message parameter explains why, just as it would on a form.

#### Version notes

**Body:** The SOAP service is the older integration path. On SyteLine 10 / CSI 10 the IDO REST service is easier to call from modern tools, and cloud tenants go through ION API instead. Session tokens expire, so long-running services should request a new token when a call fails with an authentication error rather than caching one forever. PowerShell 7 removed New-WebServiceProxy; use Windows PowerShell 5.1 or the C# client. Use a dedicated integration user whose groups only allow the IDOs the integration needs.

**Cta:** If you would rather have your team ask SyteLine questions in plain English than maintain SOAP scripts, we can set up a private, read-only assistant on your own servers.

**Faq:**

#### Where is the SyteLine IDO web service?

**Answer:** On-premises it is hosted by the IDO Request Service on the utility server, typically under the IDORequestService virtual directory. Browse to the .asmx path with ?WSDL to confirm it responds; if it does not, check the IIS application and the configuration on that server before debugging your code.

#### What does record cap -1 mean in LoadDataSet?

**Answer:** Per the Mongoose documentation, -1 retrieves 200 records, 0 retrieves all records and a positive integer retrieves that many. Use -1 or a small number while testing and a filter that limits rows in production, because loading all rows of a large IDO through SOAP is slow and memory heavy.

#### How are output parameters returned by CallMethod?

**Answer:** The parameter XML is passed by reference. Mark output parameters with ByRef='Y'; after the call, the same XML string contains their values. Parse it with an XML reader and read the Parameter elements in order. The method's own return value comes back as the CallMethod result.

#### Should I use SOAP or REST for a new integration?

**Answer:** For new work on SyteLine 10 / CSI 10, the IDO REST service is usually simpler, works with any HTTP tool and is the path Infor develops further. SOAP remains fine for existing .NET integrations and for older SyteLine versions where REST is not available.

## Search terms

infor mongoose api, syteline web service, idowebservice createsessiontoken, syteline loaddataset example, mongoose soap callmethod, api usage examples, api documents examples, infor mongoose rest api

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
