0% found this document useful (0 votes)
109 views90 pages

EDS Technical Reference Guide 9.1

Uploaded by

imrich horvath
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
109 views90 pages

EDS Technical Reference Guide 9.1

Uploaded by

imrich horvath
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 90

ENTERPRISE Data Service

Technical Reference Guide

For Version 9.1


Confidentiality, Copyright Notice & Disclaimer

Due to a policy of continuous product development and refinement, TEOCO Ltd. (and its affiliates,
together “TEOCO”) reserves the right to alter the specifications, representation, descriptions and all
other matters outlined in this publication without prior notice. No part of this document, taken as a whole
or separately, shall be deemed to be part of any contract for a product or commitment of any kind.
Furthermore, this document is provided “As Is” and without any warranty.

This document is the property of TEOCO, which owns the sole and full rights including copyright.
TEOCO retains the sole property rights to all information contained in this document, and without the
written consent of TEOCO given by contract or otherwise in writing, the document must not be copied,
reprinted or reproduced in any manner or form, nor transmitted in any form or by any means: electronic,
mechanical, magnetic or otherwise, either wholly or in part.

The information herein is designated highly confidential and is subject to all restrictions in any law
regarding such matters and the relevant confidentiality and non-disclosure clauses or agreements
issued with TEOCO prior to or after the disclosure. All the information in this document is to be
safeguarded and all steps must be taken to prevent it from being disclosed to any person or entity other
than the direct entity that received it directly from TEOCO.

TEOCO and Netrac® are trademarks of TEOCO.

All other company, brand or product names are trademarks or service marks of their respective holders.

This is a legal notice and may not be removed or altered in any way.

COPYRIGHT © 2017 TEOCO LTD.

ALL RIGHTS RESERVED.

Your feedback is important to us: The TEOCO Documentation team takes many measures in order
to ensure that our work is of the highest quality.

If you found errors or feel that information is missing, please send your Documentation-related feedback
to Documentation@teoco.com

Thank you,

The TEOCO Documentation team


ANTLR 3 Licence
[The BSD Licence]
Copyright (c) 2003-2008, Terence Parr
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided
that the following conditions are met:
 Redistributions of source code must retain the above copyright notice, this list of conditions and
the following disclaimer.
 Redistributions in binary form must reproduce the above copyright notice, this list of conditions
and the following disclaimer in the documentation and/or other materials provided with the
distribution.
 Neither the name of the author nor the names of its contributors may be used to endorse or
promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

Change History
This table shows the change history of this guide:

Edition Date Reason

1 1 Jan 2017 First edition.


2 20 Sep 2017 Support for:
 Fine-grain Inclusion and Exclusion of Response data: data can be
selected via a new ‘Include’ alongside the existing ‘Exclude’.
 Impersonate User.
 MU-Node and Cell Renaming, and Neighbour Reparenting.
 New Parameters for Antenna Indexes and Carrier Allocations.
3 12 Dec 2017 Addition of Chapter 8: ‘Securing EDS with HTTPS’.
Addition of Section 1.5.1.1: ‘Setting Permissions for Multi-Technology in
the Config File’.
Table of Contents

Table of Contents
1 About the ENTERPRISE Data Service ........................................................... 7
1.1 Data Types Supported within the EDS ...................................................... 7
1.2 Backwards Compatibility with Previously Released Data Types ............. 10
1.3 New Data Types Added to this Release (9.1) ......................................... 11
1.4 Data Types Deprecated in this Release (9.1).......................................... 12
1.5 Special Changes in this Release (9.1) .................................................... 14
1.5.1 New Flexible Hierarchy for Property, Node, Cell and Antennas ................... 14
1.5.2 Impersonate User .......................................................................................... 15
1.5.3 Fine-grain Inclusion and Exclusion of Response data .................................. 15
1.5.4 New Parameters for Antenna Indexes and Carrier Allocations ..................... 15
1.5.5 New Operation Attribute for Neighbour Type Objects ................................... 15
1.5.6 MU-Node and Cell Renaming ........................................................................ 16
1.5.7 Neighbour Reparenting ................................................................................. 16
1.6 Native Co-ordinate System Support ........................................................ 16
1.7 Limitations of the EDS ............................................................................ 17

2 About the EDS Web Service Interface ......................................................... 19


2.1 EDS “Strongly Typed” Web Service Interface ......................................... 20
2.1.1 EDS “Strongly Typed” Service Contract Architecture .................................... 20
2.1.2 Contract Implementation ............................................................................... 20
2.1.3 Request Type Schemas ................................................................................ 22
2.1.4 Request Items................................................................................................ 24
2.1.5 Request Item Schemas ................................................................................. 26
2.1.6 Application Specific Data Types .................................................................... 28
2.1.7 AppDataType and RootEntityType Schemas ................................................ 32
2.1.8 Querying for Data .......................................................................................... 32
2.1.9 Query Result Caching.................................................................................... 33
2.1.10 Query Result Inclusion and Exclusion ......................................................... 33
2.1.11 Query Type Schemas .................................................................................. 35
2.1.12 Responses ................................................................................................... 38
2.1.13 Response Type Schemas ........................................................................... 39
2.1.14 Response Status ......................................................................................... 41
2.1.15 StatusType XML Schema ............................................................................ 42
2.2 EDS “Basic” Web Service Interface ....................................................... 43
2.2.1 EDS “Basic” Service Contract Architecture ................................................... 43
2.2.2 Contract Implementation ............................................................................... 44

3 Batch Processing via the EDS Web Service Interface ............................... 47

4 About the EDS REST Interface..................................................................... 51

5 EDS Simplified Query Notation .................................................................... 53


5.1 Query Enhancements in Recent Releases ............................................. 54
5.2 Supported Operations............................................................................. 55
5.3 Supported Attributes ............................................................................... 56

5
EDS Technical Reference Guide 9.1

5.4 About User Defined Fields ...................................................................... 59


5.4.1 User Defined Field Data Types ..................................................................... 60

6 Diagnosing Faults and Performance Monitoring ....................................... 61


6.1 Diagnosing Faults within the EDS ........................................................... 61
6.2 Manually Performing the EDS Database Setup ...................................... 61
6.3 Manually Changing the EDS Database Connection String ...................... 62
6.4 Performance Monitoring ......................................................................... 63
6.5 Accessing Performance Values .............................................................. 63
6.5.1 Accessing Performance Values with the REST Interface ............................. 64
6.5.2 Accessing Performance Values with the Web Service Interface .................. 65
6.5.3 Accessing Performance and Log Information with EDS Web Administration 66
6.5.4 Accessing Performance Values with Windows Performance Monitor ........... 66

7 EDS Request Response Samples ................................................................ 67


7.1 Creating Data within the EDS ................................................................. 67
7.2 Updating Data within the EDS ................................................................ 69
7.3 Deleting Data within the EDS .................................................................. 70
7.4 Querying Data within the EDS ................................................................ 71
7.5 Neighbour Type Objects: ‘Operation’ Attribute ........................................ 73

8 Securing EDS with HTTPS ........................................................................... 75


8.1 Introduction ............................................................................................. 75
8.1.1 Preparing the Server/Client ........................................................................... 75
8.1.2 Opening the Local Machine Certificate Store ................................................ 76
8.2 Creating a Trusted Root Certificate Authority .......................................... 76
8.3 EDS Service Certificates ........................................................................ 78
8.3.1 Background .................................................................................................... 78
8.3.2 Instructions .................................................................................................... 78
8.3.3 Client Certificates ........................................................................................... 79
8.4 Registering the HTTPS Ports with Windows ........................................... 80
8.4.1 Obtaining a Service Thumbprint .................................................................... 80
8.4.2 Instructions .................................................................................................... 80
8.5 Configuring EDS to Use HTTPS ............................................................. 81
8.5.1 Create an HTTPS Binding ............................................................................. 81
8.5.2 Create a Secure Service Behaviour .............................................................. 81
8.5.3 Update the EDS Endpoint Configurations with the new Behaviour and Binding
82
8.5.4 Update the WSDL Scheme ........................................................................... 82
8.5.5 Configure the SCHANNEL Registry Key to Permit Clients Registered in your
Certificate Store ......................................................................................................... 83
8.6 Testing your Configuration ...................................................................... 84
8.6.1 Confirm EDS Starts (Interactively) ................................................................. 84
8.6.2 Confirm that the HTTPS WSDL Endpoint Responds .................................... 84
8.6.3 Test a SOAP Call Using SoapUI ................................................................... 85
8.7 Example TEOCO.Presentation.Runtime.Config ...................................... 86
8.8 Example WCF Client Binding .................................................................. 89
8.9 Powershell 4.0 Script for Creating Self-signed Certificates ..................... 90

6
About the ENTERPRISE Data Service

1 About the ENTERPRISE Data Service

The ENTERPRISE Data Service (EDS) is a web service which provides several interfaces for
accessing and manipulating data from a pre-existing ENTERPRISE deployment. Its architecture
consists of two middle-tier service layers which are able to access a single ENTERPRISE database:
 Presentation Service – This service is responsible for communicating with the outside world and
offers either a traditional web service interface or a convenient REST interface for prototyping
queries or diagnosing faults.
 Persistence Service – This service is responsible for processing work items from the
presentation service and interacting with the back-end Oracle database. The persistence service
may be clustered if large concurrent access to the service is required, but it should be noted that
each instance will create a 10 user connection pool to the Oracle server.

The two services are attached to each other using a duplexed pair of message queues which allows for
either single server or multiple server deployments.

Note: A single server configuration is the default setting, but you are still able to run concurrent
persistent instances from the same server as long as they are attached to the same presentation
service.

1.1 Data Types Supported within the EDS


The major supported ENTERPRISE data types are listed in the following set of tables. These tables
incorporate all the currently supported data types, including the newly added types in this Release. For
a separate table showing the newly added types, see ‘New Data Types Added to this Release (9.1)’ on
page 11.

Note: For the complete list of EDS types, including those which have extensions from previous
releases, we recommend that you use the REST interface:

This table lists the major supported data types general to all products (ASSET and ASSET Backhaul*):

ENTERPRISE Type CRUD Support Technology Category Product

Project R - Config All


Location Object (Property) CRUD - Element All
Location Object Hierarchy R - Element All
Feeder CRU - Equipment All
Propagation Model R - Config All

(* Prior to 9.1, ASSET Backhaul was known as CONNECT.)

7
EDS Technical Reference Guide 9.1

This table lists the major supported data types specific to ASSET:

ENTERPRISE Type CRUD Support Technology Category Product

Propagation Model - see table above


Cellular Antenna R - Equipment ASSET
BTS Equipment R GSM Equipment ASSET
GSM Sub Cell Layer Definition CRU GSM Config ASSET
(see Note1)

GSM Carrier Layer Definition CRU GSM Config ASSET


(see Note1)

GSM Carrier Definition CRU GSM Config ASSET


(see Note1)

MSC (see Note1) CRUD GSM Element ASSET


BSC (see Note1) CRUD GSM Element ASSET
CellSite CRUD GSM Element ASSET
GSM Cell (see Note 2) CRUD GSM Element ASSET
GSM Repeater CRUD GSM Element ASSET
GSM Subcell RU GSM Element ASSET
WMSC CRUD UMTS Element ASSET
RNC CRUD UMTS Element ASSET
SGSN CRUD UMTS Element ASSET
PLMN Network CRU UMTS Element ASSET
NodeB (see Note 3) CRUD UMTS Element ASSET
UMTS Carrier Definition RU UMTS Config ASSET
UMTS Cell (see Note 4) CRUD UMTS Element ASSET
UMTS Repeater CRUD UMTS Element ASSET
Network Connection CRUD All Element ASSET
Logical Network Connection CRUD All Element ASSET
Cellular Network Connection CRUD All Element ASSET
LTE Node CRUD LTE Element ASSET
LTE Cell (see Note 4) CRUD LTE Element ASSET
LTE Repeater CRUD LTE Element ASSET
LTE MME CRUD LTE Element ASSET
LTE Carrier Definition RU LTE Config ASSET
LTE PF Scheduler MUG R LTE Config ASSET
Wi-Fi Node CRUD Wi-Fi Element ASSET
Wi-Fi Cell (see Note 4) CRUD Wi-Fi Element ASSET
Wi-Fi Carrier Definition RU Wi-Fi Config ASSET
Terminal Types R GSM/UMTS/LTE/Wi-Fi Config ASSET
Bearers R GSM/UMTS/LTE Config ASSET
Services R GSM/UMTS/LTE/Wi-Fi Config ASSET
MU-Node CRUD All Element ASSET
LTE eICICPattern CRU LTE Config ASSET
LTE Multipath Channel Model RU LTE Config ASSET
Neighbour Limit R - Config ASSET

8
About the ENTERPRISE Data Service

Notes:

1. Delete support is deliberately prohibited on MSC, BSC and other indicated elements to prohibit
accidental removal of any attached GSM sites or configuration data. This restriction will be
removed in future release once EDS implements role based security.

2. As part of their definition, GSM Cells include Sub-Cells, Carrier Allocations, Antennas and other
equipment assignments. Refer to WSDL for more detail.

3. As part of their definition, NodeBs include UMTS Carrier assignments, Antennas and other
equipment assignments. Refer to WSDL for more detail.

4. As part of their definition, UMTS, LTE and Wi-Fi Cells include carrier, antenna and feeder
assignments, as well as other parameters. Refer to WSDL for more detail.

This table lists the major supported data types specific to ASSET Backhaul*:

ENTERPRISE Type CRUD Support Technology Category Product

MW Antenna CRU - Equipment ASSET Backhaul


Radio Equipment CRU - Equipment ASSET Backhaul
Band CRU - Config ASSET Backhaul
Point to Point Link CRUD - Element ASSET Backhaul
Frequency Band R - Config ASSET Backhaul
Back To Back Passive -
CRUD Element ASSET Backhaul
Repeater
Dual Polar Link CRUD - Element ASSET Backhaul
Dual Polar Sub Link CRUD - Element ASSET Backhaul
Multi Radio Link CRUD - Element ASSET Backhaul
Multi Radio Sub Link CRUD - Element ASSET Backhaul
Point to Multi Point Carrier CRUD - Element ASSET Backhaul
Point to Multi Point Hub CRUD - Element ASSET Backhaul
Point to Multi Point Link CRUD - Element ASSET Backhaul
Point to Multi Point Sector CRUD - Element ASSET Backhaul
Reflector Passive Repeater CRUD - Element ASSET Backhaul
Reflector Repeater CRUD - Element ASSET Backhaul
Modulation Type CRU - Config ASSET Backhaul
T/I Objectives CRU - Config ASSET Backhaul

(* Prior to 9.1, ASSET Backhaul was known as CONNECT.)

9
EDS Technical Reference Guide 9.1

1.2 Backwards Compatibility with Previously Released Data Types


There are some significant changes in this release. The transition to support for multiple-technology
nodes (MU-Node) is an example. ASSET 9.1 now allows for both Cells and Physical Antennas to have
a location (LocationObject) that is different to that of the logical MU-Node within the hierarchy.

Logical Antennas are now part of the Property (LocationObject) instead of the individual Node
elements. In the context of backwards compatibility where a Legacy Node type is presented containing
a list of Logical Antennas, the list of Logical Antennas will be obtained via interrogation of its child Cells.
The Logical Index will no longer be unique to an instance of a Node.

For more information, see ‘Special Changes in this Release (9.1)’ on page 14.

There are some newly added data types for this release. See ‘New Data Types Added to this Release
(9.1)’ on page 11.

In order to maintain backwards compatibility with previously defined data types from earlier releases,
there are some deprecations. See ‘Data Types Deprecated in this Release (9.1)’ on page 12.

The following table may help to clarify the behaviour of the backwards compatibility:

Operation Element EDS Behaviour

Read Node (Any) < 9.1 Backwards compatibility will only show Logical Antennas that are
attached to Cells owned by Node (for GSM, see next row).
Only Feeders that are attached to Cells located on the same Property
as the Node will be visible.
Only Cells that are co-located on the same Property as the Node will
be visible.
It will still be possible to see all cells via the explicit EDS cell type.
Read Cell (GSM) < 9.1 Backwards compatibility will only show Logical Antennas that are
attached to Cell Layers.
Only Logical Antennas that are co-located on the same Property as
the GSM Cell will be visible (to prevent duplicate lists).
Create/ Cell (Any) < 9.1 Cell location will be the same as the parent node (MU-Node).
Update
New GSM Logical Antennas are permitted as long as the Logical
Index is unique to the Property of that Cell.
Updates to Logical Antennas are allowed and will be applied to the
appropriate Property.
Replace Logical Antennas/ < 9.1 Where EDS has been instructed to replace an Antenna or Feeder list
Feeders (Any) it will need to filter out any elements which are not co-located on the
same Property as the Node (or GSM cell). This is to protect the
database from accidental deletion of remote Antennas/Feeders by
legacy EDS types.
EDS will not be allowed to delete Logical Antennas via a legacy Node
or Cell type. Where a reference to a Cell Feeder is removed, it will be
detached from the Antenna, but the Logical Antenna will not be
affected.
Delete Cell (Any) < 9.1 Cell deletion should behave almost the same as it has done
previously. EDS will detach any references to remote Logical
Antennas.
GSM Cell deletion will remove cellular references to Logical
Antennas, but it will not delete remote Logical Antennas from the
Property.

10
About the ENTERPRISE Data Service

Operation Element EDS Behaviour

Replace Cell (Any) < 9.1 Where EDS has been instructed to replace a Cell list owned by a
given Node/CellSite, it will need to filter out any Cells which are not
co-located on the same Property as the Node (or GSM cell). This is
to protect the database from accidental deletion of remote Cells by
legacy EDS types.
Create/ Cell (Any) 9.1 EDS will validate the specified Property location for existence. If it is
Update not specified, the default will be the same as for the parent node.
Create/ Node (Any) <= 9.1 Node location functionality should remain unaffected. Any newly
Update created cells beneath the Node will implicitly share the same location
as the Node.
New Logical Antennas are permitted as long as the Logical Index is
unique to the Property of that Node.

1.3 New Data Types Added to this Release (9.1)


This table summarises the new data types that have been added to the version 9.1 release:

ENTERPRISE Type CRUD Technology Category Product


Support

LocationObjectHierarchyv91Type R - Element All

LocationObjectv91Type CRUD - Element All

Servicev91Type R GSM/UMTS/LTE/Wi-Fi Config ASSET

ServiceMultiTechv91Type R GSM/UMTS/LTE/Wi-Fi Config ASSET

TerminalTypeMultiTechv91Type R GSM/UMTS/LTE/Wi-Fi Config ASSET

Terminalv91Type R GSM/UMTS/LTE/Wi-Fi Config ASSET

GSMCellv91Type CRUD GSM Element ASSET

GSMSubCellv91Type RU GSM Element ASSET

GSMRepeaterv91Type CRUD GSM Element ASSET

LTECellv91Type CRUD LTE Element ASSET

LTERepeaterv91Type CRUD LTE Element ASSET

LTECarrierv91Type RU LTE Config ASSET

UMTSCellv91Type CRUD UMTS Element ASSET

UMTSRepeaterv91Type CRUD UMTS Element ASSET

WiFiCellv91Type CRUD Wi-Fi Element ASSET

MUNodev91Type CRUD All Element ASSET

LTEeICICPatternv91Type CRU LTE Config ASSET

LTEMultiPathChannelModelv91Type RU LTE Config ASSET

NeighbourLimitv91Type R - Config ASSET

11
EDS Technical Reference Guide 9.1

