ValidationPortal

← Back to Portfolio
ValidationPortal

Jul 2013 – Mar 2024

Internal business support system for IoT SIM provisioning and OTA IMSI management.

Tech Stack

Perl PHP JavaScript Bootstrap MySQL Node.js SOAP JSON APIs RADIUS NetFlow Wireshark Linux VMware

Tags

Enterprise Internal Tool Telecom

About this project

ValidationPortal started as a support engineer's utility and grew into the tool pretty much everyone at Eseye ended up using in some way or other. By the time I left, support, sales, customer success, dispatch, and finance were all on it: looking up SIMs for support tickets, performing support actions (send SMS/USSD, IMSI switch, network steering, de-provision and re-provision, enable/disable services), (pre-)provisioning SIMs for dispatch, pulling company info, running reports on how many SIMs a given customer had and where they were last seen online, and retrieving billing reports and invoices.

It also handled a good chunk of the credit-control side. It surfaced which customers were paying on time and which were running late, helped chase overdue accounts, and let finance suspend an account so that the suspension showed up against that customer and their devices wherever support or sales looked them up. When an account was heading past its credit limit, I could enable or disable services across its SIMs, one at a time or in bulk across a whole account, to stop usage running over.

Tens of thousands of SIMs flowed through it virtually every day. Behind the scenes it integrated with Cisco Jasper, Eseye's own carrier platform, and several internal billing and provisioning systems, wrapping a lot of complexity behind a single interface that non-engineers could actually use.

A fair amount of my time on it went into working out where data actually went and why a bill did not line up. I used RADIUS session accounting to spot gaps between what a customer was billed and what their devices had actually transmitted, reconciled that against the CSV CDRs (Call Detail Records) our telecoms partners sent over, and when I needed to go deeper I worked down from NetFlow, for a coarse read of what went where and when, to Wireshark at the individual-packet level.

Built in Perl on Linux (CentOS and Ubuntu), with a JavaScript and Bootstrap front end and a mix of PHP and Node.js APIs talking to both SOAP and JSON services. I had full-stack control of it: I ran the VMware dev and production VMs across multiple sites, handled backups and snapshots, and owned every update to the application and its dependencies. I worked on it across its whole lifecycle, from feature design and implementation through to operational support and the long tail of new capabilities as customer use-cases came up.