EMS Integration Toolkit

User Guide & Documentation

Version 1.3 | February 2026

Back to App

1. Overview

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).

TL1 Parser/Builder

Parse and construct TL1 (Transaction Language 1) commands used in legacy telecom systems.

Alarm Mapper

Create mappings between EMS alarm codes and OSS-friendly formats with severity levels.

Payload Transformer

Convert data between JSON, XML, CSV, and YAML formats instantly.

SNMP OID Browser

Decode SNMP OIDs, parse SNMP walk output, and browse common MIBs.

NETCONF/XML Tools

Validate XML, test XPath expressions, and format NETCONF configurations.

E2E Integration Generator

Design complete integration solutions with auto-generated code, diagrams, and deployment artifacts.

XML Parser

Parse XML files into a flat table of elements, attributes and values. Download results as CSV.

JSON Parser

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.

2. Getting Started

Accessing the Toolkit

  1. Open your web browser and navigate to https://emstools.web.app
  2. Sign in with your Google account
  3. Select the tool you need from the navigation tabs

System Requirements

Navigation

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.

3. TL1 Parser/Builder

What is TL1?

Transaction Language 1 (TL1) is a widely-used management protocol in telecommunications. It provides a standardized command structure for managing network elements.

TL1 Command Structure

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

Using the Parser

  1. Select the "TL1 Parser/Builder" tab
  2. Choose "Parse TL1" mode
  3. Paste your TL1 command into the input field
  4. Click "Parse Command"
  5. View the parsed components in the results panel

Example Input

RTRV-ALM-ALL:NETWORKELEM1:SLOT-1-1:123::TYPE=CRITICAL,SRVEFF=SA;

Parsed Output

{
  "command": "RTRV-ALM-ALL",
  "tid": "NETWORKELEM1",
  "aid": "SLOT-1-1",
  "ctag": "123",
  "parameters": {
    "TYPE": "CRITICAL",
    "SRVEFF": "SA"
  }
}

Using the Builder

  1. Select "Build TL1" mode
  2. Fill in the command components (Command, TID, AID, CTAG)
  3. Add parameters using the "Add Parameter" button
  4. Click "Build Command"
  5. Copy the generated TL1 command

Tip

Common TL1 commands: RTRV (retrieve), ENT (enter/create), ED (edit), DLT (delete), ACT (activate)

4. Alarm Mapper

Purpose

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.

Creating a Mapping

  1. Select the "Alarm Mapper" tab
  2. Enter the EMS alarm code (e.g., ALM_001)
  3. Enter the OSS description (e.g., Link Down)
  4. Select the severity level:
    • Critical - Service affecting, immediate action required
    • Major - Significant impact, urgent attention needed
    • Minor - Limited impact, scheduled attention
    • Warning - Potential issue, monitoring required
    • Info - Informational, no action needed
  5. Click "Add Mapping"

Mapping Table

All mappings are displayed in a table format showing:

Export/Import

Exporting Mappings

  1. Click the "Export" button
  2. Choose format: JSON or CSV
  3. The file will download automatically

Importing Mappings

  1. Click the "Import" button
  2. Select a JSON or CSV file
  3. Mappings will be added to your existing list

CSV Format

emsCode,ossDescription,severity
ALM_001,Link Down,critical
ALM_002,High CPU Usage,major
ALM_003,Config Changed,info

JSON Format