1.4 Data Types Deprecated in this Release (9.1)


This table summarises the data types that have been deprecated in the version 9.1 release.

(In general, this applies to data types that were introduced before version 8.1 and that have had two or
more generations of evolution, or are unable to retain forwards compatibility with this release.)

ENTERPRISE Type Deprecated in 9.1 Oldest Supported Version from 9.1 onwards

AntennaPattern AntennaPatternv801

AntennaPatternv80 AntennaPatternv801

Band Bandv80

Bandv70 Bandv80

BSC BSCv80

BSCv70 BSCv80

BTSEquip BTSEquipv81

CellLayer CellLayerv70

CellSite CellSitev81

CellSitev70 CellSitev81

CellSitev80 CellSitev81

CellSitev801 CellSitev81

GSMCell GSMCellv81

GSMCellv70 GSMCellv81

GSMCellv80 GSMCellv81

GSMCellv801 GSMCellv81

GSMRepeater GSMRepeaterv81

GSMRepeaterv80 GSMRepeaterv81

LocationObjectHierarchy LocationObjectHierarchyv81

LocationObjectHierarchyv70 LocationObjectHierarchyv81

LocationObjectHierarchyv80 LocationObjectHierarchyv81

LocationObjectHierarchyv801 LocationObjectHierarchyv81

LocationObject LocationObjectv81

LocationObjectv70 LocationObjectv81

LocationObjectv80 LocationObjectv81

LocationObjectv801 LocationObjectv81

LTECell LTECellv81

LTECellv801 LTECellv81

LTENode LTENodev81

LTENodev80 LTENodev81

LTENodev801 LTENodev81

12
About the ENTERPRISE Data Service

ENTERPRISE Type Deprecated in 9.1 Oldest Supported Version from 9.1 onwards

LTERepeater LTERepeaterv81

LTERepeaterv80 LTERepeaterv81

MSC MSCv80

MSCv70 MSCv80

NodeB NodeBv81

NodeBv70 NodeBv81

NodeBv80 NodeBv81

NodeBv801 NodeBv81

TerminalTypeGSM_UMTS TerminalTypeGSM_UMTSv81

RadioEquip RadioEquipv80

RadioEquipv70 RadioEquipv80

RNC RNCv70

ServiceType Servicev81

TerminalType Terminalv81

UMTSCell UMTSCellv81

UMTSCellv70 UMTSCellv81

UMTSRepeater UMTSRepeaterv81

UMTSRepeaterv80 UMTSRepeaterv81

13
EDS Technical Reference Guide 9.1

1.5 Special Changes in this Release (9.1)

1.5.1 New Flexible Hierarchy for Property, Node, Cell and Antennas
There are some significant changes in the ASSET 9.1 release. The transition to support for multiple-
technology nodes (MU-Node) is an example. (Some of this is already mentioned in Backwards
Compatibility with Previously Released Data Types on page 10.)

MU-Node: The MU-Node is a new network element that can contain cells of a single technology or cells
of multiple technologies. In effect, it subsumes the role of the Site/Node objects (such as BTS, Node B
or eNodeB) that were present prior to 9.1.

In other words, the MU-Node aggregates the various technology-specific sites/nodes into a single
object which has multi-technology capability. So, depending on which technologies you are using in
your project, you can decide whether you want:
 The MU-Nodes to contain cells of a only one specific technology (this is known as Fixed)
- or -
 The MU-Nodes to contain cells of any or all technologies (this is known as Variable)

Remote Cell Properties and Remote Cell Antennas: ASSET 9.1 allows for both Cells and Physical
Antennas to have a location (LocationObject) that is different to that of the logical MU-Node within the
hierarchy. This enables a physical separation of Node and Cell and also enables Cells to propagate
through Antennas from any Property.

This means that Logical Antennas are now stored as part of the Property (LocationObject).
Previously, they were stored as part of the cell-level object (for GSM), or the node-level object (for all
other technologies). In the context of backwards compatibility where a Legacy Node type is presented
containing a list of Logical Antennas, the list of Logical Antennas will be obtained via interrogation of its
child Cells. The Logical Index will no longer be unique to an instance of a Node.

For more information, see the What’s New section in the ENTERPRISE SUITE Help or the
ENTERPRISE Release Overview and Business Impacts document.

1.5.1.1 Setting Permissions for Multi-Technology in the Config File


By default, the settings in the config file only allow you to create a Fixed MU-Node. This means that you
cannot create a Variable MU-Node.

Also, by default, you cannot create any Remote Cell Properties and Remote Cell Antennas.

You can see these default settings in this section of the config file:

<MultiTechNodeConfiguration allowVariable="false" allowFixed="true"


allowRemoteCellAntennas="false" allowRemoteCellProperties="false"/>

If you want to change any or all of these settings, you can edit this section of the config file according to
your requirements. If required, ‘allowFixed’ and ‘allowVariable’ can both be set to ‘true’.

14
About the ENTERPRISE Data Service

1.5.2 Impersonate User


This is a new feature to allow EDS to act as an ‘ASSET Logged-in User’.

This relates to Update, Create and Delete requests.

In the Persistence config file you can now turn ‘on’ and ‘off’ the ability to impersonate an ASSET User
and set the Default Impersonator User / Impersonation Group that you want the EDS Service to
Impersonate, this user must exist as a genuine ASSET User and be a member of the supplied Group.

If the supplied Impersonation Group does not exist or the supplied Impersonate User is not in the
Supplied Impersonation Group, an error message is issued and the service shuts down.

The default state for Impersonate User is ‘off’.

When Impersonate User is turned ‘on’ you can also impersonate a user at the time of Request, that is,
for each Update, Create and Delete request you send to EDS, you can also send a user name and this
will take precedence over the Impersonate User from the config file. Again, the user must be a valid
ASSET User and a member of the Impersonation Group defined in the config file.

1.5.3 Fine-grain Inclusion and Exclusion of Response data


This release of EDS now allows for data to be selected as part of the response via a new ‘Include’
behaviour alongside the existing ‘Exclude’ functionality. Furthermore, it is now possible to select almost
any element to match under this criteria rather than a specific subset of “list-items” which were only
available in the past.

1.5.4 New Parameters for Antenna Indexes and Carrier Allocations


There are some new parameters: ‘CreateNewAntennas’, ‘ForceAntennaCreationOnConflict’ and
‘AddUnassignedCarrier’. See the table under the Request Items heading in Section 2.1.4.

1.5.5 New Operation Attribute for Neighbour Type Objects


A new optional attribute 'Operation' is now available for the NeighbourType Object, which can be used
when making changes to a Neighbour list.

The valid values for this attribute are:


 ‘Create’ - The supplied Neighbours will be added to the Cell’s existing list of outward Neighbours.
 ‘Update’ - The supplied Neighbours data will be used to update the contents of the Cell’s
corresponding outward Neighbours.
 ‘Delete’ - The supplied Neighbours will be deleted from the Cell’s List of outward Neighbours.
 ‘Replace’ - This replaces the entire list of outward Neighbours for a Cell with a new list. This is
also the default action if no attribute value is supplied and will process the list as it did in previous
versions (see below) to allow for backwards compatibility.

Prior to this change, the only way to update the Cell’s outward Neighbour list via the NeighbourType
was to pass in the entire list of outward Neighbours for a Cell and EDS would determine the required
Inserts, Updates and Deletes by checking the differences with the original list of outward Neighbours.

This new 'Operation' attribute will allow a user to pass in a single Neighbour or a list of Neighbours and
specify if this list should be inserted, updated or deleted from the original list.

This provides a much cleaner and more efficient way of updating a Cell’s outward Neighbours.

The 'Operation' attribute is optional. If omitted, it the default action will be ‘Replace’ as explained above.

For an example of a Soap envelope using the new 'Operation' attribute, see Neighbour Type Objects:
‘Operation’ Attribute on page 73.
15
EDS Technical Reference Guide 9.1

1.5.6 MU-Node and Cell Renaming


A new attribute ‘niid’ (new unique object identifier) has been added for the MU-Node and all Cell Types.

This is to enable MU-Node and Cell renaming via an Update request.

For Nodes and Cells you simply need to supply a value in the ‘niid’ attribute prior to the update and the
object will be renamed under the current rule set.

This option is only valid for an update of an existing Object.

The ‘niid’ attribute is listed in the table in Supported Attributes in Section 5.3.

1.5.7 Neighbour Reparenting


A new attribute ‘niid’ (new unique object identifier) has been added for the Neighbour Type.

This is to enable Neighbour re-parenting via an Update request.

For reparenting you simply need to supply an ‘niid’ on the NeighbourType and the ‘Operation’ attribute
must be set to “Update”.

The update will be rejected if the ‘niid’ is not found or if the ‘niid’ already has Neighbours attached.

The ‘niid’ attribute is listed in the table in Supported Attributes in Section 5.3.

1.6 Native Co-ordinate System Support


EDS natively supports the same coordinate system as ENTERPRISE through the use of the open-
source GDAL library. All element types which previously showed an absolute Lon/Lat coordinate now
include a secondary “stored” coordinate which contains the actual database value.

Note: You need to choose which coordinate to supply to EDS when updating locations, and in the case
of the “stored” coordinate, you need to supply an appropriate EPSG code denoting which Geodetic or
Project system the coordinate uses.

This fragment from a GSM cell shows how the coordinates appear:

<gsm80:Antenna Index="1">
<gsm:AbsLocation EPSG="4269">
<Longitude>-97.74209949</Longitude>
<Latitude>30.27021592</Latitude>
</gsm:AbsLocation>
<gsm80:Location Relative="Relative" EPSG="0">
<X>1.051E-05</X>
<Y>8.92E-06</Y>
<Z>0</Z>
</gsm80:Location>
</gsm80:Antenna>

The “Location” element will contain the actual value that is stored within the database, and the
“AbsLocation” element will use this stored coordinate, and, depending whether it is absolute or relative,
perform the appropriate conversion to create an antenna location, including the location of the property.

When updating or creating antennas with EDS v80 types (or later), you must decide whether to specify
the AbsLocation or the Location. EDS will accept both, but the Location element will take precedence.

Note: A valid EPSG code must be supplied to EDS. The list of available EDS codes can be found at
http://spatialreference.org/ref/epsg/

16
About the ENTERPRISE Data Service

1.7 Limitations of the EDS


The EDS does not support the following:
 ENTERPRISE Filters - the EDS employs its own query system for identifying and extracting data
from the database.
 ENTERPRISE Security - all interactions with the EDS are performed on a trust basis. The basic
assumption is that the EDS will be deployed as a system-to-system solution rather than as an
access point. Therefore the EDS will let a user modify any supported data type which has write
facility. The EDS is not intended to be made public to an internet access point, and is intended to
be strictly under network security governance.
 ENTERPRISE "Diff" tables - The EDS does not interact with the multi-user Diff tables offered
within ENTERPRISE. All modifications made to the database occur under a named user ID called
EDS_SOA_Client, and changes are made directly to the master tables within the database.
 Database support - The EDS is written specifically against the appropriate version of the
ENTERPRISE database schema, and will not work without some modification on an older (or
newer) release of the product. As a result, the EDS will validate against the database version in
order to ensure compliance.

For information regarding EDS hardware and software requirements, please consult the latest Release
Notes.

17
EDS Technical Reference Guide 9.1

18
About the EDS Web Service Interface

2 About the EDS Web Service Interface

There are two service contracts available:


 “Strongly Typed”
 “Basic”

The “Strongly Typed” Web Service Interface is described on page 20.

The “Basic” Web Service Interface is described on page 43.

(For a comparison between the two types, see ‘EDS “Basic” Service Contract Architecture’ on page 43.)

19
EDS Technical Reference Guide 9.1

2.1 EDS “Strongly Typed” Web Service Interface


This section deals with the service contract and objects that make up the primary interface for
manipulating data with the EDS.

The base endpoint address for this interface (WS-HTTP) is:

http://{server}:{port}/Aircom/EDS/WS

A Microsoft-compatible “netTCP” endpoint is:

netTCP://{ server}:8734/Aircom/EDS/TCP

Its WSDL can be retrieved from this URI:

http://{server}:8730/Aircom/EDS/WS?wsdl

2.1.1 EDS “Strongly Typed” Service Contract Architecture


The EDS web service uses a request/response architecture based on a simplified subset of a reference
pattern created by the Liberty Alliance, a web service standards group. Specifically, it is based on the
"Data Services Template" implementation.

The service contract uses a principle known as “operations as data”, and therefore the EDS only offers
four basic methods for data manipulation that all accept one parameter:
 CREATE
 UPDATE
 QUERY
 DELETE

Each request contains facets which describe the data to be queried or manipulated, as well as
additional metadata which controls how the service will behave in response to the request. For
example, the query request will contain metadata describing the query, as well as paging parameters to
indicate which part of the result set to return.

2.1.2 Contract Implementation


A simplified view of the service interface is provided in this picture to illustrate the operation signature
of the four methods described in the above section.

All operations use XmlSerializationFormat.


[ServiceContract(Namespace=NamespaceTypes.tns, Name="EDS")]
public interface IEDSService
{
[OperationContract]
CreateResponseType Create(CreateRequestType data);

[OperationContract]
QueryResponseType Query(QueryRequestType data);

[OperationContract]
ModifyResponseType Modify(ModifyRequestType data);

[OperationContract]
DeleteResponseType Delete(DeleteRequestType data);

[OperationContract]
SupportedTypes QueryableTypes();

20
About the EDS Web Service Interface

[OperationContract]
SupportedTypes WriteableTypes();

[OperationContract]
SystemStatus Status();

[OperationContract]
HistoricalSystemStatus HistoricalStatus();
}
The four ancillary methods on the service contract perform the following:
 QueryableTypes - returns an enumeration indicating all available data types within the EDS
 WriteableTypes - a subset of the previous enumeration
 Status & HistoricalStatus - used for performance monitoring

Each request operation shares a common request base type, and elements which are specific to that
operation.

This picture shows the hierarchy for these four request types:

Request Type Hierarchy

Each request type has a unique ItemID used to correlate the message through the system, a collection
of sub-items which allow for batching of multiple data types within a single request, and, depending on
the operation, a ResultQuery which allows for the inclusion of a query or queries after the data
manipulation has completed.

21
EDS Technical Reference Guide 9.1

This table describes the common properties contained in the picture:

Property Name Type Description

itemID GUID A unique identifier used to correlate the request through the
system between the service internal layers and the client.
TimeoutOverride Int The EDS is configured to timeout any request which takes
longer than 45 seconds to complete. This can occur when
the server is busy, or the request is complex and therefore
requires more time to process. By supplying a timeout value,
the presentation service will wait for the new interval, or until
it receives a response from the server.
Note: Client developers should be aware of this value, and
choose a suitable override if you anticipate that the request
will take longer than the default value.
Runsequentially bool By default EDS will run each request item in a separate
thread (up to 8). Setting this to true will instruct EDS to run
multiple request items in the same thread.
DeleteItems List<DeleteItemType> A collection of request items which allow for multiple objects
or object types to be deleted within a single request.
ModifyItems List<ModifyItemType> A collection of request items which allow for multiple types of
objects to be updated within a single request.
ResultQuery List<QueryItemBaseType> Once a modification or create request has completed, you
might want to request a dataset in order to save round trips.

2.1.3 Request Type Schemas


This section contains schema extracts for the types discussed in Contract Implementation on
page 20.

All Requests derive from the same base Request EWSRequestBaseType.

The schema extract for EWSRequestBaseType is:

<xs:complexType name="EWSRequestBaseType" abstract="true">


<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="q1:itemID"
xmlns:q1="http://www.aircominternational.com/contract/Util/2009/10"/>
<xs:element minOccurs="0" maxOccurs="1" name="masterID" type="q2:guid"
xmlns:q2="http://microsoft.com/wsdl/types/"/>
</xs:sequence>
</xs:complexType>

2.1.3.1 RequestBaseType
The schema extract for RequestBaseType is:
<xs:complexType name="RequestBaseType" abstract="true">
<xs:complexContent mixed="false">
<xs:extension base="q1:EWSRequestBaseType"
xmlns:q1="http://www.aircominternational.com/contract/EWS/2011/01">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="TimeoutOverride" type="xs:int"/>
<xs:element minOccurs="0" maxOccurs="1" name="RunSequentially" type="xs:boolean"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

22
About the EDS Web Service Interface

2.1.3.2 CreateRequestType
The schema extract for CreateRequestType is:

<xs:complexType name="CreateRequestType">
<xs:complexContent mixed="false">
<xs:extension base="q1:RequestBaseType"
xmlns:q1="http://www.aircominternational.com/contract/EDS/DST/2009/10">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="CreateItems"
type="tns:CreateItemType"/>
<xs:element minOccurs="0" maxOccurs="unbounded" name="ResultQuery"
type="tns:QueryItemBaseType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.3.3 ModifyRequestType
The schema extract for ModifyTypeRequest is:
<xs:complexType name="ModifyRequestType">
<xs:complexContent mixed="false">
<xs:extension base="q2:RequestBaseType"
xmlns:q2="http://www.aircominternational.com/contract/EDS/DST/2009/10">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="ModifyItems"
type="tns:ModifyItemType"/>
<xs:element minOccurs="0" maxOccurs="unbounded" name="ResultQuery"
type="tns:QueryItemBaseType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.3.4 DeleteRequestType
The schema extract for DeleteRequestType is:
<xs:complexType name="DeleteRequestType">
<xs:complexContent mixed="false">
<xs:extension base="q15:RequestBaseType"
xmlns:q15="http://www.aircominternational.com/contract/EDS/DST/2009/10">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="DeleteItems"
type="tns:DeleteItemType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.3.5 QueryRequestType
The schema extract for QueryRequestType is:
<xs:complexType name="QueryRequestType">
<xs:complexContent mixed="false">
<xs:extension base="q16:RequestBaseType"
xmlns:q16="http://www.aircominternational.com/contract/EDS/DST/2009/10">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="QueryItems"
type="tns:QueryItemType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

23
EDS Technical Reference Guide 9.1

2.1.4 Request Items


Each request type (discussed in Contract Implementation on page 20) decomposes into a list of request
items. These request items contain the main detail of the request, and each request item can only be
applicable for a single supported object type. This means that if you want to include a batch request that
may optionally want to manipulate several object types within a single round trip, you would need to use
multiple request items.

Note: The EDS will prohibit requests which ask for more than 500 rows of data within a single request,
therefore multiple request items may be used to return larger row sets through the use of pagination.

This picture illustrates the structure of the request items:

Request Items structure

24
About the EDS Web Service Interface

The hierarchy of request items follows a similar pattern to that of their parent containing types. Each
request item contains its own common unique itemID to correlate the sub-request through the system;
however, their contract signature varies from that of the request in order to be more specific to the
operation they are representing. This table describes the properties illustrated in the picture:

Property Name Type Description

