User Guide & Documentation
Version 1.3 | February 2026
The EMS Integration Toolkit is a collection of browser-based utilities designed for Telecom and Network OSS engineers. These tools help with common tasks encountered when integrating Element Management Systems (EMS) with Operations Support Systems (OSS).
Parse and construct TL1 (Transaction Language 1) commands used in legacy telecom systems.
Create mappings between EMS alarm codes and OSS-friendly formats with severity levels.
Convert data between JSON, XML, CSV, and YAML formats instantly.
Decode SNMP OIDs, parse SNMP walk output, and browse common MIBs.
Validate XML, test XPath expressions, and format NETCONF configurations.
Design complete integration solutions with auto-generated code, diagrams, and deployment artifacts.
Parse XML files into a flat table of elements, attributes and values. Download results as CSV.
Flatten nested JSON objects and arrays into dot-notation rows. Download results as CSV.
Privacy First
All processing happens locally in your browser. Your data never leaves your device and is not stored on any server.
The toolkit uses a tab-based navigation system. Click on any tab at the top of the screen to switch between tools. Your work in each tool is preserved while switching tabs.
Transaction Language 1 (TL1) is a widely-used management protocol in telecommunications. It provides a standardized command structure for managing network elements.
COMMAND-CODE:TID:AID:CTAG::PARAMETER1=VALUE1,PARAMETER2=VALUE2;
| Component | Description | Example |
|---|---|---|
| Command Code | The operation to perform | RTRV-ALM-ALL |
| TID | Target Identifier (network element) | NETWORKELEM1 |
| AID | Access Identifier (specific resource) | SLOT-1-1 |
| CTAG | Correlation Tag (unique identifier) | 123 |
| Parameters | Additional command parameters | TYPE=ALL |
RTRV-ALM-ALL:NETWORKELEM1:SLOT-1-1:123::TYPE=CRITICAL,SRVEFF=SA;
{
"command": "RTRV-ALM-ALL",
"tid": "NETWORKELEM1",
"aid": "SLOT-1-1",
"ctag": "123",
"parameters": {
"TYPE": "CRITICAL",
"SRVEFF": "SA"
}
}
Tip
Common TL1 commands: RTRV (retrieve), ENT (enter/create), ED (edit), DLT (delete), ACT (activate)
The Alarm Mapper helps you create and manage mappings between EMS-specific alarm codes and standardized OSS alarm descriptions. This is essential for alarm correlation and unified monitoring.
ALM_001)Link Down)All mappings are displayed in a table format showing:
emsCode,ossDescription,severity
ALM_001,Link Down,critical
ALM_002,High CPU Usage,major
ALM_003,Config Changed,info
[
{
"emsCode": "ALM_001",
"ossDescription": "Link Down",
"severity": "critical"
},
{
"emsCode": "ALM_002",
"ossDescription": "High CPU Usage",
"severity": "major"
}
]
Note
Mappings are stored in your browser's local storage. Export regularly to avoid data loss when clearing browser data.
| Format | Description | Use Case |
|---|---|---|
| JSON | JavaScript Object Notation | REST APIs, modern systems |
| XML | Extensible Markup Language | SOAP, NETCONF, legacy systems |
| CSV | Comma-Separated Values | Spreadsheets, data import/export |
| YAML | YAML Ain't Markup Language | Configuration files, Ansible |
Input (JSON):
{
"alarm": {
"id": "12345",
"severity": "critical",
"source": "router-01"
}
}
Output (XML):
<?xml version="1.0" encoding="UTF-8"?>
<alarm>
<id>12345</id>
<severity>critical</severity>
<source>router-01</source>
</alarm>
When converting to/from CSV:
Tip
Use "Format/Prettify" button to clean up minified or messy data before transforming.
1.3.6.1.2.1.1.1.0)1.3.6.1.2.1.1.1.0 = sysDescr.0
Breakdown:
1 = iso
1.3 = org
1.3.6 = dod
1.3.6.1 = internet
1.3.6.1.2 = mgmt
1.3.6.1.2.1 = mib-2
1.3.6.1.2.1.1 = system
1.3.6.1.2.1.1.1 = sysDescr
| OID | Name | Description |
|---|---|---|
| 1.3.6.1.2.1.1 | system | System information |
| 1.3.6.1.2.1.2 | interfaces | Interface statistics |
| 1.3.6.1.2.1.4 | ip | IP protocol statistics |
| 1.3.6.1.4.1 | enterprises | Vendor-specific MIBs |
SNMPv2-MIB::sysDescr.0 = STRING: Cisco IOS Software
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.1
SNMPv2-MIB::sysUpTime.0 = Timeticks: (123456789) 14 days, 6:56:07.89
SNMPv2-MIB::sysContact.0 = STRING: admin@example.com
SNMPv2-MIB::sysName.0 = STRING: router-01
SNMPv2-MIB::sysLocation.0 = STRING: Data Center 1
Browse the standard MIB tree to find OIDs. Click on any node to expand and see child objects.
//interface/name)| XPath | Selects |
|---|---|
//element |
All elements with that name |
/root/child |
Child elements under root |
//element[@attr='value'] |
Elements with specific attribute |
//element/text() |
Text content of elements |
//element[1] |
First matching element |
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="101">
<get-config>
<source>
<running/>
</source>
<filter type="subtree">
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface>
<name/>
<enabled/>
</interface>
</interfaces>
</filter>
</get-config>
</rpc>
Tip
When working with namespaced XML (common in NETCONF), you may need to use local-name() in XPath: //*[local-name()='interface']
The E2E Integration Solution Generator is a comprehensive wizard that guides you through designing complete integration solutions. It automatically generates architecture diagrams, code artifacts, and deployment configurations based on your requirements.
| Phase | Description | Output |
|---|---|---|
| 1. Requirements | Define project, source, destination, mappings, and rules | Captured specifications |
| 2. Design | Auto-generated solution architecture | Flow diagrams, architecture diagrams |
| 3. Development | Generated code and configurations | Code, database schemas, infrastructure configs |
| 4. Execution | Deployment and testing artifacts | Scripts, test suites, documentation |
Capture all integration requirements through six sub-sections:
Same configuration options as Source System for the target endpoint.
At least one field mapping is required.
Warning
If no business rules are defined, a warning will be shown recommending you add validation or transformation rules.
Warning
If no security requirements are selected, a warning will be shown recommending you enable encryption, authentication, or data masking.
After clicking "Generate Design", the system creates:
A Mermaid.js flowchart showing the data flow from source through transformation to destination, including error handling paths.
A component diagram showing the integration architecture with all layers and connections.
Table listing all components with their purpose, technology, and status.
Step-by-step specification of data transformations and validations.
Tip
You can copy Mermaid diagram code to use in documentation tools like Notion, Confluence, or GitHub markdown.
Generated code artifacts based on your selected tech stack:
Final deployment and testing artifacts:
run.sh / run.bat - Main execution scriptsetup.sh - Environment setuphealth-check.sh - Health verificationComplete markdown documentation with prerequisites, step-by-step deployment instructions, and troubleshooting guide.
The generator includes built-in validation:
| Validation | Type | Message |
|---|---|---|
| Project Name empty | Error | Project Name is required |
| Source Schema empty | Error | Source Schema is required |
| Destination Schema empty | Error | Destination Schema is required |
| No field mappings | Error | At least one field mapping is required |
| No business rules | Warning | Consider adding validation or transformation rules |
| No security options | Warning | Consider enabling encryption or authentication |
Auto-Trim Feature
All text input fields automatically trim leading and trailing whitespace when you leave the field, ensuring clean data for code generation.
The XML Parser tab has two modes accessible via the toggle at the top: Parse & Flatten and Compare XML.
Extracts every element, attribute, and text value from an XML document into a clean 4-column table. Each attribute of each element becomes its own row — no wide dynamic columns, all values stored as plain text.
| Column | Description | Example |
|---|---|---|
| Path | Full XPath-like location of the element | ManagedObjects/ManagedElement/Slot/Port |
| Element | Tag name of the element | Port |
| Attribute | Attribute name, or #text for direct text content |
speed, #text |
| Value | Attribute or text value as plain text | 100G, Loss of Signal |
.xml / .txt filexml_parsed_elements.csv, or Copy Table for tab-separated clipboard data (Excel-compatible)<ManagedObjects>
<ManagedElement id="NE-WEST-01" type="OTN" vendor="Huawei">
<Slot name="SLOT-1" adminState="IS">
<Port id="P1" speed="100G"/>
</Slot>
<Alarm id="ALM-001" severity="MAJOR">Loss of Signal</Alarm>
</ManagedElement>
</ManagedObjects>
Path,Element,Attribute,Value
ManagedObjects/ManagedElement,ManagedElement,id,NE-WEST-01
ManagedObjects/ManagedElement,ManagedElement,type,OTN
ManagedObjects/ManagedElement,ManagedElement,vendor,Huawei
ManagedObjects/ManagedElement/Slot,Slot,name,SLOT-1
ManagedObjects/ManagedElement/Slot,Slot,adminState,IS
ManagedObjects/ManagedElement/Slot/Port,Port,id,P1
ManagedObjects/ManagedElement/Slot/Port,Port,speed,100G
ManagedObjects/ManagedElement/Alarm,Alarm,id,ALM-001
ManagedObjects/ManagedElement/Alarm,Alarm,severity,MAJOR
ManagedObjects/ManagedElement/Alarm,Alarm,#text,Loss of Signal
Tip
Because each attribute is its own row, the table always has exactly 4 columns regardless of how many different attributes exist in the file. This makes it much easier to sort and filter in Excel or any CSV tool.
Compares two XML files attribute-by-attribute and highlights what was added, removed, modified, or unchanged between them. Useful for detecting configuration drift, comparing EMS exports across maintenance windows, or validating changes before and after a network upgrade.
Load Sample
Click Load Sample on each side to load pre-built EMS XMLs with deliberate differences — a quick way to explore the feature without your own files.
| Column | Description |
|---|---|
| Path | XPath-like location of the element in the document tree |
| Element | Tag name of the element |
| Attribute | Attribute name (or #text for text content) |
| Value (XML 1) | Value from the base XML; blank if the attribute did not exist |
| Value (XML 2) | Value from the modified XML; blank if the attribute was removed |
| Status | Added / Removed / Modified / Unchanged |
| Status | Colour | Meaning |
|---|---|---|
| Added | Green | Attribute/element exists only in XML 2 (new in modified file) |
| Removed | Red | Attribute/element exists only in XML 1 (deleted in modified file) |
| Modified | Yellow | Attribute exists in both files but the value has changed |
| Unchanged | — | Attribute exists in both files with identical value |
| Filter | Shows |
|---|---|
| All | Every row regardless of status |
| Changed only | Added + Removed + Modified (excludes Unchanged) |
| Added | Only rows with status Added |
| Removed | Only rows with status Removed |
| Modified | Only rows with status Modified |
How paths are matched
Comparison is done by matching Path + Attribute as a unique key. If the same element tag appears multiple times at the same level (e.g., two <Port> elements under <Slot>), they share the same path key. Differences in repeated elements may appear as Modified rather than Added/Removed. For best results, ensure repeated elements carry a unique identifying attribute (e.g., id or name).
Large Files
All parsing and comparison is done in the browser. Very large XML files may take a few seconds to process.
The JSON Parser flattens any nested JSON structure — objects and arrays — into a simple three-column table showing the full dot-notation path, value type, and value. This makes it easy to inspect deeply nested API responses, EMS inventory exports, or configuration payloads without writing code.
| Column | Description | Example |
|---|---|---|
| Path | Dot-notation path to the value; arrays use [n] index notation |
managedElements[0].slots[1].ports[0].speed |
| Type | JavaScript type of the leaf value | string, number, boolean, null |
| Value | The actual value as a string | 100G |
.json / .txt filejson_parsed_values.csv, or Copy Table for paste into Excel{
"managedElements": [
{
"id": "NE-WEST-01",
"type": "OTN",
"slots": [
{ "name": "SLOT-1", "adminState": "IS" }
]
}
]
}
Path,Type,Value
managedElements[0].id,string,NE-WEST-01
managedElements[0].type,string,OTN
managedElements[0].slots[0].name,string,SLOT-1
managedElements[0].slots[0].adminState,string,IS
| Input | Path | Type | Value |
|---|---|---|---|
null |
path.to.field | null | null |
Empty array [] |
path.to.field | array | [] |
Empty object {} |
path.to.field | object | {} |
| Boolean | path.to.field | boolean | true / false |
Tip
Use Load Sample to see a realistic EMS managed elements JSON with nested slots, ports, and alarms — a good reference for understanding the path notation.
| Issue | Solution |
|---|---|
| TL1 parsing fails | Ensure command ends with semicolon (;) and uses correct separators (:) |
| XML validation error | Check for unclosed tags, special characters (&, <, >) need escaping |
| JSON parsing fails | Validate quotes (use double quotes), check for trailing commas |
| Mappings not saving | Check if browser allows localStorage; try a different browser |
| OID not recognized | The OID may be vendor-specific; check vendor MIB documentation |
For best experience, use the latest version of:
Need Help?
For questions or feedback, visit our other tools: QR Code Generator | Image Resizer