One widget, every ERP: ending the copy-paste address integration
The dirty secret of enterprise address capture is that the hard part was never the geocoding API call. It's the last metre: writing the validated result back into each platform's idea of what an address is.
Six platforms, six vocabularies
The same validated address lands in six different shapes:
Canonical SAP ADDR1 Maximo Oracle HZ_LOCATIONS ServiceNow TechnologyOne houseNumber → HOUSE_NUM1 HOUSENUM ADDRESS_LINE1_NUM house_number BldgNo streetName → STREET ADDRESS1 ADDRESS1 street StreetName suburb → CITY1 CITY CITY city Suburb latitude → XCOORD1 YCOORD (!) GEO_LATITUDE latitude GeoLat
Note Maximo storing latitude in YCOORD while SAP uses XCOORD1 — the kind of detail that produces assets on the wrong continent when an integrator assumes instead of checking. Multiply this by every system, every project, every contractor rotation, and you get the real line item: the same crosswalk rebuilt from scratch, repeatedly, with fresh mistakes each time.
The plug-and-play bar
Our acceptance test for "plug and play" is strict: a developer on any platform adds address capture with configuration only — an API key and a field-mapping selection — and writes no integration code beyond wiring the widget's output event to their save action. Concretely:
- Generic web (Oracle, TechnologyOne, portals): one script tag, one custom element, one event listener. No framework dependency.
- SAP Fiori: a UI5 custom control bound by annotation, emitting both the canonical address and the ADDR1-mapped payload for Business Partner write-back.
- Salesforce: a Lightning Web Component, Flow-embeddable, so record pages and Experience Cloud portals use the same build.
- ServiceNow: a UI Builder component whose server calls route through an Outbound REST Message — MID Server support included, so on-prem instances without internet egress still work.
The crosswalk lives server-side, versioned
The field mappings ship as maintained presets (SAP ADDR1, Maximo ADDRESS, Oracle HZ_LOCATIONS, ServiceNow cmn_location, Salesforce compound address, TechnologyOne Property) and every change is change-logged. When a new or custom system appears, the mapping copilot proposes a crosswalk from a single sample record — for a human to confirm, not to auto-apply. The widget stays dumb; the intelligence stays governed and in one place.