itemID GUID A unique identifier used to correlate the request through the system
between the service internal layers and the client.
NewData AppDataType A collection whose type is defined by the objectType parameter which
represents the actual data being created or modified by the request.
Within this collection would be the actual telecoms specific data, such
as NodeBs, Sectors and so on.
objectType enum An enumeration of predefined values which indicate the supported
object types by the system.
Select QrySelectType A query indicating which objects to retrieve from the system by allowing
for parameter sets and simple predicate logic.
CreateIfNotFound bool A flag indicating that if a modification query (Select) does not retrieve a
value, the system will attempt to create the item instead.
count int Indicates that the query will return no more than a given number of
rows, which is useful for pagination requests.
Note: The maximum number of rows is 500.
offset int Allows you to request data from a different position within a rowset,
which is useful for pagination requests.
IgnoreQueryAndDoBul bool This parameter is used to instruct EDS to perform a batch update when
kUpdate supplied a block of data rather than use the query provided to locate
the record to be updated. Setting the parameter to true forces EDS to
use the IID and the BVID of the supplied object to find a match.
In other words, rather than requiring an EDS selection query to locate
data to update, EDS will implicitly use the dataset it has been handed
to locate the corresponding item within the database.
exclusion string A pipe (“|”) delimited string specifying sections of the EDS datatype to
ignore. This can be used to create more efficient fetches from the
service. For more information, see Query Result Inclusion and
Exclusion on page 33.
inclusion string A pipe (“|”) delimited string specifying sections of the EDS datatype to
include. This can be used to create more efficient fetches from the
service. For more information, see Query Result Inclusion and
Exclusion on page 33.
projection string Allows EDS to transform the result of one type into a custom output.
Currently this feature is not available.
SparseListUpdate bool Instructs EDS to preserve existing list entries if not included during an
UpdateRequest. Default behaviour is to replace.
FileItem FileItem Instructs EDS to look for a URI location to either read from or write to
depending on the request.
If a URI is supplied then an optional Impersonation item is available to
pass user credentials via as Impersonation property
Impersonation Impersonation Allows EDS to access a URI using these credentials. To access the
URI, a Domain name, User name and Password must be supplied that
has access to that URI
CreateNewAntennas bool For 9.1 Cell Types, the Logical Antenna is exposed on the Feeders
within the Cells. In previous versions you could set Logical Antenna
Index to ‘-1’ and the system would generate the next unique index.
In 9.1, this is still possible, but only if you pass in ‘CreateNewAntennas’
set to ‘true’. (For Create and Update requests.)

25
EDS Technical Reference Guide 9.1

Property Name Type Description

ForceAntennaCreation bool In previous versions, if you tried to add a new Logical Antenna via a
OnConflict legacy (pre-9.1) Node/CellSite, and that new LogicalAntenna Index
already exists, then the update will fail, which prevents the original
Logical Antenna becoming accidentally overwritten.
In 9.1, if you do not know the correct new index you can pass in
‘ForceAntennaCreationOnConflict’ set to ‘true’, so that if the index
already exists, the system will generate the next unique index and add
the Logical Antenna. (This is for Create and Update requests only)
AddUnassignedCarrier bool In previous versions, when an LTE, UMTS and Wi-Fi Cell type is added
or updated and the Carrier that is selected in the Cell has not been
assigned to the Parent Node, then EDS will reject the transaction.
In 9.1, you can set ‘AddUnassignedCarrier’ to ‘true’, so that if the
Carrier specified is a valid Carrier, the Carrier will be allocated to the
Parent Node and the transaction will succeed. (This is for Create and
Update requests only.)
ImpersonateUser string Allows EDS to act as an ‘ASSET Logged-in User’. This relates to
Update, Create and Delete requests.
In the Persistence config file you can now turn ‘on’ and ‘off’ the ability
to impersonate an ASSET User and set the Default Impersonator User
/ Impersonation Group that you want the EDS Service to Impersonate,
this user must exist as a genuine ASSET User and be a member of the
supplied Group.
If the supplied Impersonation Group does not exist or the supplied
Impersonate User is not in the Supplied Impersonation Group, an error
message is issued and the service shuts down.
The default state for Impersonate User is ‘off’.
When Impersonate User is turned ‘on’ you can also impersonate a user
at the time of Request, that is, for each Update, Create and Delete
request you send to EDS, you can also send a user name and this will
take precedence over the Impersonate User from the config file. Again,
the user must be a valid ASSET User and a member of the
Impersonation Group defined in the config file.

2.1.5 Request Item Schemas

2.1.5.1 DataItemBaseType
The schema extract for DataItemBaseType is:
<xs:complexType name="DataItemBaseType">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="q5:itemID"
xmlns:q5="http://www.aircominternational.com/contract/Util/2009/10"/>
</xs:sequence>
</xs:complexType>

2.1.5.2 CreateItemType
The schema extract for CreateItemType is:
<xs:complexType name="CreateItemType">
<xs:complexContent mixed="false">
<xs:extension base="tns:DataItemBaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="NewData" type="tns:AppDataType"/>
</xs:sequence>
<xs:attribute ref="q8:objectType"
xmlns:q8="http://www.aircominternational.com/contract/EDS/DST/2009/10"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

26
About the EDS Web Service Interface

2.1.5.3 DeleteItemType
The schema extract for DeleteItemType is:
<xs:complexType name="DeleteItemType">
<xs:complexContent mixed="false">
<xs:extension base="tns:DataItemBaseType">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="objectType"
type="q11:QueryableTypes"
xmlns:q11="http://www.aircominternational.com/Schemas/Query/2009/09"/>
<xs:element minOccurs="0" maxOccurs="1" name="Select" type="q12:QrySelectType"
xmlns:q12="http://www.aircominternational.com/Schemas/Query/2009/09"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.5.4 QueryItemBaseType
The schema extract for QueryItemBaseType is:
<xs:complexType name="QueryItemBaseType">
<xs:complexContent mixed="false">
<xs:extension base="tns:DataItemBaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Select" type="q13:QrySelectType"
xmlns:q13="http://www.aircominternational.com/Schemas/Query/2009/09"/>
</xs:sequence>
<xs:attribute form="qualified" name="objectType" type="q14:QueryableTypes"
use="required" xmlns:q14="http://www.aircominternational.com/Schemas/Query/2009/09"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.5.5 QueryItemType
The schema extract for QueryItemType is:
<xs:complexType name="QueryItemType">
<xs:complexContent mixed="false">
<xs:extension base="tns:QueryItemBaseType">
<xs:attribute name="count" type="xs:int" use="required"/>
<xs:attribute name="offset" type="xs:int" use="required"/>
<xs:attribute name="projection" type="xs:string"/>
<xs:attribute name="exclusion" type="xs:string"/>
<xs:attribute name="inclusion" type="xs:string"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.5.6 ModifyItemType
The schema extract for ModifyItemType is:
<xs:complexType name="ModifyItemType">
<xs:complexContent mixed="false">
<xs:extension base="tns:DataItemBaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Select" type="q3:QrySelectType"
xmlns:q3="http://www.aircominternational.com/Schemas/Query/2009/09"/>
<xs:element minOccurs="0" maxOccurs="1" name="NewData" type="tns:AppDataType"/>
</xs:sequence>
<xs:attribute form="qualified" name="objectType" type="q4:QueryableTypes"
use="required" xmlns:q4="http://www.aircominternational.com/Schemas/Query/2009/09"/>
<xs:attribute form="qualified" name="CreateIfNotFound" type="xs:boolean"
use="required"/>
<xs:attribute form="qualified" name="IgnoreQueryAndDoBulkUpdate" type="xs:boolean"
use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

27
EDS Technical Reference Guide 9.1

2.1.6 Application Specific Data Types


A request may include an AppDataType, where applicable. This type contains the actual collection of
data which is supported by the system. The structure of the AppDataType class contains a collection of
RootEntityType, which represents the base type for all network data supported by the system.

The RootEntityType describes the minimum amount of data which all supported elements must contain:
 iid – Unique name of the element
 bvid – Owning project of the element
 eid – Internal DB key of the element

The following diagrams show the supported types from EDS.

2.1.6.1 Common Types

28
About the EDS Web Service Interface

2.1.6.2 Configuration Types

29
EDS Technical Reference Guide 9.1

2.1.6.3 Equipment Types

2.1.6.4 GSM Types

30
About the EDS Web Service Interface

2.1.6.5 LTE and Wi-Fi Types

2.1.6.6 UMTS Types

31
EDS Technical Reference Guide 9.1

2.1.7 AppDataType and RootEntityType Schemas


This section contains the XML schema fragments for the AppDataType and the RootEntityType.

Note: For brevity, none of the derived types from RootEntityType are included.

2.1.7.1 AppDataType
The schema extract for AppDataType is:
<xs:complexType name="AppDataType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="AppData"
type="q9:RootEntityType"
xmlns:q9="http://www.aircominternational.com/Schemas/CommonTypes/2009/05"/>
</xs:sequence>
</xs:complexType>

2.1.7.2 RootEntityType
The schema extract for RootEntityType is:
<xs:complexType name="RootEntityType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="Security"
type="tns:SecurityInfo"/>
</xs:sequence>
<xs:attribute form="qualified" name="iid" type="xs:string"/>
<xs:attribute form="qualified" name="bvid" type="xs:string"/>
<xs:attribute form="qualified" name="eid" type="xs:int"/>
</xs:complexType>

2.1.8 Querying for Data


Data may be selected using a QrySelectType, which contains an expression allowing the EDS to select
data indicated by the objectType against one or more attributes using predicate logic (and, or and so
on).

The QrySelectType acts as a starting point to build a more complex query; however, there are three
types of query to choose from:
 Simple text query (QrySimpleTextType) – This query uses a shorthand notation in order to build
complex queries. Internally, it produces the same result as a structured complex query, but
spares the client from using the schema structures to create the query. It is a more convenient
form to use; a text string is supplied for the query expression which a parser validates and the
expression tree is assembled.
 Simple data type expression query (QryListElementType) – These are most convenient when
the client wishes to retrieve all contents from the host DB for a given type.
 List type expression query (QrySimpleListType) – This allows the client to specify a list of iid’s
and bvid’s to the interface to retrieve.
 Structured complex query (QryAndPredicateType, QryOrPredicateType) – These queries are a
composite tree of types which allow recursion to build a tree of rules in order to select data, and
invariably start with either an “And” or an “Or” expression type in order to begin the tree. It is also
possible to request a single attribute (QryAttributeBaseType) or user defined field
(QryUserDefinedFieldType) query using this approach. Despite the complexity of assembling
queries using this approach, all types, expressions and operations are backed by the Web
Service schema, thus preventing clients from choosing incorrect elements or expressions.

32
About the EDS Web Service Interface

This picture illustrates the different query types available and some of their relationships to indicate their
recursive nature:

Query Types available in the EDS

2.1.9 Query Result Caching


By default, EDS will cache certain shared equipment or configuration types (for example, antennas or
projects) to yield better performance when fetching data. This may occasionally interfere when new
data has been added externally to EDS, for example through ENTERPRISE or directly into the
database. If the expected data does not appear in EDS, you can try disabling the cache temporarily for
the query you are supplying. This can be done by setting the “OverrideCacheDefault” element to false
in the via the UseQueryCache attribute.

Important: It is recommended to use this feature if you are bulk-fetching many rows of data from EDS.

2.1.10 Query Result Inclusion and Exclusion


By default, when returning a result for a given type, EDS will assemble the full element as defined by its
XML schema definition – assuming the underlying data exists. It is possible to instruct EDS to either
include or exclude certain segments of an element’s XML hierarchy by using these features. This can
significantly improve EDS performance, as well as reducing data volume, especially if the client only
requires a sparse object.

The following notes apply to both include and exclude functionality:

2.1.10.1 ‘Include’
 By specifying the include keyword (“inclusion”) on the service contract, EDS only selects the
elements you specify, or the prerequisite path to the elements if contained within a sub
component such as Cells or Antennas for example.
 Any ‘Include’ instruction will take priority over an ‘Exclude’ instruction if both appear in the same
request.
 Irrespective of the path(s) specified in an ‘Include’, EDS will always attempt to emit “iid” and
“bvid” attributes in the output data although it is possible to create “unusual” EDS output
configurations that may be rejected upon subsequent input of the same data back into EDS.
 If an ‘Include’ fails to match any appropriate elements, EDS will output a minimal type containing
just the iid and bvid.

33
EDS Technical Reference Guide 9.1

2.1.10.2 ‘Exclude’
 ‘Exclude’ behaves in the opposite way to ‘Include’, because it only subtracts elements where a
matching path exists and thereby preserving the elements around it.
 Most elements support both ‘Exclude’ and ‘Include’ whereas in the previous EDS releases only
“sub-list” groups such as Cells, Antennas or CustomFields were permitted.
 It is possible to create invalid EDS configurations using ‘Exclude’ that may be rejected due to
validation failure if the same structure is used for subsequently performing an EDS ‘Create’ or
‘Update’.

2.1.10.3 Syntax
To use either feature, the client may simply name the element(s) they wish to include or exclude and
EDS will attempt to match them while assembling the result following a query. Multiple inclusions or
exclusions may be specified using the pipe "|" delimiter; sub-list exclusions are referenced using the "/".

The feature supports limited wildcards being present in the pattern as well as regular expressions:
 To use a wildcard, the client may include an asterisk “*” as part of the pattern for example
