πŸ”§ One Record

SAP ECC 6.0 β†’ fcior/UBL Canonical Order Transformation

Browser-Based W3C VC Compatible 60+ Mapping Rules Semantic Vocabulary

Try It Yourself

Transform SAP orders to fcior/UBL canonical format in your browser - no backend required.

πŸ“€ SAP Order (Source)

πŸ“₯ Canonical Order (fcior/UBL)

About One Record

One Record is a production-ready semantic transformation engine that converts SAP ECC 6.0 sales orders into fcior/UBL-aligned canonical business documents.

What Problem Does It Solve?

Modern business processes need to move away from paper-based systems to digital solutions. However, different ERP systems use different data structures. One Record provides a bridge:

  • Semantic Interoperability: Maps SAP-native fields to standardized UBL/fcior vocabulary
  • W3C VC Ready: Outputs JSON-LD structures compatible with Verifiable Credentials
  • Dual Persistence: Preserves both source and canonical formats for traceability
  • Explainable Mappings: Every transformation includes confidence scores and semantic references

Semantic Vocabularies Used

  • fcior: Finnish Construction Industry One Record (UBL 2.4 compliant)
  • busdoc: Finnish business document ontology (EN 16931-1 compliant)
  • UBL 2.4: Universal Business Language for standardized commerce
  • W3C VC: Verifiable Credentials for cryptographic trust

Architecture

πŸ“¦ Modular Packages

TypeScript monorepo with 4 core packages: canonical-model, sap-model, mapping-engine, persistence

🎯 Declarative Rules

60+ curated mapping rules with semantic references, separate from engine logic

πŸ”„ 25+ Transformations

Date parsing, code lookups, unit of measure conversion, composite field handling

πŸ€– Auto-Suggestions

ML-style suggester for unmapped fields using name similarity and business term matching

πŸŒ‰ The Semantic Bridge Concept

OneRecord uses semantic values that appear identically in SAP, the canonical model, and UBL/Peppol. This creates an automatic mapping bridge without manual coding.

SAP IDoc β†’ ONE-ORD-0001 β†’ UBL cbc:ID

E1EDKA1(AG)/PARTN β†’ EX-BUY-0001 β†’ BuyerCustomerParty/EndpointID

E1EDP19(003)/IDTNR β†’ GTIN-EXAMPLE-0001 β†’ StandardItemIdentification/ID

The blue values are OneRecord semantic identifiers that connect all three worlds automatically. See SEMANTIC_BRIDGE.md for complete mapping table.

Sample Orders Available

πŸ—οΈ Sample #1: Construction

Scenario: Finnish construction company ordering concrete and rebar

Industry: Building materials

Currency: EUR

Line Items: 2 (C30/37 Concrete, Steel Mesh K8-150)

Structure: SAP ECC 6.0 JSON format

⚑ Sample #2: Electronics (ORDERS05 IDoc)

Scenario: UK buyer ordering electric bikes from EU supplier

Industry: Electric mobility equipment

Currency: EUR

Line Items: 1 (Electric Bike Model X1)

Structure: ORDERS05 IDoc with E1EDP19/E1EDP35/E1EDP20 segments

Includes:

  • Multiple product IDs (GTIN, UNSPSC)
  • Serial numbers (E1EDP35)
  • Digital Product Passport (DPP)
  • Environmental Product Declaration (EPD)
  • Hazmat classification (UN3481 - Li-ion batteries)

Use Cases

  • SAP integration with EU Business Wallet (upcoming)
  • Construction industry supply chain automation
  • Cross-border equipment procurement with semantic verification
  • Digital transformation for public and private procurement
  • Multi-industry B2B order standardization

Key Features

πŸŒ‰ Semantic Bridge Features

🎯 ORDERS05 IDoc Support

Full support for SAP ORDERS05 IDoc structure including E1EDP19 (product IDs), E1EDP35 (serialization), E1EDP20 (sustainability/hazmat)

πŸ”— Semantic Identifiers

Same values flow through SAP β†’ OneRecord β†’ UBL automatically (EX-BUY-0001, GTIN-EXAMPLE-0001, etc.)