[
  {
    "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.

5. Payload Transformer

Supported Formats

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

How to Transform

  1. Select the "Payload Transformer" tab
  2. Choose the source format from the dropdown
  3. Paste your data in the input area
  4. Select the target format
  5. Click "Transform"
  6. Copy or download the result

Example: JSON to XML

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>

Working with CSV

When converting to/from CSV:

Tip

Use "Format/Prettify" button to clean up minified or messy data before transforming.

6. SNMP OID Browser

Features

OID Decoder

  1. Select "Decode OID" mode
  2. Enter an OID (e.g., 1.3.6.1.2.1.1.1.0)
  3. Click "Decode"
  4. View the breakdown of each OID component

Example OID Breakdown

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

Common OID Prefixes

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

SNMP Walk Parser

  1. Select "Parse Walk" mode
  2. Paste your SNMP walk output
  3. Click "Parse"
  4. View the structured table of OIDs and values

Example Walk Input

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

MIB Browser

Browse the standard MIB tree to find OIDs. Click on any node to expand and see child objects.

7. NETCONF/XML Tools

Features

XML Validator

  1. Select "Validate XML" mode
  2. Paste your XML content
  3. Click "Validate"
  4. View validation results and any errors with line numbers

XPath Tester

  1. Select "XPath Tester" mode
  2. Paste your XML in the document area
  3. Enter an XPath expression (e.g., //interface/name)
  4. Click "Test XPath"
  5. View matching nodes

Common XPath Examples

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

NETCONF Example

<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']

8. E2E Integration Generator

Overview

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.

Four-Phase Approach

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

Phase 1: Requirements

Capture all integration requirements through six sub-sections:

1.1 Project Details

1.2 Source System

1.3 Destination System

Same configuration options as Source System for the target endpoint.

1.4 Data Mapping

At least one field mapping is required.

1.5 Business Rules (Optional)

Warning

If no business rules are defined, a warning will be shown recommending you add validation or transformation rules.

1.6 Technical Requirements

Warning

If no security requirements are selected, a warning will be shown recommending you enable encryption, authentication, or data masking.

Phase 2: Design

After clicking "Generate Design", the system creates:

Solution Flow Diagram

A Mermaid.js flowchart showing the data flow from source through transformation to destination, including error handling paths.

Architecture Diagram

A component diagram showing the integration architecture with all layers and connections.

Component Breakdown

Table listing all components with their purpose, technology, and status.

Dataflow Specification

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.

Phase 3: Development Artifacts

Generated code artifacts based on your selected tech stack:

Core Integration Code

Job Orchestration

Database Scripts

Infrastructure as Code

Monitoring Configuration

Phase 4: Execution Framework

Final deployment and testing artifacts:

Execution Scripts

Test Suite

Deployment Guide

Complete markdown documentation with prerequisites, step-by-step deployment instructions, and troubleshooting guide.

Export Options

Validation & Error Handling

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.

9. XML Parser

The XML Parser tab has two modes accessible via the toggle at the top: Parse & Flatten and Compare XML.

9.1 Parse & Flatten

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.

Output Columns

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

How to Use

  1. Click the XML Parser tab — it opens in Parse & Flatten mode by default
  2. Paste XML into the textarea or click Upload XML to load a .xml / .txt file
  3. Click Parse XML
  4. Review the results — one row per attribute/text value, across all elements
  5. Click Download CSV to save as xml_parsed_elements.csv, or Copy Table for tab-separated clipboard data (Excel-compatible)

Example Input

<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>

Resulting CSV

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.

9.2 Compare XML

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.

How to Use

  1. Click the XML Parser tab then select Compare XML mode
  2. Paste or upload the base XML into XML 1 — Base
  3. Paste or upload the changed XML into XML 2 — Modified
  4. Click Compare
  5. Review the colour-coded summary bar and results table
  6. Use the filter buttons to focus on specific change types
  7. Click Download CSV to export the visible (filtered) results

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.

Comparison Output Columns

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 Coding

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 Buttons

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.

10. JSON Parser

Purpose

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.

Output Columns

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

How to Use

  1. Click the JSON Parser tab
  2. Paste JSON into the textarea or click Upload JSON to load a .json / .txt file
  3. Click Parse JSON
  4. Review the flattened table — one row per leaf value
  5. Click Download CSV to save as json_parsed_values.csv, or Copy Table for paste into Excel

Example Input

{
  "managedElements": [
    {
      "id": "NE-WEST-01",
      "type": "OTN",
      "slots": [
        { "name": "SLOT-1", "adminState": "IS" }
      ]
    }
  ]
}

Resulting CSV

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

Special Cases

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.

11. Tips & Best Practices

General Tips

Troubleshooting

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

Browser Compatibility

For best experience, use the latest version of:

Need Help?

For questions or feedback, visit our other tools: QR Code Generator | Image Resizer