“/Cells/*”. If the asterisk is omitted then the rule would not necessarily traverse to the descendent
parameters beneath each cell.
 To specify a regular expression, the pattern must include angular braces around the expression
itself “{expr}”. It is still possible to separate multiple patterns using the pipe “|” delimiter.

Note: Regarding the usage of regular expressions, they are expressed literally against the path being
evaluated, not hierarchically (for instance where ‘Include’ will select ancestors on a path such as
/cells/feeders). This means that if a regular expression were “{a.*}” for example, it would select all
elements starting with “A” (case insensitive) at any level where it is permitted to traverse.

For best results with usage of this feature it is worth combining them with the more traditional syntax for
ease of use, for example “/cells/feeders/*|{a.*}”

This table shows some example exclusions:

This instruction: Will give this result:

Security Skips construction of the common Security element.


Security|CustomFields Skips construction of the common Security and User
Defined Fields element.
Security|Cells/Security|Cells/SubCells Skips construction of the common Security element
on a CellSite and the security element on its attached
Cells as well as the SubCell.
Cells/Carrier|Cells/Resources|Cells/HSDPA|Cells/HSUPA Skips construction of the Carriers on attached UMTS
Cells within a NodeB, the Cell resources and the Cell
HSPA parameters.
{Cells/c.*} Skips construction of all elements beneath the Cell
beginning with “c” using a regular expression
Cells Excludes parent element Cells
Cells/* Includes parent element Cells but truncates list of
Cells to iid/bvid.

34
About the EDS Web Service Interface

This table shows some example inclusions:

This instruction: Will give this result:

Security/* Includes only Security element and its descendents.


Security/*|CustomFields/* Includes only the common Security and User Defined
Fields elements.
Cells/Carrier/*|Cells/Resources/*|Cells/HS Includes only the Carriers on attached UMTS Cells within
a NodeB, the Cell resources and the Cell HSPA and
HSUPA parameters.
{security}|Cells Matches only the Security element on both the root and
cell level.

Important: The ‘Query Result Inclusion and Exclusion’ feature is available to all interfaces supported by
EDS (SOAP, REST, Loader). However, it is strongly recommended that you experiment with the syntax
using the REST interface for easiest visualisation of the result.

2.1.11 Query Type Schemas

2.1.11.1 QryBaseType
The schema extract for QryBaseType is:
<xs:complexType name="QryBaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="OverrideCacheDefault">
<xs:complexType>
<xs:attribute default="false" name="UseQueryCache" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>

2.1.11.2 QrySelectType
The schema extract for QrySelectType is:
<xs:complexType name="QrySelectType">
<xs:complexContent mixed="false">
<xs:extension base="tns:QryBaseType">
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element minOccurs="0" maxOccurs="1" name="Type"
type="tns:QryListElementType"/>
<xs:element minOccurs="0" maxOccurs="1" name="Not"
type="tns:QryNotPredicateType"/>
<xs:element minOccurs="0" maxOccurs="1" name="And"
type="tns:QryAndPredicateType"/>
<xs:element minOccurs="0" maxOccurs="1" name="Attribute"
type="tns:QryAttributeBaseType"/>
<xs:element minOccurs="0" maxOccurs="1" name="Extension"
type="tns:QryExtensionPredicateType"/>
<xs:element minOccurs="0" maxOccurs="1" name="Simple" type="tns:QrySimpleTextType"/>
<xs:element minOccurs="0" maxOccurs="1" name="Or" type="tns:QryOrPredicateType"/>
</xs:choice>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

35
EDS Technical Reference Guide 9.1

2.1.11.3 QrySimpleTextType
The schema extract for QrySimpleTextType is:
<xs:complexType name="QrySimpleTextType">
<xs:complexContent mixed="false">
<xs:extension base="tns:QryBaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Query" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.11.4 QryAttributeBaseType
The schema extract for QryAttributeBaseType is:
<xs:complexType name="QryAttributeBaseType">
<xs:complexContent mixed="false">
<xs:extension base="tns:QryBaseType">
<xs:attribute name="op" type="tns:QryOperationType" use="required"/>
<xs:attribute name="value" type="xs:string"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.11.5 QryUserDefinedFieldType
The schema extract for QryUserDefinedFieldType is:
<xs:complexType name="QryUserDefinedFieldType">
<xs:complexContent mixed="false">
<xs:extension base="q1:QryBaseType"
xmlns:q1="http://www.aircominternational.com/Schemas/Query/2009/09">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="CustomFieldGroup"
type="xs:string"/>
<xs:element minOccurs="1" maxOccurs="1" form="unqualified" name="CustomFieldType"
type="tns:QryUserDefinedFieldGroupType"/>
</xs:sequence>
<xs:attribute name="name" type="tns:QryUserDefinedFieldAttributes" use="required"/>
<xs:attribute name="op" type="q1:QryOperationType" use="required"/>
<xs:attribute name="value" type="xs:string"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.11.6 QryAndPredicateType
The schema extract for QryAndPredicateType is:
<xs:complexType name="QryAndPredicateType">
<xs:complexContent mixed="false">
<xs:extension base="tns:QryBaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="lhs" type="tns:QrySelectType"/>
<xs:element minOccurs="0" maxOccurs="1" name="rhs" type="tns:QrySelectType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

36
About the EDS Web Service Interface

2.1.11.7 QryOrPredicateType
The schema extract for QryOrPredicateType is:
<xs:complexType name="QryOrPredicateType">
<xs:complexContent mixed="false">
<xs:extension base="tns:QryBaseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="lhs" type="tns:QrySelectType"/>
<xs:element minOccurs="0" maxOccurs="1" name="rhs" type="tns:QrySelectType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.11.8 QrySimpleListType
The schema extract for QrySimpleListType is:

<xs:complexType name="QrySimpleListType">
<xs:complexContent mixed="false">
<xs:extension base="tns:QryBaseType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element minOccurs="0" maxOccurs="1" name="Item" type="tns:ListItemType"/>
<xs:element minOccurs="0" maxOccurs="1" name="NetworkItem" type="tns:ListNetworkItemType"/>
<xs:element minOccurs="0" maxOccurs="1" name="NbrItem" type="tns:ListNbrItemType"/>
</xs:choice>
</xs:sequence>
</xs:extension>
/xs:complexContent>
</xs:complexType>

The schema extract for ListItemType is:


<xs:complexType name="ListItemType">
<xs:attribute ref="q1:iid"
xmlns:q1="http://www.aircominternational.com/Schemas/CommonTypes/2009/05"/>
<xs:attribute ref="q2:bvid"
xmlns:q2="http://www.aircominternational.com/Schemas/CommonTypes/2009/05"/>
<xs:attribute ref="q3:eid"
xmlns:q3="http://www.aircominternational.com/Schemas/CommonTypes/2009/05"/>
</xs:complexType>

The schema extract for ListNetworkItemType is:


<xs:complexType name="ListNetworkItemType">
<xs:complexContent mixed="false">
<xs:extension base="tns:ListItemType">
<xs:attribute name="NetworkDiscriminator" type="q4:NetworkDiscriminatorType"
xmlns:q4="http://www.aircominternational.com/Schemas/CommonTypes/2013/03"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

The schema extract for ListNbrItemType is:


<xs:complexType name="ListNbrItemType">
<xs:complexContent mixed="false">
<xs:extension base="tns:ListItemType">
<xs:attribute name="NbrTechDiscriminator" type="q5:NbrTechDiscriminatorType"
xmlns:q5="http://www.aircominternational.com/Schemas/CommonTypes/2013/03"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

37
EDS Technical Reference Guide 9.1

2.1.12 Responses
Each of the operations (Create, Query, Update, and Delete) must return a response meeting the
requirements of the request and embedded request items. Reciprocally, the structure of the response
contracts contains sub-elements in order to pair with the request items.

Additionally, each response will contain Status elements which indicate the overall and partial success
of the request; this element also includes any error detail raised by the service. This picture shows the
structure of the responses:

Response structure in the EDS

All four responses share a common base type of ResponseType, but the Create and Modify responses
are derived from a DataResponseType in order to support the ResultQuery if supplied by their request.
The QueryResponseType does not share this base as its collection, although through the Data property
will also indicate where the data has come from inside the rowset.

Note: The collection’s Data and ItemData are all essentially lists of AppDataType on page 28. The
DataType class provides an extension to this type by indicating from the query it was asked to execute
how many rows are remaining and where the next offset begins.

38
About the EDS Web Service Interface

This table summarizes the properties within the response hierarchy:

Property Name Type Description

itemIDRef GUID Matching ID to the request which the client supplied used to
correlate a request to a response.

Status StatusType An attached object which indicates the success of the


overall and sub components of the request items.
Data List<DataType> A collection of DataType objects, produced by a query
response.
ItemData List<ItemDataType> Similar to Data, but does not include any pagination
information. It is intended that a ResultQuery will focus on
the object which was just modified, rather than ask for a fully
built rowset.
nextOffset int An indication that if you want to page the rowset, you should
start from this position.
remaining int An indication as to how many rows are remaining in the
rowset.
timeStamp DateTime A timestamp indicating when the response was sent.

2.1.13 Response Type Schemas

2.1.13.1 ResponseType
The schema extract for ResponseType is:
<xs:complexType name="ResponseType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Status" type="tns:StatusType"/>
</xs:sequence>
<xs:attribute form="qualified" name="itemIDRef" type="q3:guid" use="required"
xmlns:q3="http://microsoft.com/wsdl/types/"/>
</xs:complexType>

2.1.13.2 DataResponseBaseType
The schema extract for DataResponseBaseType is:
<xs:complexType name="DataResponseBaseType">
<xs:complexContent mixed="false">
<xs:extension base="q3:ResponseType"
xmlns:q3="http://www.aircominternational.com/contract/Util/2009/10">
<xs:attribute name="timeStamp" type="xs:dateTime" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.13.3 DataResponseType
The schema extract for DataResponseType is:
<xs:complexType name="DataResponseType">
<xs:complexContent mixed="false">
<xs:extension base="q18:DataResponseBaseType" xmlns:q18="http://
www.aircominternational.com/contract/EDS/DST/2009/10">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="ItemData"
type="tns:ItemDataType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

39
EDS Technical Reference Guide 9.1

2.1.13.4 DeleteResponseType
The schema extract for DeleteResponseType is:
<xs:complexType name="DeleteResponseType">
<xs:complexContent mixed="false">
<xs:extension base="q19:ResponseType"
xmlns:q19="http://www.aircominternational.com/contract/Util/2009/10"/>
</xs:complexContent>
</xs:complexType>

2.1.13.5 CreateResponseType
The schema extract for CreateResponseType is:
<xs:complexType name="CreateResponseType">
<xs:complexContent mixed="false">
<xs:extension base="tns:DataResponseType"/>
</xs:complexContent>
</xs:complexType>

2.1.13.6 ModifyResponseType
The schema extract for ModifyResponseType is:
<xs:complexType name="ModifyResponseType">
<xs:complexContent mixed="false">
<xs:extension base="tns:DataResponseType"/>
</xs:complexContent>
</xs:complexType>

2.1.13.7 QueryResponseType
The schema extract for QueryResponseType is:
<xs:complexType name="QueryResponseType">
<xs:complexContent mixed="false">
<xs:extension base="q21:DataResponseBaseType"
xmlns:q21="http://www.aircominternational.com/contract/EDS/DST/2009/10">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Data" type="tns:DataType"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.13.8 ItemDataType
The schema extract for ItemDataType is:
<xs:complexType name="ItemDataType">
<xs:complexContent mixed="false">
<xs:extension base="tns:AppDataType">
<xs:attribute ref="q10:itemIDRef"
xmlns:q10="http://www.aircominternational.com/contract/Util/2009/10"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

2.1.13.9 DataType
The schema extract for DataType is:
<xs:complexType name="DataType">
<xs:complexContent mixed="false">
<xs:extension base="tns:ItemDataType">
<xs:attribute name="remaining" type="xs:int" use="required"/>
<xs:attribute name="nextOffset" type="xs:int" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

40
About the EDS Web Service Interface

2.1.14 Response Status


The status type is a composite type which allows responses to contain an outer overall status of the
request and individual statuses which map to the request items. This picture shows the structure of the
StatusType:

Structure of Response Status Types in the EDS

41
EDS Technical Reference Guide 9.1

This table describes the properties of the StatusType:

Property Name Type Description

refvalue GUID Matching id to the request which was supplied by the client. If this is the
outer StatusType, then the refvalue correlates to the Request itemID. If it
is an embedded status item it correlates to the RequestItem.
Code StatusCode An enumeration representing all possible values which the EDS might
return. The outer status item will always be one of these values:
 OK - the request and all request items executed correctly
 Partial - some of the request items failed to execute. Check the
embedded status responses
 Failed - the request and all of its embedded items failed to execute.
Check the comments field for details
comment String A textual error message indicating more details regarding a failure.
StatusList List<StatusType> A collection of sub-status items used to correlate against individual
request items.

2.1.15 StatusType XML Schema


The schema for StatusType is:
<xs:complexType name="StatusType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="Status" type="tns:StatusType"
/>
<xs:element minOccurs="0" maxOccurs="1" name="comment" type="xs:string" />
</xs:sequence>
<xs:attribute name="code" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ActionNotAuthorized" />
<xs:enumeration value="AllReturned" />
<xs:enumeration value="DataTooLong" />
<xs:enumeration value="DoesNotExist" />
<xs:enumeration value="EmptyRequest" />
<xs:enumeration value="ExistsAlready" />
<xs:enumeration value="ExtensionNotSupported" />
<xs:enumeration value="Failed" />
<xs:enumeration value="FormatNotSupported" />
<xs:enumeration value="InvalidData" />
<xs:enumeration value="InvalidExpires" />
<xs:enumeration value="InvalidItemIDRef" />
<xs:enumeration value="InvalidObjectType" />
<xs:enumeration value="InvalidSelect" />
<xs:enumeration value="InvalidSetID" />
<xs:enumeration value="InvalidSetReq" />
<xs:enumeration value="ItemIDDuplicated" />
<xs:enumeration value="ResultQueryNotSupported" />
<xs:enumeration value="MissingCredentials" />
<xs:enumeration value="MissingDataElement" />
<xs:enumeration value="MissingExpiration" />
<xs:enumeration value="MissingItemID" />
<xs:enumeration value="MissingNewDataElement" />
<xs:enumeration value="MissingObjectType" />
<xs:enumeration value="MissingSelect" />
<xs:enumeration value="NewOrExisting" />
<xs:enumeration value="NoMoreObjects" />
<xs:enumeration value="NoMultipleAllowed" />
<xs:enumeration value="NoMultipleResources" />
<xs:enumeration value="NoSuchTest" />
<xs:enumeration value="ObjectTypeMismatch" />
42
About the EDS Web Service Interface

<xs:enumeration value="OK" />


<xs:enumeration value="PaginationNotSupported" />
<xs:enumeration value="Partial" />
<xs:enumeration value="TimeOut" />
<xs:enumeration value="UnexpectedError" />
<xs:enumeration value="UnspecifiedError" />
<xs:enumeration value="UnsupportedObjectType" />
<xs:enumeration value="Warning" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute xmlns:q5="http://microsoft.com/wsdl/types/" name="ref" type="q5:guid"
use="required" />
<xs:attribute xmlns:q6="http://microsoft.com/wsdl/types/" form="qualified"
name="masterIDRef" type="q6:guid" />
</xs:complexType>

2.2 EDS “Basic” Web Service Interface


This section deals with the service contract and objects that make up the primary interface for
manipulating data with the EDS.

The base endpoint address for this interface (WS-HTTP) is:


http://{server}:{port}/Aircom/EDSBasic/WS

A Microsoft-compatible “netTCP” endpoint is:


netTCP://{ server}:8634/Aircom/EDSBasic/TCP

Its WSDL can be retrieved from this URI:


http://{ server}:8630/Aircom/EDSBasic/WS?wsdl

2.2.1 EDS “Basic” Service Contract Architecture


The EDS “Basic” interface has a simplified contract architecture to help reduce the amount of code that
is produced by its WSDL definition, but still follows the same architecture as the original.

Its service contract architecture is almost identical to that of the “Strongly Typed” interface however it
does not supply data types describing the ENTERPRISE data model within its WSDL definition. This is
useful when you want to create a more minimal client integration, or whereby your client cannot
correctly handle the data type stubs necessary to use the typed interface. Furthermore effort has been
made to streamline the use of attribute, or external namespace declarations within the XML signature of
this interface to further simplify client interaction.

In place of requiring strongly typed data when serving requests, the EDS Basic interface uses an
opaque XML stream where ENTERPRISE element data is passed directly rather than using the code
classes produced by the WSDL as in the original service.

XML validation is done using the appropriate schema in the samples folder of the installed product.

The service contract uses a principle known “as operations as data”, and therefore the EDS only offers
four basic methods for data manipulation that all accept one parameter:
 CREATE
 UPDATE
 QUERY
 DELETE

Each request contains facets which describe the data to be queried or manipulated, as well as
additional metadata which controls how the service will behave in response to the request. For
example, the query request will contain metadata describing the query, as well as paging parameters to
indicate which part of the result set to return.

43
EDS Technical Reference Guide 9.1

2.2.2 Contract Implementation


A simplified view of the service interface is provided in this picture to illustrate the operation signature
of the methods described in Service Contract Architecture on page 43.

All operations use XmlSerializationFormat.


[ServiceContract(Namespace = BasicNamespaceTypes.tns, Name = "EDSBasic")]
public interface IEDSBasicService
{
[OperationContract]
BasicCreateResponseType Create (BasicCreateRequestType data);

[OperationContract]
BasicQueryResponseType Query (BasicQueryRequestType data);

[OperationContract]
BasicModifyResponseType Modify (BasicModifyRequestType data);

[OperationContract]

BasicDeleteResponseType Delete (BasicDeleteRequestType data);

[OperationContract]
SupportedTypes QueryableTypes ();

[OperationContract]
SupportedTypes WriteableTypes ();
}

The two ancillary methods on the service contract perform the following:
 QueryableTypes - returns an enumeration indicating all available data types within the EDS
 WriteableTypes - a subset of the previous enumeration

44
About the EDS Web Service Interface

Each request operation shares a common request base type, and elements which are specific to that
operation.

This picture shows the hierarchy for these request types:

BasicRequest Type Hierarchy

Each request type has a unique ItemID used to correlate the message through the system, a collection
of sub-items which allow for batching of multiple data types within a single request, and, depending on
the operation, a ResultQuery which allows for the inclusion of a query or queries after the data
manipulation has completed.

In all other respects, the information is the same as for EDS “Strongly Typed” Web Service Interface in
Section 2.1 on page 20.

45
EDS Technical Reference Guide 9.1

46
Batch Processing via the EDS Web Service Interface

3 Batch Processing via the EDS Web Service Interface

To make processing or large datasets within the EDS Web Service Interface more efficient, three
features have been added:
 RunSequentially – Instructs EDS to execute all “requestitems”, within a single request serially
rather than concurrently.
 FileItem – Request from EDS an XML file containing your data.
 InputFile – Supply EDS with an XML file containing your data.

Note: You will need to set an appropriate timeout to correctly use these features;. As you are potentially
providing EDS with more data to process, you will need to set a larger interval. You may also need to
structure the size of the data volume more appropriately to ensure continuous throughput without
timeout.

3.1.1.1 RunSequentially
“RunSequentially” is a new optional parameter that allows the user to specify that all operations
contained within a single “request” take place in the same thread. By default EDS will run up to 10
threads to process data throughput. Each ModifyItems, CreateItems, DeleteItems and QueryItems entry
will usually run within a different thread. For example, if a large request contains 50 ModifyItems then
they will be spread across all threads to attempt to speed the data throughput. This is not necessarily a
good way to utilise EDS depending on your server configuration, as it may cause unnecessary
database thrashing while each thread competes for database access.

Setting RunSequentially to true will force EDS to run each of the ModifyItems requests consecutively in
the same thread.

This means that a user can pass different types of data in a single request and ensure the order in
which they are processed, such as adding LocationObjectTypes before CellSiteTypes, and
CellSiteTypes before GSMCellTypes.

3.1.1.2 FileItem
This can only be used for QueryItems and is used to write large datasets to a passed in directory
location to receive the XML data rather than stream its entire payload XML via its interface.

<ns:QueryItems ns:objectType="LocationObjectType" exclusion="Security" count="100" offset="0">


<ns1:itemID>C7B970A6-E0A4-4782-973D-3835AE656F77</ns1:itemID>
<ns:Select>
<ns4:Simple>
<ns4:OverrideCacheDefault UseQueryCache="false"/>
<ns4:Query>bvid="Bob"</ns4:Query>
</ns4:Simple>
</ns:Select>
<ns:FileItem>
<URI>\\MyServer\MyShare</URI>
<Impersonate>
<Domain>bob</Domain>
<User>brian.oliver</User>
<Password>bob</Password>
</Impersonate>
</ns:FileItem>
</ns:QueryItems>

Note: The URI element must be a fully qualified path to a directory; a filename should not be passed.

47
EDS Technical Reference Guide 9.1

3.1.1.3 InputFile
This can only be used for DeleteItems and is used to read large datasets from a passed in file location
to read the XML data from rather than stream its entire payload XML via its interface.

<ns:DeleteItems>
<ns1:itemID>D7B970A6-E0A4-4782-973D-3835AE656F77</ns1:itemID>
<ns:objectType>LocationObjectType</ns:objectType>
<ns:Select>
<ns4:InputFile>
<ns4:URI>\\MyServer\MyShare</ns4:URI>
<ns4:Impersonate>
<ns4:Domain>adomain </ns4:Domain>
<ns4:User>user</ns4:User>
<ns4:Password>password</ns4:Password>
</ns4:Impersonate>
</ns4:InputFile>
</ns:Select>
</ns:DeleteItems>

The URI element is either a fully qualified path to an EDS XML file, or a fully qualified path to a directory
containing one or more EDS XML files.

If a single file has been supplied then EDS will process just that file, but if a directory has been supplied
then all files of .XML type will be processed from that directory.

For both FileItem and InputFile the URI is followed by an Impersonate element containing Domain,
User and Password.

This is used when the application does not have access to a file or directory, like a file on a server, in
which case a valid domain name, user name and password must be supplied that has access to that
file/directory.

This file processing method can be used on QueryItems via FileItem element, DeleteItems via the
InputFile element and ModifyItems and CreateItems within the FileLoadType (as described in the
next section).

Security Note: By default the EDS SOAP and REST interfaces are using an unencrypted HTTP
socket for transmission of data. If you plan on sending access credentials to EDS in order to manipulate
files you should consider configuring EDS to use HTTPS transport level encryption. Alternatively you
can grant the EDS “Presentation Service” component permission to access a remote file location via
your Windows application server using the “Service (services.msc)” control panel. If you would like
more information on using either method of securely file access then please contact Support.

48
Batch Processing via the EDS Web Service Interface

3.1.1.4 FileLoadType
A new “dummy” object type called FileLoadType has been created as a means of passing a URI (file
path) to the persistence service. This makes passing large amounts of XML data more efficient as the
payload only contains a few hundred bytes, and can resemble the following:

<ns:ModifyItems ns:objectType="LocationObjectType" ns:SparseListUpdate="false"


ns:CreateIfNotFound="true" ns:IgnoreQueryAndDoBulkUpdate="true">
<ns1:itemID>C7B970A6-E0A4-4782-973D-3835AE656F79</ns1:itemID>
<ns:NewData>
<ns:AppData xsi:type="co81:FileLoadType" ns5:bvid="UK">
<co81:FileItem>
<URI>\\MyServer\MyShare\LocationObjecttypes.xml</URI>
<Impersonate>
<Domain>adomain</Domain>
<User>user</User>
<Password>pass</Password>
</Impersonate>
</co81:FileItem>
<co81:AllowedOperations>ReadWrite</co81:AllowedOperations>
</ns:AppData>
</ns:NewData>
</ns:ModifyItems>

This type is ignored by the other operations and cannot be queried or deleted, it is only available to the
ModifyItem and the CreateItem request types.

The FileLoadType uses another new query item, FileItem as described above.

In this example the LocationObjectType has been specified as the objectType, which instructs EDS to
only process objects of this type. So if a directory is supplied, EDS will read all .XML files but will only
process objects of supplied type and ignore any others. So if you supply an objectType of
LocationObjectv81Type but then supply a file containing LocationObjectTypes then the
LocationObjectTypes will be ignored.

Attributes:

IgnoreQueryAndDoBulkUpdate="?":

IgnoreQueryAndDoBulkUpdate=”false” is not a valid option as this is a bulk update and setting this to
false will result in an error.

SparseListUpdate="?" and CreateIfNotFound="?":

Will operate as normal.

bvid=”?”:

If bvid is supplied then all of the eids (object’s DB key) will be removed from the input and the project
will be replaced with bvid specified project (the same functionality as the EDS loader).

49
EDS Technical Reference Guide 9.1

50
About the EDS REST Interface

4 About the EDS REST Interface

The REST interface on the EDS is a lightweight means of testing or debugging issues with the service;
however, it can also be used for application development. The only other significant difference is that
whilst the EDS Web Service interfaces use a buffered MTOM over the wire format for efficiency, the
REST interface will always return plain text XML.

Note: The REST interface only supports GET requests; no data can be posted back to it.

All commands are expressed over the URL as query string parameters, with the exception of the object
type which forms part of the URI.

The signature of the REST requests supported by the EDS looks like this example:
http://{server}:{port}/Aircom/EDS/REST/{type}/?qry={query}&row={row}&max={max}&export={export}
&timeout={TimeoutOverride}&cache={OverrideCache}&exclude={sub-elements}&include={sub-elements}

This table describes the parameters:

Parameter Description.

Host The base address of the server hosting the service.


Type The object type you want to query.

Qry A query string which supports the simplified text-based query notation.
Row Starting position for the EDS to fetch data from within the rowset returned by the query.
Max Maximum number of rows returned in a single request. The EDS default is set to 10.
Export You can optionally export the result to a disk location rather than passing it directly back to the
client.
Timeout An override to the default 45 second timeout within the EDS

Cache Instructs the EDS not to use object caching. This is useful when you want the most up-to-date
copy, otherwise this could cause a negative performance hit.
Exclude Instructs EDS to ignore certain sub-elements within the specified type. This is useful for
creating sparse data, which can significantly improve performance.
Include Instructs EDS to include only certain sub-elements within the specified type. This is useful for
creating sparse data, which can significantly improve performance.

Note: If you do not supply any query parameters, the EDS will return the first 10 rows of data for the
indicated type within the URI.

51
EDS Technical Reference Guide 9.1

This is an example of a typical result set from the REST interface:


<QueryResponseType xmlns:ct="http://www.aircominternational.com/Schemas/CommonTypes/2009/05"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gsm="http://www.aircominternational.com/Schemas/GSM/2009/09"
xmlns:eqp="http://www.aircominternational.com/Schemas/Equipment/2009/09"
xmlns:co="http://www.aircominternational.com/Schemas/Common/2009/07"
xmlns:umts="http://www.aircominternational.com/Schemas/UMTS/2009/05"
xmlns:util="http://www.aircominternational.com/contract/Util/2009/10"
xmlns:tra="http://www.aircominternational.com/Schemas/Connect/2009/09" util:itemIDRef="87927e23-
59dd-4f53-a9fb-cfc2459211ed" timeStamp="2010-03-17T20:42:37.8654434+00:00"
xmlns="http://www.aircominternational.com/contract/EDS/2009/05">
<util:Status code="OK" ref="87927e23-59dd-4f53-a9fb-cfc2459211ed">
<util:Status code="OK" ref="3a0383f4-29d8-446e-99b1-619061d96767" />
</util:Status>
<Data util:itemIDRef="3a0383f4-29d8-446e-99b1-619061d96767" remaining="169262" nextOffset="10">
<AppData xsi:type="co:LocationObjectType" ct:iid="NT05223C" ct:bvid="Northeast"
ct:eid="574810425">
<Security xmlns="">
<CreateDate>2009-04-27T17:12:07</CreateDate>
<ModifyDate>2010-01-20T17:33:25</ModifyDate>
</Security>
<CustomFields xmlns="">
<Field Group="Candidate Status" Value="Candidate" />
<Field Group="FCC_MW Status Flags" Value="N/A" />
<Field Group="Special Circumstance" />
<Field Group="I_Lat_Long Method" Value="GPS" />
<Field Group="I_Non Standard Site" Value="N/A" />
<Field Group="I_Microwave Only Site" Value="No" />
<Field Group="RFDS_TotAntSector1" Value="N/A" />
<Field Group="RFDS_TotAntSector2" Value="N/A" />
<Field Group="RFDS_TotAntSector3" Value="N/A" />
<Field Group="RFDS_TotAntSector4" Value="N/A" />
<Field Group="RFDS_TotCoaxSector1" Value="N/A" />
<Field Group="RFDS_TotCoaxSector2" Value="N/A" />
<Field Group="RFDS_TotCoaxSector3" Value="N/A" />
<Field Group="RFDS_TotCoaxSector4" Value="N/A" />
<Field Group="FSC_Geo_Mkt" Value="New Jersey, NJ" />
</CustomFields>
<co:Address1>1092 Cassini Court</co:Address1>
<co:Town>Leatherhead</co:Town>
<co:State>NJ</co:State>
<co:PostCode>07111</co:PostCode>

Note: The result set does not remove the containing query response or status of the request.

52
EDS Simplified Query Notation

5 EDS Simplified Query Notation

Queries to the EDS can be created either by using a structured XML document describing the query, or
by using a simplified freeform text format. This section describes the keywords which can be used to
interact with this format.

All queries are performed against a supported data type and you cannot query over multiple types
within the same request to the Web Service. Freeform queries follow the following basic syntax and
rules:

{type} <attribute> <operation> <value>

Note: Within the API "type" is specified using a parameterised value which is specific to the interface. It
has been included here to aid explanation of the freeform text query language.

Here is an example of a freeform query:

{gsmcell} iid = “TestID”

Where "type" would be a GSM cell and the query is looking for a matching element with an ID of
"TestID".

Queries can also be combined using a predicate to offer combination of attribute queries. Brackets can
also be used to indicate in which order of precedence the query should be evaluated:

query {and|or} {not} (query)

For example:

{gsmcell} iid = “TestID” and bvid = “Test Project”

Note: This query expands on the first example by restricting the search to include a specific
ENTERPRISE project.

53
EDS Technical Reference Guide 9.1

5.1 Query Enhancements in Recent Releases

Since EDS 8.1, the following enhancements to its query syntax have been introduced:

1. "Not Equals" query operation support:

Users may now create queries where the value of an expression is not equal, for example:

iid neq "AB123"


{or}
iid != "AB123"

Will return all records that don't match AB123.

2. "Not" expression support:

It is now possible to negate an expression in EDS, for example

not iid = "AB123"


{or}
iid = "AB123" or not (iid = "CD456" or iid = "GH789")

3. "Contains" expression support:

EDS will now search the contents of strings for a given string, for example:

iid contains "GHJ"

Note: The substring will include the start of the string.

4. Regular expression support:

EDS will now support regular expression queries against string types. Internally this maps onto the
Oracle "REGEX_LIKE" function, a description of which can be found here:

http://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm#i1011021

For example:

iid regex "^AB(12|34)CDEF$"

EDS will search for either "AB12CDEF" or "AB34CDEF".

54
EDS Simplified Query Notation

5. Ability to query parent based on children modification date (“exists”):

Code updated to allow for new subquery syntax to exist on specific elements GSMCellv90 (subcells),
CellSitev90 (cells), LTENodev90 (cells), NodeBv90Type (cells), AntennaDeviceType (patterns). New
keyword allows parent node to be retrieved based on existence of child attribute. For example:

GSMCellv90 - exists {subcells : ModifyDate > \"2017-01-26\"} and bvid = "myproject"

NodeBv90Type - exists {cells : ModifyDate > \"2017-01-26\"} and bvid=”myproject”

AntennaDeviceType - exists {patterns : ModifyDate > \"2017-01-26\"} and bvid=”myproject”

Note: This feature should only be used when you know there are only a few affected elements
otherwise database performance may struggle.

5.2 Supported Operations


This table lists the operations which can be performed against an attribute:

Operation Description

= Logical equals
eq Logical equals
neq Not equal
!= Not equal
> Greater than
gt Greater than
>= Greater than or equal
gte Greater than or equal
< Less than
<= Less than or equal
lte Less than or equal
ieq Case sensitive equals
st Starts with
end End with
regex Regular expression over string types
not Negate a given expression
contains Looks for a substring within a string
exists Subquery expression – please see Item 5 in Query Enhancements in Recent Releases
on page 54.

55
EDS Technical Reference Guide 9.1

5.3 Supported Attributes


This table lists the attributes which can be queried against, and their applicable data types:

Attribute Description Supported Types

iid Unique string ID All


eid Unique Database key value All
bvid Project Name All
niid New Unique string ID MU-Nodes, All Cell Types (rename)
Neighbours (reparent)
For explanations, see Sections 1.5.6
and 1.5.7 on page 16.
CreateDate Specified date All
ModifyDate Modified date All
CreateUser User who created the object All except GSMSubCell, UMTS Cell,
LTE Cell, WiFiCell
ModifyUser User who made the latest change to the All
object
UserGroup Group that has read/write permissions All except GSMSubCell, UMTS Cell,
access to the object LTE Cell, WiFiCell
Name1 First Name Property, WMSC, MSC, BSC,
CellSite, GSM Subcell, GSM
Repeater, SGSN, RNC, NodeB,
UMTS Repeater, LTENode, WiFi
Node, MUNode, LTE MME, LTE
Repeater, LTE SAEGW, PMP Hub
Name2 Second Name Property, WMSC, MSC, BSC,
CellSite, GSM Subcell, GSM
Repeater, SGSN, RNC, NodeB,
UMTS Repeater, LTENode, WiFi
Node, MUNode, LTE MME, LTE
Repeater, LTE SAEGW, PMP Hub
Comments Comments Property, WMSC, MSC, BSC,
CellSite, GSM Subcell, GSM
Repeater, SGSN, RNC, NodeB,
UMTS Repeater, LTE Node, WiFi
Node, MUNode, LTE MME, LTE
Repeater, LTE SAEGW, PMP Hub
Location Property ID associated with a network WMSC, MSC, BSC, Cellsite, GSM
element Subcell, GSM Repeater, SGSN,
RNC, NodeB, UMTS Repeater,
PtPLinkEnd, LTE Node, WiFiNode,
MUNode, GSM Subcell, GSM
Repeater, LTE MME, LTE Repeater,
LTE SAEGW, PMP Hub
Parent Owner Parent ID GSM Cell, UMTS Cell, LTE Cell, WiFi
Cell, UMTS Repeater, LTE Repeater,
GSM Repeater, GSM Subcell
CellName Additional Cell ID GSM Cell, UMTS Cell, LTE Cell, WiFi
Cell
GSM GSM technology enabled MUNode
UMTS UMTS technology enabled MUNode
WIFI Wi-Fi technology enabled MUNode
LTE LTE technology enabled MUNode

56
EDS Simplified Query Notation

Attribute Description Supported Types

Cells* Allows subquery of all child cells MUNode, CellSite, LTE Node,
NodeB, WiFiNode
* When the subquery field
for a child cell is non-unique
(such as ModifyDate), the
attributes below (GSMCells,
WIFICells, UMTSCells,
LTECells) can be used to
force the subquery to only
consider that technology
type.
GSMCells Allows subquery of all child GSM cells MUNode
WIFICells Allows subquery of all child Wi-Fi cells MUNode
UMTSCells Allows subquery of all child UMTS cells MUNode
LTECells Allows subquery of all child LTE cells MUNode
SubCells Allows subquery of all child subcells GSM Cell

GSMId Numeric GSM ID GSM Cell


MNC Mobile Network Code GSM Cell
MCC Mobile Country Code GSM Cell
BCC Broadcast Colour Code GSM Cell
RAC Radio Access Code GSM Cell, UMTS Cell
LAC Location Area Code GSM Cell, UMTS Cell
NSEI Network Service Entity Identifier GSM Cell
CellEquipment Cell Equipment ID GSM Cell
CGI CGI code GSM Cell
BTS BTS ID attached to a cell site GSM Cellsite, GSM Repeater
Cabin Cabin ID attached to a cell site GSM Cellsite, GSM Repeater
Tower Tower ID attached to a cell site GSM Cellsite, GSM Repeater
SubCellId Subcell ID GSM Subcell
SubCellName Subcell Name GSM Subcell
Traffic Traffic GSM Subcell
SignalOffset Signal Offset GSM Subcell
SignalThreshold Signal Threshold GSM Subcell
TrafficWeight Traffic Weight GSM Subcell
OverthrowLoadThreshold Overthrow Load Threshold GSM Subcell
ActivationThreshold HR ActivationThreshold GSM Subcell
TransmitterOutputPower Transmitter PA Output GSM Subcell
FixedPAOutput Fixed PA Output (ACP constraint) GSM Subcell
AveragePowerDecrease 8-PSK Average Power Decrease GSM Subcell
TotalAllocatedTRX Total TRX Allocated GSM Subcell
HSN HSN (Hopping Sequence Number) GSM Subcell
MAIOOffset MAIO Offset GSM Subcell
MAIOStep MAIO Step GSM Subcell
MALID MALID GSM Subcell
UMTSCellID UMTS Cell ID UMTS Cell

57
EDS Technical Reference Guide 9.1

Attribute Description Supported Types

LocalCellID Local Cell ID UMTS Cell


SAC Service Area Code UMTS Cell
NodeBEquipmentType NodeB Equipment Type NodeB
PLMN Owner PLMN ID NodeB, UMTS Repeater, LTE
Repeater, LTE Node, WiFi Node,
MUNode
Address1 First address line for a Property Property
Address2 Second address line for a Property Property
Town Town Property
Province Province Property
State State Property
PostCode Post Code Property
PropertyCode Property Code Property
Longitude Longitude Property
Latitude Latitude Property
GroundHgt Ground height Property
SearchRad Search Radius Property
Technology Neighbour Relationship Technology Neighbour
Type
DLGain Down Link Gain GSM Repeater, UMTS Repeater,
LTE Repeater
ULGain Up Link Gain GSM Repeater, UMTS Repeater,
LTE Repeater
ULNoiseFigure Up Link Noise Figure GSM Repeater, UMTS Repeater,
LTE Repeater
BTSFixed BTS Equipment Fixed GSM Repeater
OutputPower Repeater Output Power GSM Repeater
LTECellID LTE Cell ID LTE Cell
SuMimoDlSupport SU-MIMO Supported DL Modulation LTE Cell
SuMimoRxElems SU-MIMO Rx Element Count LTE Cell
SuMimoTxElems SU-MIMO Tx Element Count LTE Cell
SuMimoUlSupport SU-MIMO Supported UL Modulation LTE Cell
MuMimoDlSupport MU-MIMO Downlink Supported LTE Cell
MuMimoDlTerms MU-MIMO Downlink Terminals LTE Cell
MuMimoUlSupport MU-MIMO Uplink Supported LTE Cell
MuMimoUlTerms MU-MIMO Uplink Terminals LTE Cell
NbrLimitInterCdma Inter Neighbour Limit CDMA LTE Cell
NbrLimitInterGsm Inter Neighbour Limit GSM LTE Cell
NbrLimitInterUmts Inter Neighbour Limit UMTS LTE Cell
NbrLimitIntraInter Inter-Frequency Neighbour Limit LTE Cell
NbrLimitIntraIntra Intra-Frequency Neighbour Limit LTE Cell
SignallingOverhead Signalling Overhead LTE Cell
Tac Type Allocation Code LTE Cell
NodeID LTE Node ID LTE Node, MUNode

58
EDS Simplified Query Notation

Attribute Description Supported Types

Description Descriptive comments Antenna Device, Antenna Pattern


Supplier Antenna Device
Height, Width, Depth Physical dimensions Antenna Device
Gain, Frequency, Parameters Antenna Pattern
FrontToBackRatio,
CrossPolarDiscrim,
GainType, TiltType,
Polarisation, ConfigID,
ElecBeamAdj,
AntennaPatternAngle,
DownTilt, HorizontalBW,
VerticalBW,
ElementArrayIndicator
Patterns Allows subquery of all child patterns. Antenna Device
ConnectionType The network element type attached to Network Connection
the connection.
EndA Name of the element attached to EndA Network Connection, Logical
Network Connection, Cellular
Network Connection
EndB Name of the element attached to EndB As above.
EndAType Object type at EndA to ensure a unique Network Connection, Logical
match for the network connection. Network Connection, Cellular
Network Connection
EndBType Object type at EndB to ensure a unique As above.
match for the network connection.

5.4 About User Defined Fields


User defined fields (UDF) add a variation to the syntax of a freeform query. This is because the query
needs to identify both the user defined field group as well as the value you would like to search for. The
syntax for a user defined query is:

udf:["{group}"]<operation> <value>

The keyword udf: is used to tell the freeform query what it should expect as field group within the
square brackets. The group name must be presented inside speech marks.

For example:

{gsmcell} udf:["Site Status"] = "On Air"

Where "Type" would be a GSM Cell and the query is looking for a matching element whose Site Status
field has been set to On Air.

59
EDS Technical Reference Guide 9.1

5.4.1 User Defined Field Data Types


In general, the pick-list UDF is the most frequently used, and is therefore the default search criteriion
used with the expression syntax above. If, however, you wish to query upon the other UDF types
(integer, string, boolean, float) you will need to indicate this in the query syntax.

The syntax to specify the data type within the query is as follows:

udf: {i, p, s, b, f} ["{group}"] <operation> <value>

Where:
 i = integer
 p = pick-list
 s = string
 b = boolean
 f = float

You can choose one of the letters in the bracketed list applicable to the UDF type, so for example:

udf: s ["group"] = "value" - will do a string lookup

udf: i ["group"] = 1234 - will do an integer lookup

60
Diagnosing Faults and Performance Monitoring

6 Diagnosing Faults and Performance Monitoring

There are several ways to diagnose problems or faults, and also to monitor the performance of the
EDS. This section explains the various ways to do this.

6.1 Diagnosing Faults within the EDS


The EDS is preconfigured to log any serious fault it encounters to three locations, namely:
 To the client in the form of a Status message. The textual element is used to indicate where and
why the fault occurred.
 To the Windows Event Log on the server hosting the EDS.
 To the ENTERPRISE database, where the Administrator can see the faults using the dedicated
web content written to monitor the EDS.

In addition, the EDS uses the Microsoft Enterprise Library Logging Block for filtering and forwarding
faults or other diagnostic information onto a number of subscribed listeners. It is possible to add new
listeners to the EDS configuration through modification of the application's .config file. In this way, it
would be possible to include a listener which forwards serious faults to a specified e-mail address.

Note: The EDS application bundle includes a Microsoft Enterprise Library config editor to allow
administrators to alter the configuration of these logs. For more information, see the EWS Web
Administration and User Guide.

If the EDS raises an unhandled fault or exception, its services will attempt to continue normal operation.
Most faults or exceptions are based around validation failure, or at the worst a rejection from the Oracle
server due to, for example, constraint violation. In all of these circumstances, the EDS will log the failure
and continue normal operation.

6.2 Manually Performing the EDS Database Setup


It is possible to use a command-line process to install EDS in a new target database, or reinstall
and/or upgrade an existing database. This may be relevant when a patch to EDS has caused its
internal database version to be updated. The command line option may be more convenient,
especially when attempting to troubleshoot a failed installation or when the services do not start.
To use the database installation command line, type the following (from the EDS application
folder):
teoco.eds.persistence.runtime.exe -installdb user=<user> password=<password> sid=<oracle_service>

Where <user>, <password> and <oracle_service> may be substituted by the appropriate values.

Notes:
 If you want to perform an EDS database installation, you must supply either the ENTERPRISE
administrator account or another user ID capable of updating the database schema
(NETWORK_PLANNING)
 If the details you have entered are correct, EDS will begin updating the database and present the
changes it makes to the console as well as appending them to the “installdb.log” file

61
EDS Technical Reference Guide 9.1

6.3 Manually Changing the EDS Database Connection String


By default, when EDS is installed it stores an encrypted connection string inside multiple configuration
files containing the EDS_SOA_Client password and Oracle service name.

Note: This connection string is present in the following files:

 TEOCO.EDS.Persistence.Runtime.exe.config

 TEOCO.EDS.Presentation.Runtime.exe.config

 TEOCO.ENS.Runtime.exe.config

To change the connection string manually:

1. Back up each of the config files before performing this process. If this is not done correctly, the
services will not start.

2. Open one of the config files and locate the xml section named “database-login-configuration”.
The encrypted section will look like this example:
<database-login-configuration
configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData>
<CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAZICI6NQKaEy0QPHVA8+Ubg
QAAAACAAAAAAADZgAAwAAAABAAAADlyoeQ6pOkoVhext6s/DJBAAAAAASAAACgAAAAE
AAAAG03swS/6fPPBRqeFeeT0wm4AAAABNJBm1UADlCuqJ5THBuHn+IJKsTdEp/p7JwJ
CBF8s3w8wKvPHKwPR4jly8fcvaWcaCtzpbUd3IkCCMhT4RhsWsooTQQ6MDdyXKeJwRq
5jxNaN0jU5AaRt7zHn7LhSgip4rrTHjzzptRiCrhjYuJGX7Ljra2qnwwZbzEGMg48tA
MAdf0heg+Mw+S08WjbMP/4VGFmcmwUGRJ7hhxSX9TfAwT6AoYf8CWqRDS4SdG4u+b6L
tyMZxR52hQAAAAuf1cTv5fNJDAMwJK6LTKn3hpjRQ==</CipherValue>
</CipherData>
</EncryptedData>
</database-login-configuration>

3. Once you have located the correct section, replace the entire xml element with the following
XML.
Note: Substitute “EDSDB” and “password” with the appropriate Oracle SID and password
for the “EDS_SOA_Client” account.
<database-login-configuration name="EDSDB" username="EDS_SOA_Client"
password="password">
</database-login-configuration>

4. Perform this process for each of the 3 config files.


Note: To test whether the change has worked, either restart the services from the service
control panel or interactively using the command shell.

5. To re-encrypt the connection string, type the following from the command line:
TEOCO.EDS.Persistence.Runtime.exe -encrypt database-login-configuration
TEOCO.EDS.Presentation.Runtime.exe -encrypt database-login-configuration
TEOCO.ENS.Runtime.exe -encrypt database-login-configuration

62
Diagnosing Faults and Performance Monitoring

6.4 Performance Monitoring


The EDS records several counters and other values for describing message throughput, system activity
and numbers of successful and unsuccessful messages it has processed. This table lists these values:

Name Area Description

Machine Name General The name of the server hosting the EDS.
Process Name General The name of the server process.
Process ID General The server process ID.
NonpagedSystemMemory General The amount of non-paged system memory.
PagedMemorySize General The amount of paged memory.
PeakPagedMemorySize General The peak amount of paged memory.
PeakVirtualMemorySize General The peak amount of virtual memory.
PeakWorkingSet General The working set size of the process.
InstanceName General Indicates whether the EDS is running as a stand-alone
program or as a windows cluster.
NumberOfMessagesReceived Create, Update, Indicates how many messages the service has received.
Query, Delete
NumberOfSuccessMessagesSent Create, Update, The number of success messages sent.
Query, Delete
NumberOfFailureMessagesSent Create, Update, The number of failure messages. These could be for
Query, Delete failure of validation criteria, for example.
NumberOfExceptionMessagesSent Create, Update, Number of serious errors, which should be monitored, as
Query, Delete they might reflect a more serious issue with the system.
MinimumTimeForProcessMessage Create, Update, The minimum amount of time the EDS took to handle a
Query, Delete request.
AverageTimeForProcessingMessage Create, Update, The longest time it too the EDS to answer a request.
Query, Delete

6.5 Accessing Performance Values


The EDS offers four mechanisms for reading the values mentioned in the above table in the
Performance Monitoring topic . They are:
 Using the REST interface
 Using the Web Service Interface
 Using Windows Performance Monitor
 Using the Web Administration Content

63
EDS Technical Reference Guide 9.1

6.5.1 Accessing Performance Values with the REST Interface


The REST interface has an additional method which allows you to retrieve a raw XML dump of values.
This URL can be used to access this:

http://{host} : {port}/Aircom/EDS/REST/status/

In response, the EDS will return a report similar to this example:


<SystemStatus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Status>
<Item xsi:type="EDSHeartBeatPacket" HostID="46e136c2-4c3f-4d11-8282-10b739a2cf3f">
<ResponseTime>2010-03-18T10:32:23.016764+00:00</ResponseTime>
<MachineName>UKSW0O716DT</MachineName>
<ProcessName>Aircom.EDS.Persistence.Runtime</ProcessName>
<ProcessID>4612</ProcessID>
<NonpagedSystemMemorySize>25612</NonpagedSystemMemorySize>
<PagedMemorySize>104464384</PagedMemorySize>
<PagedSystemMemorySize>553916</PagedSystemMemorySize>
<PeakPagedMemorySize>158646272</PeakPagedMemorySize>
<PeakVirtualMemorySize>371535872</PeakVirtualMemorySize>
<PeakWorkingSet>107069440</PeakWorkingSet>
<StartTime>2010-03-18T10:32:13.6886316+00:00</StartTime>
<VirtualMemorySize>371470336</VirtualMemorySize>
<WorkingSet>107057152</WorkingSet>
<InstanceName>Stand-Alone</InstanceName>
<Creates>
<NumberOfMessagesRecieved>0</NumberOfMessagesRecieved>
<NumberOfSuccessMessagesSent>0</NumberOfSuccessMessagesSent>
<NumberOfFailureMessagesSent>0</NumberOfFailureMessagesSent>
<NumberOfExceptionMessagesSent>0</NumberOfExceptionMessagesSent>
<MinimumTimeForProcessedMessage>0</MinimumTimeForProcessedMessage>
<AverageTimeForProcessingMessage>0</AverageTimeForProcessingMessage>
<MaximumTimeForProcessedMessage>0</MaximumTimeForProcessedMessage>
</Creates>
<Reads>
<NumberOfMessagesRecieved>0</NumberOfMessagesRecieved>
<NumberOfSuccessMessagesSent>0</NumberOfSuccessMessagesSent>
<NumberOfFailureMessagesSent>0</NumberOfFailureMessagesSent>
<NumberOfExceptionMessagesSent>0</NumberOfExceptionMessagesSent>
<MinimumTimeForProcessedMessage>0</MinimumTimeForProcessedMessage>
<AverageTimeForProcessingMessage>0</AverageTimeForProcessingMessage>
<MaximumTimeForProcessedMessage>0</MaximumTimeForProcessedMessage>
</Reads>
<Updates>
<NumberOfMessagesRecieved>0</NumberOfMessagesRecieved>
<NumberOfSuccessMessagesSent>0</NumberOfSuccessMessagesSent>
<NumberOfFailureMessagesSent>0</NumberOfFailureMessagesSent>
<NumberOfExceptionMessagesSent>0</NumberOfExceptionMessagesSent>
<MinimumTimeForProcessedMessage>0</MinimumTimeForProcessedMessage>
<AverageTimeForProcessingMessage>0</AverageTimeForProcessingMessage>
<MaximumTimeForProcessedMessage>0</MaximumTimeForProcessedMessage>
</Updates>
<Deletes>
<NumberOfMessagesRecieved>0</NumberOfMessagesRecieved>
<NumberOfSuccessMessagesSent>0</NumberOfSuccessMessagesSent>
<NumberOfFailureMessagesSent>0</NumberOfFailureMessagesSent>
<NumberOfExceptionMessagesSent>0</NumberOfExceptionMessagesSent>
<MinimumTimeForProcessedMessage>0</MinimumTimeForProcessedMessage>
<AverageTimeForProcessingMessage>0</AverageTimeForProcessingMessage>
<MaximumTimeForProcessedMessage>0</MaximumTimeForProcessedMessage>
</Deletes>
</Item>
</Status>
</SystemStatus>

Note: There will be one "item" per EDS persistent service instance.

64
Diagnosing Faults and Performance Monitoring

6.5.2 Accessing Performance Values with the Web Service Interface


The web service has two methods which return a similar structure to that of the REST Interface on page
64. The operation names are:
 Status
 HistoricalStatus

Note: Both of these operations return the same content, however the historical status operation can be
used to build graphs based on a period of time. The historical status collects up to 15 snapshots of
data. This picture shows an example:

Example of Web Administration pages.

65
EDS Technical Reference Guide 9.1

6.5.3 Accessing Performance and Log Information with EDS Web


Administration
The EDS installation contains web content that can be used by Administrators to monitor the available
information and examine the database log for any faults. The content is hosted from the ENTERPRISE
administrator, but can be accessed from any web browser.

For more information, see the EWS Web Administration and User Guide.

6.5.4 Accessing Performance Values with Windows Performance Monitor


Windows "Perfmon" can also be used to connect to the EDS persistent service. This picture shows the
counters:

Note: All time intervals displayed are in milliseconds.

66
EDS Request Response Samples

7 EDS Request Response Samples

7.1 Creating Data within the EDS


A create request resembles the following XML example:
<Create xmlns="http://www.aircominternational.com/contract/EDS/2009/05">
<data>
<itemID xmlns="http://www.aircominternational.com/contract/Util/2009/10">88384db3-e9dc-411b-
b34a-27f389bc79fd</itemID>
<TimeoutOverride
xmlns="http://www.aircominternational.com/contract/EDS/DST/2009/10">0</TimeoutOverride>
<RunSequentially
xmlns="http://www.aircominternational.com/contract/EDS/DST/2009/10">false</RunSequentially>
<CreateItems a:objectType="NodeBType"
xmlns:a="http://www.aircominternational.com/contract/EDS/DST/2009/10">
<itemID xmlns="http://www.aircominternational.com/contract/Util/2009/10">7d297283-f9b9-497e-
8299-593439da9a40</itemID>
<NewData>
<AppData xsi:type="q1:NodeBType" b:iid="NodeBA" b:bvid="Northeast"
xmlns:b="http://www.aircominternational.com/Schemas/CommonTypes/2009/05"
xmlns:q1="http://www.aircominternational.com/Schemas/UMTS/2009/05">
<Location b:iid="4DET391B" xmlns=""></Location>
<q1:NodeBID>-1</q1:NodeBID>
<q1:NodeBEquipmentType b:iid="Node B with TMA"></q1:NodeBEquipmentType>
<q1:PLMN b:iid="PLMN0"></q1:PLMN>
<q1:AllowedOperations>ReadWrite</q1:AllowedOperations>
</AppData>
<AppData xsi:type="q2:NodeBType" b:iid="NodeBB" b:bvid="Northeast"
xmlns:b="http://www.aircominternational.com/Schemas/CommonTypes/2009/05"
xmlns:q2="http://www.aircominternational.com/Schemas/UMTS/2009/05">
<Location b:iid="4DET391B" xmlns=""></Location>
<q2:NodeBID>-1</q2:NodeBID>
<q2:NodeBEquipmentType b:iid="Node B with TMA"></q2:NodeBEquipmentType>
<q2:PLMN b:iid="PLMN0"></q2:PLMN>
<q2:AllowedOperations>ReadWrite</q2:AllowedOperations>
</AppData>
<AppData xsi:type="q3:NodeBType" b:iid="NodeBC" b:bvid="Northeast"
xmlns:b="http://www.aircominternational.com/Schemas/CommonTypes/2009/05"
xmlns:q3="http://www.aircominternational.com/Schemas/UMTS/2009/05">
<Location b:iid="4DET391B" xmlns=""></Location>
<q3:NodeBID>-1</q3:NodeBID>
<q3:NodeBEquipmentType b:iid="Node B with TMA"></q3:NodeBEquipmentType>
<q3:PLMN b:iid="PLMN0"></q3:PLMN>
<q3:AllowedOperations>ReadWrite</q3:AllowedOperations>
</AppData>
</NewData>
</CreateItems>
</data>
</Create>

67
EDS Technical Reference Guide 9.1

The example shows a simple request which creates three minimal NodeB types. The request has
defined an itemID for both the other RequestType and the contained RequestItem. The response from
the EDS looks like this:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1"
xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://www.aircominternational.co
m/contract/EDS/2009/05/EDS/CreateResponse</Action>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CreateResponse xmlns="http://www.aircominternational.com/contract/EDS/2009/05">
<CreateResult d4p1:itemIDRef="88384db3-e9dc-411b-b34a-27f389bc79fd" timeStamp="2010-03-
17T19:37:55.0813608+00:00" xmlns:d4p1="http://www.aircominternational.com/contract/Util/2009/10">
<d4p1:Status code="OK" ref="88384db3-e9dc-411b-b34a-27f389bc79fd">
<d4p1:Status code="OK" ref="7d297283-f9b9-497e-8299-593439da9a40" />
</d4p1:Status>
</CreateResult>
</CreateResponse>
</s:Body>
</s:Envelope>

Note: If you were to create the same three NodeBs again, the EDS would return an error, shown in this
example:

<CreateResponse xmlns="http://www.aircominternational.com/contract/EDS/2009/05">
<CreateResult d4p1:itemIDRef="e9821e0f-5b2a-43cd-841f-64849b578ef9" timeStamp="2010-03-
17T19:41:26.705465+00:00" xmlns:d4p1="http://www.aircominternational.com/contract/Util/2009/10">
<d4p1:Status code="Failed" ref="e9821e0f-5b2a-43cd-841f-64849b578ef9">
<d4p1:Status code="InvalidData" ref="eff48a14-224a-4fcd-ac30-2b8a1aab6e5c" comment="Object
ID:NodeBA, Key:1018 has failed validation : ObjectName 'NodeBA' is not unique (ObjectName must be
unique within the DB), 'ObjectName': NodeBAObject ID:NodeBB, Key:1019 has failed validation :
ObjectName 'NodeBB' is not unique (ObjectName must be unique within the DB), 'ObjectName':
NodeBBObject ID:NodeBC, Key:1020 has failed validation : ObjectName 'NodeBC' is not unique
(ObjectName must be unique within the DB), 'ObjectName': NodeBC" />
</d4p1:Status>
</CreateResult>
</CreateResponse>

68
EDS Request Response Samples

7.2 Updating Data within the EDS


Modify requests follow a similar pattern to a Create requests, but they are required to supply a query to
identify the item they must replace. The query must always return a single result only, otherwise the
EDS will reject the modify attempt.

An example of an update to the same three NodeBs used in the previous example is:
<Modify xmlns="http://www.aircominternational.com/contract/EDS/2009/05">
<data>
<itemID xmlns="http://www.aircominternational.com/contract/Util/2009/10">a1ae6454-c251-455c-
8e77-2c5ab3af2da2</itemID>
<TimeoutOverride
xmlns="http://www.aircominternational.com/contract/EDS/DST/2009/10">0</TimeoutOverride>
<RunSequentially
xmlns="http://www.aircominternational.com/contract/EDS/DST/2009/10">false</RunSequentially>
<ModifyItems a:objectType="NodeBType" a:CreateIfNotFound="false"
xmlns:a="http://www.aircominternational.com/contract/EDS/2009/05">
<itemID xmlns="http://www.aircominternational.com/contract/Util/2009/10">8c89c01a-20bc-452f-
89c2-de79478aafca</itemID>
<a:Select>
<OverrideCacheDefault UseQueryCache="true"
xmlns="http://www.aircominternational.com/Schemas/Query/2009/09"></OverrideCacheDefault>
<Simple xmlns="http://www.aircominternational.com/Schemas/Query/2009/09">
<Query>iid="NodeBA" and bvid="Northeast"</Query>
</Simple>
</a:Select>
<a:NewData>
<a:AppData xsi:type="q1:NodeBType" b:iid="NodeBA" b:bvid="Northeast"
xmlns:b="http://www.aircominternational.com/Schemas/CommonTypes/2009/05"
xmlns:q1="http://www.aircominternational.com/Schemas/UMTS/2009/05">
<Location b:iid="4DET391B" xmlns=""></Location>
<q1:NodeBID>-1</q1:NodeBID>
<q1:NodeBEquipmentType b:iid="Node B with TMA"></q1:NodeBEquipmentType>
<q1:PLMN b:iid="PLMN0"></q1:PLMN>
<q1:AllowedOperations>ReadWrite</q1:AllowedOperations>
</a:AppData>
</a:NewData>
</ModifyItems>
<ModifyItems a:objectType="NodeBType" a:CreateIfNotFound="false"
xmlns:a="http://www.aircominternational.com/contract/EDS/2009/05">
<itemID xmlns="http://www.aircominternational.com/contract/Util/2009/10">7c9e1c57-cf73-415b-
9150-8ebc32147981</itemID>
<a:Select>
<OverrideCacheDefault UseQueryCache="true"
xmlns="http://www.aircominternational.com/Schemas/Query/2009/09"></OverrideCacheDefault>
<Simple xmlns="http://www.aircominternational.com/Schemas/Query/2009/09">
<Query>iid="NodeBB" and bvid="Northeast"</Query>
</Simple>
</a:Select>
<a:NewData>
<a:AppData xsi:type="q2:NodeBType" b:iid="NodeBB" b:bvid="Northeast"
xmlns:b="http://www.aircominternational.com/Schemas/CommonTypes/2009/05"
xmlns:q2="http://www.aircominternational.com/Schemas/UMTS/2009/05">
<Location b:iid="4DET391B" xmlns=""></Location>
<q2:NodeBID>-1</q2:NodeBID>
<q2:NodeBEquipmentType b:iid="Node B with TMA"></q2:NodeBEquipmentType>
<q2:PLMN b:iid="PLMN0"></q2:PLMN>
<q2:AllowedOperations>ReadWrite</q2:AllowedOperations>
</a:AppData>
</a:NewData>
</ModifyItems>
<ModifyItems a:objectType="NodeBType" a:CreateIfNotFound="false"
xmlns:a="http://www.aircominternational.com/contract/EDS/2009/05">
<itemID xmlns="http://www.aircominternational.com/contract/Util/2009/10">e9995793-ce1e-4d30-
9b24-3a0ee901dea9</itemID>
<a:Select>
<OverrideCacheDefault UseQueryCache="true"
xmlns="http://www.aircominternational.com/Schemas/Query/2009/09"></OverrideCacheDefault>
<Simple xmlns="http://www.aircominternational.com/Schemas/Query/2009/09">
<Query>iid="NodeBC" and bvid="Northeast"</Query>
</Simple>
</a:Select>
<a:NewData>
<a:AppData xsi:type="q3:NodeBType" b:iid="NodeBC" b:bvid="Northeast"
xmlns:b="http://www.aircominternational.com/Schemas/CommonTypes/2009/05"

69
EDS Technical Reference Guide 9.1

xmlns:q3="http://www.aircominternational.com/Schemas/UMTS/2009/05">
<Location b:iid="4DET391B" xmlns=""></Location>
<q3:NodeBID>-1</q3:NodeBID>
<q3:NodeBEquipmentType b:iid="Node B with TMA"></q3:NodeBEquipmentType>
<q3:PLMN b:iid="PLMN0"></q3:PLMN>
<q3:AllowedOperations>ReadWrite</q3:AllowedOperations>
</a:AppData>
</a:NewData>
</ModifyItems>
</data>
</Modify>

Note: In this example, multiple ModifyItems as a ModifyItem may only update a single item at a time
based on the restrictions of the query, which is necessary to correlate to the query (Select element).
The query is using the simple free-text notation.

The response from the EDS resembles this:


<ModifyResponse xmlns="http://www.aircominternational.com/contract/EDS/2009/05">
<ModifyResult d4p1:itemIDRef="a1ae6454-c251-455c-8e77-2c5ab3af2da2" timeStamp="2010-03-
17T19:45:35.4616931+00:00" xmlns:d4p1="http://www.aircominternational.com/contract/Util/2009/10">
<d4p1:Status code="OK" ref="a1ae6454-c251-455c-8e77-2c5ab3af2da2">
<d4p1:Status code="OK" ref="8c89c01a-20bc-452f-89c2-de79478aafca" />
<d4p1:Status code="OK" ref="7c9e1c57-cf73-415b-9150-8ebc32147981" />
<d4p1:Status code="OK" ref="e9995793-ce1e-4d30-9b24-3a0ee901dea9" />
</d4p1:Status>
</ModifyResult>
</ModifyResponse>

7.3 Deleting Data within the EDS


Using the same examples as before, we can delete one of the NodeBs created previously. The query
expression looks like this:
<Delete xmlns="http://www.aircominternational.com/contract/EDS/2009/05">
<data>
<itemID xmlns="http://www.aircominternational.com/contract/Util/2009/10">a7255006-cfb8-4642-
9ab6-458600252b94</itemID>
<TimeoutOverride
xmlns="http://www.aircominternational.com/contract/EDS/DST/2009/10">0</TimeoutOverride>
<RunSequentially
xmlns="http://www.aircominternational.com/contract/EDS/DST/2009/10">false</RunSequentially>
<DeleteItems>
<itemID xmlns="http://www.aircominternational.com/contract/Util/2009/10">8468f38a-8686-4260-
b54b-81c0c519b826</itemID>
<objectType>NodeBType</objectType>
<Select>
<OverrideCacheDefault UseQueryCache="true"
xmlns="http://www.aircominternational.com/Schemas/Query/2009/09"></OverrideCacheDefault>
<Simple xmlns="http://www.aircominternational.com/Schemas/Query/2009/09">
<Query>iid ieq "nodeba" and bvid="northeast"</Query>
</Simple>
</Select>
</DeleteItems>
</data>
</Delete>

Note: The query expression will select a single NodeB named "nodeba" using a case sensitive “ieq”
match, and will delete it and its dependencies, if any.

The EDS response to this query expression is similar to this example:


<DeleteResponse xmlns="http://www.aircominternational.com/contract/EDS/2009/05">
<DeleteResult d4p1:itemIDRef="a7255006-cfb8-4642-9ab6-458600252b94"
xmlns:d4p1="http://www.aircominternational.com/contract/Util/2009/10">
<d4p1:Status code="OK" ref="a7255006-cfb8-4642-9ab6-458600252b94">
<d4p1:Status code="OK" ref="8468f38a-8686-4260-b54b-81c0c519b826" />
</d4p1:Status>
</DeleteResult>
</DeleteResponse>

70
EDS Request Response Samples

7.4 Querying Data within the EDS


Once the NodeB has been deleted, you can query the remaining NodeBs from the database. The query
looks like this:
<Query
<data>
<itemID>92c14dd7-4ff5-4871-9633-278d4380891a</itemID>
<TimeoutOverride>0</TimeoutOverride>
<RunSequentially>false</RunSequentially>
<QueryItems a:objectType="NodeBType" count="100" offset="0" xmlns:a="">
<itemID>477f994e-4dc4-4cba-a44c-118d32769199</itemID>
<Select>
<OverrideCacheDefault UseQueryCache="true"></OverrideCacheDefault>
<Simple>
<Query>iid st "nodeb" and bvid="northeast"</Query>
</Simple>
</Select>
</QueryItems>
</data>
</Query>

The query expression is selecting all NodeBs whose name starts with (st) “NodeB”.

If you wish, you can further refine the search criteria to NodeB objects that have been modified within a
date and time range.

The query looks like this:


<Query>
<data>
<itemID>92c14dd7-4ff5-4871-9633-278d4380891a</itemID>
<TimeoutOverride xmlns="">0</TimeoutOverride>
<RunSequentially>false</RunSequentially>
<QueryItems a:objectType="NodeBType" count="100" offset="0" xmlns:a="">
<itemID>477f994e-4dc4-4cba-a44c-118d32769199</itemID>
<Select>
<OverrideCacheDefault UseQueryCache="true"></OverrideCacheDefault>
<Simple>
<Query>iid st "nodeb" and bvid="project1" and modifydate gt "2010-03-17T19:37:50" and
modifydate lt "2010-03-17T19:37:59"</Query>
</Simple>
</Select>
</QueryItems>
</data>
</Query>

Note: Date time formats can be one of the following:


 Date: “14/07/2010” or “2010-07-14” (dd/mm/yyyy or yyyy-mm-dd).
 Date and Time: “14/07/2010 12:00:01” or “2010-07-14T12:00:01” (dd/mm/yyyy hh:mm:ss or
yyyy-mm-ddThh:mm:ss). Minutes and seconds are optional.

71
EDS Technical Reference Guide 9.1

The result from EDS looks similar to this example:


<QueryResponse xmlns="http://www.aircominternational.com/contract/EDS/2009/05">
<QueryResult itemIDRef="92c14dd7-4ff5-4871-9633-278d4380891a" timeStamp="2010-03-
17T20:04:28.2494848+00:00" xmlns:d4p1="http://www.aircominternational.com/contract/Util/2009/10">
<Status code="OK" ref="92c14dd7-4ff5-4871-9633-278d4380891a">
<Status code="OK" ref="477f994e-4dc4-4cba-a44c-118d32769199" />
</Status>
<Data d4p1:itemIDRef="477f994e-4dc4-4cba-a44c-118d32769199" remaining="0" nextOffset="0">
<AppData xmlns:q5="http://www.aircominternational.com/Schemas/UMTS/2009/05"
xsi:type="q5:NodeBType" d6p1:iid="NodeBB" d6p1:bvid=" project1" d6p1:eid="1016"
xmlns:d6p1="http://www.aircominternational.com/Schemas/CommonTypes/2009/05">
<Security xmlns="">
<CreateDate>2010-03-17T19:37:55</CreateDate>
<ModifyDate>2010-03-17T19:37:53</ModifyDate>
<CreateUser>Bob</CreateUser>
<ModifyUser>Bob</ModifyUser>
<UserGroup>All</UserGroup>
<Permissions>
<Owner>write</Owner>
<Group>read</Group>
<All>read</All>
</Permissions>
</Security>
<Location d6p1:iid="4DET391B" d6p1:eid="-224161716" xmlns="" />
<q5:NodeBID>-1</q5:NodeBID>
<q5:NodeBEquipmentType d6p1:iid="Node B with TMA" d6p1:eid="667775795" />
<q5:PLMN d6p1:iid="PLMN0" d6p1:eid="690711692" />
<q5:Resources>
<q5:Resource>
<ULTotal xmlns="">10000</ULTotal>
<DLTotal xmlns="">10000</DLTotal>
<ULPriority xmlns="">5000</ULPriority>
<DLPriority xmlns="">5000</DLPriority>
<ULHandover xmlns="">5000</ULHandover>
<DLHandover xmlns="">5000</DLHandover>
</q5:Resource>
</q5:Resources>
<q5:AllowedOperations>ReadWrite</q5:AllowedOperations>
</AppData>
<AppData xmlns:q6="http://www.aircominternational.com/Schemas/UMTS/2009/05"
xsi:type="q6:NodeBType" d6p1:iid="NodeBC" d6p1:bvid="Northeast" d6p1:eid="1017"
xmlns:d6p1="http://www.aircominternational.com/Schemas/CommonTypes/2009/05">
<Security xmlns="">
<CreateDate>2010-03-17T19:37:55</CreateDate>
<ModifyDate>2010-03-17T19:37:55</ModifyDate>
<CreateUser>Bob</CreateUser>
<ModifyUser>Bob</ModifyUser>
<UserGroup>All</UserGroup>
<Permissions>
<Owner>write</Owner>
<Group>read</Group>
<All>read</All>
</Permissions>
</Security>
<Location d6p1:iid="4DET391B" d6p1:eid="-224161716" xmlns="" />
<q6:NodeBID>-1</q6:NodeBID>
<q6:NodeBEquipmentType d6p1:iid="Node B with TMA" d6p1:eid="667775795" />
<q6:PLMN d6p1:iid="PLMN0" d6p1:eid="690711692" />
<q6:Resources>
<q6:Resource>
<ULTotal xmlns="">10000</ULTotal>
<DLTotal xmlns="">10000</DLTotal>
<ULPriority xmlns="">5000</ULPriority>
<DLPriority xmlns="">5000</DLPriority>
<ULHandover xmlns="">5000</ULHandover>
<DLHandover xmlns="">5000</DLHandover>
</q6:Resource>
</q6:Resources>
<q6:AllowedOperations>ReadWrite</q6:AllowedOperations>
</AppData>
</Data>
</QueryResult>
</QueryResponse>

Note: The EDS has created default resources.

72
EDS Request Response Samples

7.5 Neighbour Type Objects: ‘Operation’ Attribute


For a full explanation of this new attribute, see Section 1.5.5 on page 15.

Here is an example of Soap envelope using the new 'Operation' attribute:

<soapenv:Envelope >
<soapenv:Body>
<ns:Modify>
<ns:data>
<ns1:itemID>A1B970A6-E0A4-4782-973D-3835AE656F92</ns1:itemID>
<ns2:masterID>B1B970A6-E0A4-4782-973D-3835AE656F93</ns2:masterID>
<ns3:TimeoutOverride>300</ns3:TimeoutOverride>
<ns3:RunSequentially>false</ns3:RunSequentially>
<ns:ModifyItems ns:objectType="NeighbourType"
ns:SuppressLogicaltoPhysicalAntennaCorrection="true" ns:SparseListUpdate="true"
ns:CreateIfNotFound="false" ns:IgnoreQueryAndDoBulkUpdate="true">
<ns1:itemID>A1B970A6-E0A4-4782-973D-3835AE656F91</ns1:itemID>
<ns:Select>
<ns5:OverrideCacheDefault UseQueryCache="false"/>
</ns:Select>
<ns:NewData>
<ns4:AppData xsi:type="ns12:NeighbourType" Operation="Delete" Technology="LTE"
ns14:iid="eNodeB2B" ns14:bvid="Bob" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns12:OutwardNbrs CarrierID="1" NbrCellID="CDMABS0A" Technology="CDMA">
<ns12:NbrCarrierID>1</ns12:NbrCarrierID>
</ns12:OutwardNbrs>
<ns12:AllowedOperations>ReadUpdateDelete</ns12:AllowedOperations>
</ns4:AppData>
</ns:NewData>
</ns:ModifyItems>
<ns:ModifyItems ns:objectType="NeighbourType"
ns:SuppressLogicaltoPhysicalAntennaCorrection="true" ns:SparseListUpdate="true"
ns:CreateIfNotFound="false" ns:IgnoreQueryAndDoBulkUpdate="true">
<ns1:itemID>A1B970A6-E0A4-4782-973D-3835AE656F92</ns1:itemID>
<ns:Select>
<ns5:OverrideCacheDefault UseQueryCache="false"/>
</ns:Select>
<ns:NewData>
<ns4:AppData xsi:type="ns12:NeighbourType" Operation="Create" Technology="LTE"
ns14:iid="eNodeB2B" ns14:bvid="Bob" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns12:OutwardNbrs CarrierID="1" NbrCellID="CDMABS0A" Technology="CDMA">
<ns12:NbrCarrierID>1</ns12:NbrCarrierID>
<ns12:Status>Live</ns12:Status>
</ns12:OutwardNbrs>
<ns12:AllowedOperations>ReadUpdateDelete</ns12:AllowedOperations>
</ns4:AppData>
</ns:NewData>
</ns:ModifyItems>
<ns:ModifyItems ns:objectType="NeighbourType"
ns:SuppressLogicaltoPhysicalAntennaCorrection="true" ns:SparseListUpdate="true"
ns:CreateIfNotFound="false" ns:IgnoreQueryAndDoBulkUpdate="true">
<ns1:itemID>A1B970A6-E0A4-4782-973D-3835AE656F93</ns1:itemID>
<ns:Select>
<ns5:OverrideCacheDefault UseQueryCache="false"/>
</ns:Select>
<ns:NewData>
<ns4:AppData xsi:type="ns12:NeighbourType" Operation="Update" Technology="LTE"
ns14:iid="eNodeB2B" ns14:bvid="Bob" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns12:OutwardNbrs CarrierID="1" NbrCellID="CDMABS0A" Technology="CDMA">
<ns12:NbrCarrierID>1</ns12:NbrCarrierID>
<ns12:Status>Planned</ns12:Status>
</ns12:OutwardNbrs>
<ns12:AllowedOperations>ReadUpdateDelete</ns12:AllowedOperations>
</ns4:AppData>
</ns:NewData>
</ns:ModifyItems>
</ns:data>
</ns:Modify>
</soapenv:Body>

73
EDS Technical Reference Guide 9.1

74
Securing EDS with HTTPS

8 Securing EDS with HTTPS

8.1 Introduction
This chapter outlines how to secure a given EDS instance with a pair of HTTPS certificates (client and
server), signed by a trusted root authority. When EDS is running HTTPS, a client must issue a defined
certificate public key to the server and the server must be aware of the client key’s existence in its local
certificate store. If the server rejects the client credentials, it will issue an HTTP 403 header in response
to the client and terminate the connection.

For the purposes of this document, the examples will be based on self-signed certificates. However, in
a production environment, it is highly recommended to use certificates issued by a recognized root
authority, either provided via your organization’s network administrators or via a trusted 3rd party
provider.

Please note that TEOCO will not be responsible for generating or issuing certificates to customers.

The examples focus on adding HTTPS support to the following ports and endpoints:
 8732 – EDS HTTP SOAP
 8730 – EDS WSDL
 8632 – EDS (Basic) HTTP SOAP
 8630 – EDS (Basic) WSDL

Terms and Abbreviations:

FQDN Fully Qualified Domain Name

WCF Windows Communication Foundation

8.1.1 Preparing the Server/Client


In order to follow this document, you will require administrative access to both a Windows server
hosting EDS as well as a client machine, for the purposes of simplicity we will assume both machines
are running windows. The steps outlined in this document have been successfully attempted on
Windows 7, 10 and Server 2012.

To create self-signed certificates, you will need access to the following utilities:
 MakeCert.exe
 pvk2pfx.exe

These utilities are available as part of the Microsoft Platform SDK (or any Visual Studio Distribution).

Alternatively, Appendix 3 at the end of this chapter has an example Powershell 4.0 script that can
create the necessary self-signed certificates and install them on your server.

Please note that this it is beyond the scope of this document to provide guidance on using this script.

75
EDS Technical Reference Guide 9.1

8.1.2 Opening the Local Machine Certificate Store


All certificates need to be imported into Windows Local Machine store via the Certificates snap-in for
MMC (Microsoft Management Console). To open:

1. Run “mmc” from a console

2. Select “File->Add/Remove Snap-in…”.

3. From the presented dialog select “Certificates”.

4. Click “Add” and when asked which store you wish to open, select “Computer Account”.

8.2 Creating a Trusted Root Certificate Authority


Before Windows will trust any clients linked to a self-signed certificate you need to create a chain of
trust that the server hosting EDS will accept. This is achieved by establishing a root “Certificate
Authority” and placing it within a trusted secure location on the server.

From an elevated command shell (launch cmd.exe as Administrator) run the steps below to create a
root certificate. Then, using mmc import into the Local Computer “Trusted Root Certification
Authorities\Certificates”, enter a password where prompted for the private key store.

Note: Having access to a private key allows consumers to create their own trusted keys, dependent on
the private keys chain. Therefore you should always save your private keys in a secure location.
Furthermore, by placing a self-signed (development) key within the Windows trusted CA store, this will
force the server to trust any further certificates that are chained to it, potentially causing a security risk –
so use this key with caution!

makecert.exe ^
-n "CN=DEMO Root CA – USE WITH CAUTION" ^
-r ^
-pe ^
-a sha512 ^
-len 4096 ^
-cy authority ^
-sv DemoDevelopmentRootCA.Keystore.pvk ^
DemoDevelopmentRootCA.cer

76
Securing EDS with HTTPS

Convert the private key store file (.pvk) into a portable .pfx file (personal exchange format). This file can
be used by other SSL client technologies such as Java.

pvk2pfx.exe ^
-pvk DemoDevelopmentRootCA.Keystore.pvk ^
-spc DemoDevelopmentRootCA.cer ^
-pfx DemoDevelopmentRootCA.Keystore.pfx ^
-po <password>

To import the key into the trusted root store in mmc:


1. From the mmc window select “Trusted Root Certification Authorities->Certificates”.
2. Right click on the folder and select “All Tasks->Import”.
3. Follow the wizard until it asks for a file.
4. Select the .pfx file (as previous), and enter the password where prompted.

77
EDS Technical Reference Guide 9.1

8.3 EDS Service Certificates


Once a root certificate has been established, it is necessary to create a service certificate to register
with EDS.

8.3.1 Background
This paragraph is from the MSDN website:

Service certificates have the primary task of authenticating the server to clients. One of the initial
checks when a client authenticates a server is to compare the value of the Subject field to the Uniform
Resource Identifier (URI) used to contact the service: the DNS of both must match. For example, if the
URI of the service is "http://www.contoso.com/endpoint/" then the Subject field must also contain the
value "www.contoso.com".

Note that the field can contain several values, each prefixed with an initialization to indicate the value.
Most commonly, the initialization is "CN" for common name, for example, "CN = www.contoso.com". It
is also possible for the Subject field to be blank, in which case the Subject Alternative Name field can
contain the DNS Name value.

Also note the value of the Intended Purposes field of the certificate should include an appropriate
value, such as "Server Authentication" or "Client Authentication".

8.3.2 Instructions

The steps required to create a service certificate are very similar to those for establishing the root CA,
from a console execute the following:

makecert.exe ^
-n "CN=MyServer.demo.com" ^
-iv DemoDevelopmentRootCA.Keystore.pvk ^
-ic DemoDevelopmentRootCA.cer ^
-pe ^
-a sha512 ^
-len 4096 ^
-b 01/01/2017 ^
-e 01/01/2020 ^
-sky exchange ^
-eku 1.3.6.1.5.5.7.3.1 ^
-sv EDSServer.pvk ^
EDSServer.cer

Note: You must name the EDS service certificate after the fully qualified domain name of the host
(FQDN). This would normally be <servername>.<dns path>

To verify you have the correct FQDN, you can ping your host address.
pvk2pfx.exe ^
-pvk EDSServer.pvk ^
-spc EDSServer.cer ^
-pfx EDSServer.pfx ^
-po password

Once the service certificate has been created, you must import the EDSServer.pfx certificate into the
“Personal->Certificates” store using mmc following the same wizard steps as previous.

78
Securing EDS with HTTPS

8.3.3 Client Certificates

A client certificate must also be created and imported into the EDS server, this is used to establish a
mutual trust relationship with any approved EDS client that is permitted to connect. The same client
certificate may then be shared with more than one client machine – please note within the context of
this example, any client machine will also need their own copy of the root certificate installed in order for
the client to support the same chain of trust.

To create a client certificate:


makecert.exe ^
-n "CN=demo.com" ^
-iv DemoDevelopmentRootCA.Keystore.pvk ^
-ic DemoDevelopmentRootCA.cer ^
-pe ^
-a sha512 ^
-len 4096 ^
-b 01/01/2017 ^
-e 01/01/2020 ^
-sky exchange ^
-eku 1.3.6.1.5.5.7.3.2 ^
-sv EDSClient.pvk ^
EDSClient.cer
Note: Unlike the service certificate, the client certificate can just use the domain name (without the
server identity) in order for it to be shared with other machines within the local network. Replace the
“demo.com” with your local network DNS path.

pvk2pfx.exe ^
-pvk EDSClient.pvk ^
-spc EDSClient.cer ^
-pfx EDSClient.pfx ^
-po password

Once the client certificate has been created, you must import the EDSClient.pfx certificate into the
“Personal->Certificates” store using mmc following the same wizard steps as previous.

79
EDS Technical Reference Guide 9.1

8.4 Registering the HTTPS Ports with Windows

Once the client and server certificates have been created and installed, you need to configure Windows
to accept one of them on a set of preconfigured ports. To do this you will need to obtain the “thumbprint”
of the service certificate.

8.4.1 Obtaining a Service Thumbprint


To obtain the thumbprint using mmc, find the EDS Service certificate, double click upon it and select the
“Details” tab. From this tab scroll down to the “Thumbprint” item and copy the contents to the clipboard
and paste into a text editor. Please note, this dialog supports a Unicode character set therefore when
copying the thumbprint contents to a text editor or the command shell you may have hidden characters
(at the front) that interfere with it – to remove them use an editor that allows you to convert the string to
an ANSI charset. Once the thumbprint has been copied to a text editor, remove any spaces between
the hexadecimal numbers.

8.4.2 Instructions
Using the thumbprint previously copied, run the following from the command shell:

netsh http add sslcert ipport=0.0.0.0:8732


certhash=bfa6d64854d530016c96c2e326926919cbc40c38 appid={08F6C9E4-DA87-4C3D-
86C4-CA0E272D55A4}

netsh http add sslcert ipport=0.0.0.0:8730


certhash=bfa6d64854d530016c96c2e326926919cbc40c38 appid={08F6C9E4-DA87-4C3D-
86C4-CA0E272D55A5}

netsh http add sslcert ipport=0.0.0.0:8630


certhash=bfa6d64854d530016c96c2e326926919cbc40c38 appid={08F6C9E4-DA87-4C3D-
86C4-CA0E272D55A6}

netsh http add sslcert ipport=0.0.0.0:8632


certhash=bfa6d64854d530016c96c2e326926919cbc40c38 appid={08F6C9E4-DA87-4C3D-
86C4-CA0E272D55A7}

Where certhash is the thumbprint value from the Service Certificate (without spaces) and appid is
gotten from a Registry format generated GUID.

After the thumbprints have been allocated, you will next need to reserve the https namespaces for
same ports and their access rights. To do so execute the following from the command line:

netsh http add urlacl url=https://+:8732/ user=Everyone

netsh http add urlacl url=https://+:8730/ user=Everyone

netsh http add urlacl url=https://+:8632/ user=Everyone

netsh http add urlacl url=https://+:8630/ user=Everyone

80
Securing EDS with HTTPS

8.5 Configuring EDS to Use HTTPS


This section focuses on the steps required to configure EDS to use the newly created service certificate
created earlier. The changes involve creating a new “binding” to replace the existing http binding as well
as specifying where in the certificate store EDS can find our new certificate. Before starting, it is
recommended to take a backup copy of the “TEOCO.EDS.Presentation.Runtime.exe.config” file.

8.5.1 Create an HTTPS Binding


Inside the config file, locate the “<system.serviceModel><bindings><basicHttpBinding>…“
section. Beneath the existing binding for “EDS Streaming Binding” add the following entry:

<binding name="EDS Secure Streaming Binding" closeTimeout="00:03:00" openTimeout="00:01:00"


receiveTimeout="00:30:00" sendTimeout="00:30:00"maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Mtom">
<security mode="Transport">
<transport clientCredentialType="Certificate" proxyCredentialType="None"
realm=""/>
</security>
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
</binding>

For the astute reader, this new binding is identical to the existing one except now it includes a nested
“security” xml element. This new element is what instructs EDS to use transport level security (TLS)
rather than the default method.

8.5.2 Create a Secure Service Behaviour


Service “behaviours” are a mechanism within the WCF framework that allow an endpoint additional
customisation beyond their initial configuration. Within the same config file, locate the section named
“<system.serviceModel><behaviors><serviceBehaviors>…”.

Within this section add the following (after the existing behaviours):

<behavior name="TEOCO.EDS.v1.Secure">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerTrust"
trustedStoreLocation="LocalMachine"/>
</clientCertificate>
<serviceCertificate findValue=" bfa6d64854d530016c96c2e326926919cbc40c38"
storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint"/>
</serviceCredentials>
</behavior>

Within this new entry you will need to indicate the EDS server name and its thumbprint to match the
same value from the EDS Server Certificate – replace the string with the same value used in the
previous section.

81
EDS Technical Reference Guide 9.1

8.5.3 Update the EDS Endpoint Configurations with the new Behaviour and
Binding
The next step is to switch over the two http EDS endpoints to use the new configuration:

Within the config file, locate the section named “services” and where highlighted substitute:

“TEOCO.EDS.v1” for “TEOCO.EDS.v1.Secure”

- and -

“EDS Streaming Binding” for “EDS Secure Streaming Binding”:

Note: it is also advisable to comment out the “identity” element within each block.

8.5.4 Update the WSDL Scheme


Finally, the last step is to alter the WSDL scheme near the top of the configuration file. Where indicated,
replace “http” with “https” – also remember to set the correct hostname within this configuration
section:

82
Securing EDS with HTTPS

8.5.5 Configure the SCHANNEL Registry Key to Permit Clients Registered in


your Certificate Store
Conventionally, this step may not be required on older operating systems (such as Windows 7, 2008),
but for more modern Operating Systems (10, 2012, 2016) it is necessary to alter where Windows looks
for trusted client certificates.

Using Registry Editor, add a new DWORD key named “ClientAuthTrustMode” to the following path,
set to “2”:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Note: This step was necessary in the case of a self-signing demo, however be aware that it may not be
required with a properly issued Root CA or client or server certificate. Without applying this change, any
client that accesses the secured EDS endpoint will be issued with a simple “HTTP 403” rejection which
can indicate anything from an unpermitted client credential or a misconfiguration of the server.

For a full explanation of this registry setting please refer to the following Microsoft article – “Schannel
SSP Technical Overview”:

https://technet.microsoft.com/en-us/library/dn786429(v=ws.11).aspx

83
EDS Technical Reference Guide 9.1

8.6 Testing your Configuration


This section outlines some simple validation steps that can be done to confirm you have successfully
configured EDS to support HTTPS. It will go as far as demonstrating how to use SOAP UI as a client to
an EDS HTTPS instance however any advice on client-side code required to share an HTTPS
certificate is beyond the scope of this document. TEOCO will at some future release an update to the
EDS samples to include a C# based example client.

8.6.1 Confirm EDS Starts (Interactively)


Once all the configuration changes have been made to the TEOCO.EDS.Presentation.Runtime.config it
is highly advisable to start the presentation service manually. This activity will quickly reveal any
configuration issues that may have occurred. To start the presentation service manually, from a
command shell (with administrator rights) enter: “TEOCO.EDS.Presentation.Runtime.exe”.

If EDS has started successfully you will see that the binding configuration listed now supports https:

8.6.2 Confirm that the HTTPS WSDL Endpoint Responds


Once EDS has started, you should now be able to access the secured HTTPS WSDL endpoint. Using a
web browser such as Google chrome, enter the URL as indicated by your configured WSDL address:

You should be able to see your secured endpoint WSDL in response – note you must use the exact
configured hostname as per your SSL certificate otherwise your browser may reject the site as a
security risk.

84
Securing EDS with HTTPS

8.6.3 Test a SOAP Call Using SoapUI


SoapUI is an excellent third party opensource application for testing and debugging web services, it is
available from the following link: https://www.soapui.org/

Once installed you can quickly create a new project by clicking on “File->New SOAP Project” and
entering the EDS HTTP WSDL address it will download the API signatures and create test method calls
for each of the available operations:

As we are using a secured binding we need to give SoapUI our client certificate that we created earlier.
This certificate is used to provide a client credential to EDS in order for it to trust the client.

From the project view on the left-hand side, right click on required project->Show Project View.

In WS-Security Configurations\Keystores tab click on +.

85
EDS Technical Reference Guide 9.1

Navigate to the EDSClient.PFX file that was created earlier and and supply password for certificate.

Then on the individual Request (QueryableTypes is recommended), select “SSL Keystore” in the
Properties window and select the client certificate “EDSClient.pfx”. Finally select the green “play” button
on the SOAP operation and the API should respond similar to the following:

Note: SoapUI sometimes caches previous responses from a web service so its advisable to select the
correct certificate and restart before attempting an EDS query – otherwise it may return an HTTP 403.

8.7 Example TEOCO.Presentation.Runtime.Config


The following contains a fragment from an EDS config containing all of the changes listed from within
this document. Please note this example also contains changes to the netTCP binding which is used by
the EDS Loader (by default):

<address-configuration address="MyServer.Demo.Com">
<message-broker
uri="activemq:failover:(tcp://localhost:61616)?transport.ReconnectDelay=5000&amp;jms.useCompression
=true" />
<services>
<service name="TEOCO.EDS.Presentation.ServiceContract.EDSServiceImpl" address="" wsdl-
address="Aircom/EDS" wsdl-port="8730" wsdl-scheme="https">
<endpoints>
<endpoint name="EDSEndpoint" address="Aircom/EDS/WS" ignorePort="override"
Port="8732" />
<endpoint name="EDSWCFNetTCPEndPoint" address="Aircom/EDS/TCP"
ignorePort="override" Port="8734" />
</endpoints>
</service>

<service name="TEOCO.EDS.Presentation.ServiceContract.EDSBasicServiceImpl" address="" wsdl-


address="Aircom/EDSBasic" wsdl-port="8630" wsdl-scheme="https">
<endpoints>
<endpoint name="EDSBasicEndpoint" address="Aircom/EDSBasic/WS"
ignorePort="override" Port="8632" />
<endpoint name="EDSBasicWCFNetTCPEndPoint" address="Aircom/EDSBasic/TCP"
ignorePort="override" Port="8634" />
</endpoints>
</service>

<service name="TEOCO.EDS.Presentation.ServiceContract.EDSRestService" port="8733"


address="/Aircom/EDS/REST" disablewsdl="true" />
<service name="TEOCO.EDS.Presentation.ServiceContract.EDSBasicRestService" port="8633"
address="/Aircom/EDSBasic/REST" disablewsdl="true" />
</services>

86
Securing EDS with HTTPS

</address-configuration>

<system.serviceModel>

<extensions>
<behaviorExtensions>
<add name="jsonHttpBehaviour"
type="TEOCO.EDS.Presentation.XML.ASSET.Helpers.JsonBehaviorElement,
TEOCO.EDS.Presentation.XML.ASSET" />
</behaviorExtensions>
</extensions>

<bindings>
<basicHttpBinding>
<binding name="EDS Streaming Binding" closeTimeout="00:03:00" openTimeout="00:01:00"
receiveTimeout="00:30:00" sendTimeout="00:30:00" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Mtom"
transferMode="Streamed">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
<binding name="EDS Secure Streaming Binding" closeTimeout="00:03:00"
openTimeout="00:01:00" receiveTimeout="00:30:00" sendTimeout="00:30:00"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" messageEncoding="Mtom">
<security mode="Transport">
<transport clientCredentialType="Certificate" proxyCredentialType="None"
realm=""/>
</security>
<readerQuotas maxDepth="32" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
</binding>
</basicHttpBinding>
<netTcpBinding>
<binding name="EDS Streaming NetTCP Binding" sendTimeout="00:30:00"
transferMode="Streamed" maxReceivedMessageSize="2147483647">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</netTcpBinding>
<customBinding>
<binding name="Custom HTTP Binding">
<webMessageEncoding
webContentTypeMapperType="TEOCO.EDS.Presentation.XML.ASSET.Helpers.RawContentTypeMapper,
TEOCO.EDS.Presentation.XML.ASSET" />
<httpTransport maxReceivedMessageSize="2147483647" transferMode="Streamed"
manualAddressing="true"/>
</binding>
</customBinding>
</bindings>

<services>
<service behaviorConfiguration="TEOCO.EDS.v1.Secure"
name="TEOCO.EDS.Presentation.ServiceContract.EDSBasicServiceImpl">
<endpoint address="http://overwritten_by_address_configuration_block"
binding="basicHttpBinding" bindingConfiguration="EDS Secure Streaming Binding"
name="EDSBasicEndpoint"
bindingNamespace="http://www.aircominternational.com/contract/EDSBasic/2013/03"
contract="TEOCO.EDS.Presentation.XML.ASSET.Contracts.IEDSBasicService"/>

<endpoint address="http://overwritten_by_address_configuration_block"
binding="netTcpBinding" bindingConfiguration="EDS Streaming NetTCP Binding"
name="EDSBasicWCFNetTCPEndPoint"
bindingNamespace="http://www.aircominternational.com/contract/EDSBasic/2013/03"
contract="TEOCO.EDS.Presentation.XML.ASSET.Contracts.IEDSBasicService" />
</service>

<service behaviorConfiguration="TEOCO.EDS.v1.Secure"
name="TEOCO.EDS.Presentation.ServiceContract.EDSServiceImpl">
<endpoint address="https://overwritten_by_address_configuration_block"
binding="basicHttpBinding" bindingConfiguration="EDS Secure Streaming Binding" name="EDSEndpoint"
bindingNamespace="http://www.aircominternational.com/contract/EDS/2009/05"
contract="TEOCO.EDS.Presentation.XML.ASSET.Contracts.IEDSService"/>

<endpoint address="http://overwritten_by_address_configuration_block"
binding="netTcpBinding" bindingConfiguration="EDS Streaming NetTCP Binding"
name="EDSWCFNetTCPEndPoint"

87
EDS Technical Reference Guide 9.1

bindingNamespace="http://www.aircominternational.com/contract/EDS/2009/05"
contract="TEOCO.EDS.Presentation.XML.ASSET.Contracts.IEDSService" />
</service>

<service behaviorConfiguration="TEOCO.EDS.v1"
name="TEOCO.EDS.Presentation.ServiceContract.EDSRestService">
<endpoint address="http://overwritten_by_address_configuration_block"
binding="customBinding" bindingConfiguration="Custom HTTP Binding"
behaviorConfiguration="RESTFriendly" name="EDSRESTEndpoint"
bindingNamespace="http://www.aircominternational.com/contract/EDS/2009/05"
contract="TEOCO.EDS.Presentation.XML.ASSET.Contracts.IEDSRestService"/>

</service>

<service behaviorConfiguration="TEOCO.EDS.v1"
name="TEOCO.EDS.Presentation.ServiceContract.EDSBasicRestService">
<endpoint address="http://overwritten_by_address_configuration_block"
behaviorConfiguration="RESTFriendly" binding="customBinding" bindingConfiguration="Custom HTTP
Binding" name="EDSBasicRESTEndpoint"
bindingNamespace="http://www.aircominternational.com/contract/EDS/2013/03"
contract="TEOCO.EDS.Presentation.XML.ASSET.Contracts.IEDSBasicRestService"/>
</service>
</services>

<behaviors>
<endpointBehaviors>
<behavior name="RESTFriendly">
<jsonHttpBehaviour />
</behavior>
</endpointBehaviors>

<serviceBehaviors>
<behavior name="TEOCO.EDS.v1">
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="TEOCO.EDS.v1.Secure">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<clientCertificate>
<authentication
certificateValidationMode="PeerTrust"
trustedStoreLocation="LocalMachine" customCertificateValidatorType=""/>
</clientCertificate>
<serviceCertificate findValue="41D2438896512C7910FE6C712BF5A86AA1222E33"
storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<diagnostics>
<messageLogging logEntireMessage="false" logMalformedMessages="false"
logMessagesAtTransportLevel="false" />
</diagnostics>
</system.serviceModel>

88
Securing EDS with HTTPS

8.8 Example WCF Client Binding

The following fragment describes what a WCF client configuration might contain in order to share a
certificate with a secured EDS endpoint (either HTTPS or netTCP). Note that the client must share a
certificate of its own to the server in order to be trusted and that the client certificate is installed on the
server itself.

<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="EDSEndpoint" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
messageEncoding="Mtom">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</basicHttpBinding>
<netTcpBinding>
<binding name="EDS Streaming NetTCP Binding" sendTimeout="00:30:00"
transferMode="Streamed" maxReceivedMessageSize="2147483647">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</netTcpBinding>
</bindings>

<behaviors>
<endpointBehaviors>
<behavior name="TEOCO.EDS.v1.Secure">
<clientCredentials>
<clientCertificate findValue="4862B930291A7B57FA06D917C92198694751F0A5"
storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint"
/>
<serviceCertificate>
<authentication certificateValidationMode="PeerOrChainTrust"
trustedStoreLocation="LocalMachine"/>
</serviceCertificate>
</clientCredentials>
<callbackDebug includeExceptionDetailInFaults="true" />
</behavior>
</endpointBehaviors>
</behaviors>

<client>
<endpoint address="https://myserver.demo.com:8732/Aircom/EDS/WS"
binding="basicHttpBinding" bindingConfiguration="EDSEndpoint"
contract="EDSHttps.EDS" name="EDSEndpoint" behaviorConfiguration="TEOCO.EDS.v1.Secure"/>
<endpoint address="net.tcp://myserver.demo.com:8734/Aircom/EDS/TCP"
binding="netTcpBinding" bindingConfiguration="EDS Streaming NetTCP Binding"
contract="EDSHttps.EDS" name="EDSWCFNetTCPEndPoint"
behaviorConfiguration="TEOCO.EDS.v1.Secure">
</endpoint>
</client>
</system.serviceModel>

89
EDS Technical Reference Guide 9.1

8.9 Powershell 4.0 Script for Creating Self-signed Certificates


The following script is an alternative method for creating a self-signed CA and client server certificates
for use with this guide. To use this script you must have a workstation with Powershell 4.0 installed.

Note: This script is provided for information purposes only and is not supported by TEOCO.

To execute the script from a Powershell command line, enter:

. .\CreateCerts.ps1 -hostname myserver -dns demo.com

Where hostname is your EDS server and dns is the trailing FQDN suffix.

param (
[string]$hostname = "my-server",
[string]$dns = "demo.mydomain.com",
[string]$organisation = "O=MYCOMPANY,C=UK"
)

$root = New-SelfSignedCertificate -HashAlgorithm sha384 -KeyAlgorithm RSA -KeyLength 4096 `


-Subject "CN=EDS HTTPS Demo Root Authority,$organisation" `
-KeyUsage DigitalSignature,CertSign -NotAfter (get-date).AddYears(10) `
-CertStoreLocation "Cert:\LocalMachine\My" -Type Custom

$rootca = $root.Thumbprint

$EDSServer = New-SelfSignedCertificate -Type Custom -Subject "CN=$hostname.$dns" `


-HashAlgorithm sha256 -KeyAlgorithm RSA -KeyLength 2048 `
-KeyUsage KeyEncipherment,DigitalSignature `
-KeyExportPolicy Exportable `
-KeySpec KeyExchange `
-Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" `
-CertStoreLocation "cert:\LocalMachine\My" `
-Signer cert:\LocalMachine\My\$rootca `
-TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1","2.5.29.17={text}DNS=$hostname.$dns")

$eds = $EDSServer.Thumbprint
$path = "cert:\localmachine\my\" + $EDSServer.Thumbprint

Export-PfxCertificate -cert $path -FilePath .\EDSServer.pfx -Password (ConvertTo-SecureString


"password" -AsPlainText -Force)

$EDSClient = New-SelfSignedCertificate -Type Custom -Subject "CN=$dns" `


-HashAlgorithm sha256 -KeyAlgorithm RSA -KeyLength 2048 `
-KeyUsage KeyEncipherment,DigitalSignature `
-CertStoreLocation "cert:\LocalMachine\My" `
-Signer cert:\LocalMachine\My\$rootca `
-TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2","2.5.29.17={text}DNS=$dns")

$path = "cert:\localmachine\my\" + $EDSClient.Thumbprint

Export-PfxCertificate -cert $path -FilePath .\EDSClient.pfx -Password (ConvertTo-SecureString


"password" -AsPlainText -Force)

& netsh http delete sslcert ipport=0.0.0.0:8732


& netsh http delete sslcert ipport=0.0.0.0:8730

& netsh http add sslcert ipport=0.0.0.0:8732 certhash=$eds appid='{08F6C9E4-DA87-4C3D-86C4-


CA0E272D55A4}' #clientcertnegotiation=enable
& netsh http add sslcert ipport=0.0.0.0:8730 certhash=$eds appid='{08F6C9E4-DA87-4C3D-86C4-
CA0E272D55A5}' #clientcertnegotiation=enable

90

You might also like