🌱 Sustainability Docs

Digital Product Passport (DPP) and Environmental Product Declaration (EPD) as AdditionalDocumentReference

⚠️ Hazmat Classification

UN3481 (lithium-ion batteries) and other hazardous goods properly mapped to UBL HazardousItem

πŸ”’ Multiple Product IDs

Seller, buyer, GTIN (0160), and UNSPSC classification codes all preserved in canonical format

🏷️ Serialization

Individual serial numbers (E1EDP35) mapped to ItemInstance/SerialID for product traceability

Core Transformation Features

🎯 95% Confidence

Achieves 95% average confidence on realistic industry orders (construction, electronics)

πŸ“Š Field Traceability

Every canonical field includes source path, transformation used, and confidence score

πŸ” SHACL Validation

Validation shapes defined for fcior Order (execution engine ready for integration)

🌐 JSON-LD Context

Full @context with fcior, busdoc, and UBL namespace mappings

πŸ” VC-Compatible

Structure ready for Ed25519Signature2020 proof wrapping

🐳 Docker-Ready

Multi-stage builds, docker-compose orchestration, production deployment guides

βœ… Tested

10 Jest unit tests + 15 automated integration tests

πŸ“š Documented

165KB+ documentation: quickstart, architecture, API reference, deployment guides

Sample Transformation: SAP β†’ fcior Order

{
  "@context": "https://iri.suomi.fi/model/fcior/",
  "@type": "Order",
  "orderId": "4500012345",
  "issueDate": "2026-04-15",
  "orderType": "Standard Construction Order",
  "buyer": {
    "@type": "Party",
    "partyName": "RakennusyhtiΓΆ Suomi Oy",
    "postalAddress": {
      "streetName": "Mannerheimintie 1",
      "cityName": "Helsinki",
      "postalZone": "00100",
      "countryCode": "FI"
    }
  },
  "seller": { /* ... */ },
  "deliveryTerms": {
    "incoterms": "EXW",
    "deliveryLocation": "Helsinki"
  },
  "orderLines": [ /* 100+ fields mapped with semantic references */ ]
}

Quick Start

# Clone and run
git clone https://github.com/jgmikael/one-record.git
cd one-record
npm run demo

# Or with Docker
docker-compose up

# Open http://localhost:3001

GitHub Repository

One Record is fully open source under the MIT license.

πŸ”— Links

πŸ“¦ Packages

@one-record/canonical-model

fcior-aligned Order types + JSON-LD context (27KB)

@one-record/sap-model

SAP ECC 6.0 TypeScript types (180+ fields)

@one-record/mapping-engine

Complete transformation engine (70KB)

@one-record/persistence

SQLite dual storage with CRUD operations

πŸš€ Applications

@one-record/api

Express REST API (10 endpoints, JSON-LD content type)

@one-record/web

URL-routed frontend (5 tabs, hash navigation)

πŸ“„ Documentation

  • README.md - Complete guide with architecture diagram
  • QUICKSTART.md - 5-minute installation
  • DEMO_WALKTHROUGH.md - Step-by-step demo
  • URL_DEMO_GUIDE.md - Complete URL reference
  • CONTRIBUTING.md - Development workflow
  • CHANGELOG.md - v1.0.0 release notes
  • docs/DOCKER_DEPLOYMENT.md - Production deployment
  • docs/mapping-matrix.md - 100+ field mappings

🀝 Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines. Areas of interest:

  • Additional document types (Invoice, Despatch Advice)
  • SHACL validation execution engine
  • W3C VC signature generation
  • Real-time SAP connector
  • OAuth2/JWT authentication

πŸ‘₯ BETK Working Group

OneRecord v0.9 - Semantic business document transformation

Lead: Kari Korpela

Contributors:

  • Hannu Kivinen
  • Henrik Vinell
  • Juuso Autiosalo
  • Jyrki Oraskari
  • Mikael af HΓ€llstrΓΆm
  • Peter L. Borresen
  • Rikard Larsson
  • Teemu Alaluusua
  • Tom Partanen
  • Antti Taskinen