System integration simplified Systeem-integratie vereenvoudigd

One service that knows which record in system A matches system B

Eén service die weet welk record in systeem A overeenkomt met systeem B

CrossRef is a service by Web-Bis IT — the central link that translates system IDs, making your integrations faster, more reliable, and easier to maintain.

CrossRef is een dienst van Web-Bis IT — de centrale schakel die systeem-ID's vertaalt, zodat uw integraties sneller, betrouwbaarder en eenvoudiger te onderhouden zijn.


Applications don't speak the same language

Applicaties praten niet dezelfde taal

Many organisations run multiple applications side by side containing the same data — customers, accounts, articles, employees. Each system stores those records under its own number or code. That means application A has no idea which record in application B is the same entity.

Binnen veel organisaties draaien meerdere applicaties naast elkaar met dezelfde gegevens — klanten, accounts, artikelen, medewerkers. Elk systeem kent die records onder een eigen nummer. Daardoor weet applicatie A niet welk record in applicatie B hetzelfde is.

AFAS – Customer recordsKlantendossier

Customers stored with their own internal numbering

Klanten opgeslagen met eigen interne nummering

KL-10042Acme B.V.
KL-10043Bakker & Zonen
KL-10044Delta Logistics

Exact – AccountingBoekhoudpakket

Same customers, but under a different ID structure

Dezelfde klanten, maar met een andere ID-structuur

EX-9981Acme B.V.
EX-9982Bakker & Zonen
EX-9995Delta Logistics

The result without CrossRefHet gevolg zonder CrossRef

Every integration must manage its own mapping between systems. This leads to complex code, errors on changes, and zero central oversight. Adding new systems costs months of effort every time.

Elke integratie moet zelf bijhouden hoe systemen aan elkaar gekoppeld zijn. Dat leidt tot complexe code, fouten bij wijzigingen, en geen enkel centraal overzicht. Nieuwe systemen aankoppelen kost elke keer opnieuw maanden werk.

CrossRef solves this

CrossRef lost dit op

CrossRef is a central service that keeps track of which record in system A corresponds to which record in system B. One reliable source for all ID translations between your applications.

CrossRef is een centrale service die bijhoudt welk record in systeem A overeenkomt met welk record in systeem B. Eén betrouwbare bron voor alle ID-vertalingen tussen uw applicaties.

Faster integrations

Snellere integraties

Connections between systems are simpler to build and maintain — no custom mapping tables needed.

Koppelingen zijn eenvoudiger te bouwen en te onderhouden — zonder eigen vertaaltabellen.

Fewer errors

Minder fouten

One reliable source for ID translation eliminates inconsistencies across your landscape.

Eén betrouwbare bron voor de vertaling tussen systeem-ID's elimineert inconsistenties.

Flexibility

Flexibiliteit

Connecting new systems takes minimal effort — the architecture scales along with you.

Nieuwe systemen aankoppelen kost minimale inspanning — de architectuur schaalt mee.

Full visibility

Volledig overzicht

Always a clear view of which records across which systems are linked to each other.

Altijd inzichtelijk welke records in welke systemen aan elkaar gekoppeld zijn.


CrossRef in practice

Zo werkt CrossRef in de praktijk

Two concrete scenarios showing how CrossRef simplifies and strengthens your integrations.

Twee concrete scenario's die laten zien hoe CrossRef integraties vereenvoudigt en betrouwbaarder maakt.

Example 01

AFAS ↔ Exact: customer lookupklant opzoeken

An integration processes an invoice from AFAS. To post the entry in Exact, it needs the Exact customer number. CrossRef answers immediately.

Een integratie verwerkt een factuur vanuit AFAS. Om de boeking in Exact te plaatsen, is het Exact-klantnummer nodig. CrossRef geeft direct antwoord.

Request to CrossRefVraag aan CrossRef
domain: "account"
from: "AFAS" / "KL-10042"
to: "Exact"
ResponseAntwoord
"EX-9981"
Example 02

HR ↔ CRM: employee matchmedewerker matchen

During onboarding, an employee is created in the HR system. The CRM connector uses CrossRef to automatically locate the matching CRM profile.

Bij onboarding wordt een medewerker aangemaakt in het HR-systeem. De CRM-koppeling gebruikt CrossRef om het bijbehorende CRM-profiel automatisch te vinden.

Request to CrossRefVraag aan CrossRef
domain: "employee"
from: "HRSystem" / "EMP-4471"
to: "CRM"
ResponseAntwoord
"USR-00839"

Designed with security as a foundation

Ontworpen met beveiliging als uitgangspunt

Not bolted on afterwards, but baked into the architecture. CrossRef meets the standards a modern, responsible IT environment requires for access control and traceability.

Niet als toevoeging achteraf, maar ingebakken in de architectuur. CrossRef voldoet aan de eisen die een moderne, verantwoorde IT-omgeving stelt aan toegangsbeheer en traceerbaarheid.

JWT authentication

JWT-authenticatie

Access requires a valid token. No token, no access to any endpoint, period.

Toegang vereist een geldig token. Zonder token geen toegang tot één enkel endpoint.

Role-based authorisation

Rolgebaseerde autorisatie

Admins can create domains; users may only query what their role allows.

Beheerders kunnen domeinen aanmaken; gebruikers mogen alleen opvragen wat voor hun rol beschikbaar is.

Minimal exposure

Minimale blootstelling

Only IDs are stored — never actual customer data. A breach yields no business-sensitive information.

Alleen ID's worden opgeslagen — nooit inhoudelijke klantdata. Een datalek levert geen bedrijfsgevoelige informatie op.

Full audit trail

Volledige audittrail

Every change is recorded: who, what, when. Demonstrably traceable for compliance and audits.

Elke wijziging wordt vastgelegd: wie, wat, wanneer. Aantoonbaar traceerbaar voor compliance en audits.

Structured logging

Gestructureerde logging

All activity is centrally logged for monitoring and early detection of anomalous behaviour.

Alle activiteit wordt centraal gelogd voor monitoring en vroegtijdige signalering van afwijkend gedrag.


Two deployment models — one API

Twee deployment-modellen — één API

CrossRef is available both as a self-hosted on-premise installation and as a fully managed SaaS solution. The API and functionality are identical; only the infrastructure differs.

CrossRef is beschikbaar als zelfgehoste on-premise installatie en als volledig beheerde SaaS-oplossing. De API en functionaliteit zijn identiek; alleen de infrastructuur verschilt.

On-Premise

Self-hosted

Zelfgehost

Run CrossRef on your own infrastructure, fully under your control.

Draai CrossRef op uw eigen infrastructuur, volledig onder uw beheer.

  • Complete data sovereignty — no data ever leaves your networkVolledige data-soevereiniteit — geen data verlaat uw netwerk
  • Deploy on your own servers, VM, or private cloudImplementeer op uw eigen servers, VM of private cloud
  • Fits strict compliance requirements (ISO 27001, NEN 7510, AVG)Past bij strenge compliance-eisen (ISO 27001, NEN 7510, AVG)
  • Direct database access for reporting and backupDirecte databasetoegang voor rapportage en backup
  • You manage updates and infrastructureU beheert updates en infrastructuur zelf
SaaS

Managed cloud — database per tenant

Beheerde cloud — database per tenant

Fully managed by Web-Bis IT. Your own isolated database, zero operational overhead.

Volledig beheerd door Web-Bis IT. Uw eigen geïsoleerde database, nul operationele overhead.

  • Dedicated database per customer — no shared storageEigen database per klant — geen gedeelde opslag
  • Always up-to-date: updates deployed automaticallyAltijd actueel: updates worden automatisch uitgerold
  • High availability with monitoring and backups includedHoge beschikbaarheid met monitoring en back-ups inbegrepen
  • Operational within one business dayOperationeel binnen één werkdag
  • No servers to manage — just use the APIGeen servers te beheren — gewoon de API gebruiken
AspectAspect
On-Premise
SaaS
Data locationDatalocatie
Your own networkUw eigen netwerk
Dedicated cloud DBEigen cloud-database
Infrastructure managementInfrastructuurbeheer
Self-managedZelf beheerd
Fully managedVolledig beheerd
UpdatesUpdates
ManualHandmatig
AutomaticAutomatisch
Data isolationData-isolatie
CompleteVolledig
Per-tenant databaseDatabase per tenant
Time to go liveTijd tot live
Depends on infraAfhankelijk van infra
Within 1 business dayBinnen 1 werkdag
Compliance controlCompliancebeheer
Maximum controlMaximale controle
SLA + shared responsibilitySLA + gedeelde verantwoordelijkheid
API & functionalityAPI & functionaliteit
IdenticalIdentiek
IdenticalIdentiek

Integrate CrossRef in minutes

Integreer CrossRef in minuten

CrossRef provides a simple REST API with JWT authentication. Below you'll find the basics, all available endpoints, and ready-to-use code examples for the most common operations.

CrossRef biedt een eenvoudige REST API met JWT-authenticatie. Hieronder vindt u de basisprincipes, de beschikbare endpoints en kant-en-klare codevoorbeelden voor de meest voorkomende operaties.

Production https://crossref.webbis.nl Live
Development http://localhost:5175 Local

Authentication — JWT Bearer token

All endpoints require a valid JWT token. Add it as the Authorization header on every request:

Alle endpoints vereisen een geldig JWT-token. Voeg dit toe als Authorization header bij elk request:

Authorization: Bearer <your-jwt-token>

Available endpoints

Beschikbare endpoints

GET /crossref/{domain}/Apps/{app}/{key}/{to_app} Get corresponding key Corresponderende sleutel ophalen
GET /crossref/{domain}/Apps/{app}/{key} Get all linked records Alle gekoppelde records ophalen
POST /crossref/{domain}/Apps/{app}/{key}/{to_app}/{to_key} Link records Records koppelen
GET /crossref/{domain}/Apps Get applications in domain Applicaties in domein ophalen
POST /crossref/{domain}/Apps Add application to domain Applicatie toevoegen aan domein
GET /crossref Get all domains (Admin) Alle domeinen ophalen (Admin)
POST /crossref Create domain (Admin) Domein aanmaken (Admin)

Code examples

Codevoorbeelden

// Get corresponding key: AFAS customer → Exact
const baseUrl = 'https://crossref.webbis.nl';
const token   = '<your-jwt-token>';

const res = await fetch(
  `${baseUrl}/crossref/account/Apps/AFAS/12345/Exact`,
  { headers: { 'Authorization': `Bearer ${token}` } }
);

const exactId = await res.json(); // → "67890"
console.log('Exact customer ID:', exactId);
// Get corresponding key: AFAS customer → Exact
var client = new HttpClient();
client.DefaultRequestHeaders.Add(
    "Authorization", $"Bearer {token}"
);

var url = "https://crossref.webbis.nl"
        + "/crossref/account/Apps/AFAS/12345/Exact";

var response = await client.GetStringAsync(url);
// response → "67890"

// Link records: AFAS 12345 ↔ Exact 67890
var linkUrl = "https://crossref.webbis.nl"
           + "/crossref/account/Apps/AFAS/12345/Exact/67890";

var linkRes = await client.PostAsync(linkUrl, null);
import requests

BASE_URL = "https://crossref.webbis.nl"
TOKEN    = "<your-jwt-token>"
HEADERS  = {"Authorization": f"Bearer {TOKEN}"}

# Get corresponding key
resp = requests.get(
    f"{BASE_URL}/crossref/account/Apps/AFAS/12345/Exact",
    headers=HEADERS
)
exact_id = resp.json()  # → "67890"

# Get all linked records
all_keys = requests.get(
    f"{BASE_URL}/crossref/account/Apps/AFAS/12345",
    headers=HEADERS
).json()
# → { "id": "3fa8...", "keys": [ ... ] }
# Get corresponding key (AFAS → Exact)
curl -X GET \
  "https://crossref.webbis.nl/crossref/account/Apps/AFAS/12345/Exact" \
  -H "Authorization: Bearer <your-jwt-token>"

# Response: "67890"


# Get all linked records
curl -X GET \
  "https://crossref.webbis.nl/crossref/account/Apps/AFAS/12345" \
  -H "Authorization: Bearer <your-jwt-token>"

# Response:
# { "id": "3fa85f64...", "keys": [
#     { "key": "12345", "applicationId": "AFAS",  "enabled": true },
#     { "key": "67890", "applicationId": "Exact", "enabled": true } ]
# }
// Boomi Data Process – Groovy 2.4 script
// Use case: look up the Exact ID for an AFAS account during a map step.
// Place this in a "Data Process" shape → Script → Groovy.

import com.boomi.execution.ExecutionUtil
import groovy.json.JsonSlurper

// ── Configuration ────────────────────────────────────────────
// Store the JWT token as a Boomi Connection / Process Property,
// then reference it here via ExecutionUtil.
def props    = ExecutionUtil.getBaseExecutionProperties()
def token    = props.getProperty("EXT_crossref_token")
def baseUrl  = "https://crossref.webbis.nl"

// ── Read the AFAS ID from the current document ───────────────
for (int i = 0; i < dataContext.getDataCount(); i++) {
    def stream  = dataContext.getStream(i)
    def props_doc = dataContext.getProperties(i)
    def afasId  = props_doc.getProperty("document.dynamic.userdefined.afas_id")

    // ── Call CrossRef ─────────────────────────────────────────
    def url = "${baseUrl}/crossref/account/Apps/AFAS/${afasId}/Exact"
    def conn = new URL(url).openConnection()
    conn.setRequestProperty("Authorization", "Bearer ${token}")
    conn.setRequestProperty("Accept",        "application/json")
    conn.connect()

    if (conn.responseCode == 200) {
        def exactId = new JsonSlurper()
                         .parseText(conn.inputStream.text)

        // Write result back as a dynamic document property
        props_doc.setProperty("document.dynamic.userdefined.exact_id",
                              exactId.toString())
    } else {
        throw new Exception(
            "CrossRef lookup failed [${conn.responseCode}] for AFAS ID: ${afasId}"
        )
    }

    dataContext.storeStream(stream, props_doc)
}

// The exact_id property is now available downstream in your map or
// connector shapes as {document.dynamic.userdefined.exact_id}

Roles & permissionsRollen & rechten

Admin
  • Create & manage domains
  • Domeinen aanmaken & beheren
  • Manage applications
  • Applicaties beheren
  • Query & link records
  • Records opvragen & koppelen
  • Full access to all endpoints
  • Volledige toegang tot alle endpoints
Member
  • Manage applications
  • Applicaties beheren
  • Query & link records
  • Records opvragen & koppelen
  • No domain management
  • Geen domeinbeheer
Manager
  • Query records
  • Records opvragen
  • Link records
  • Records koppelen
  • Read-only on domains & apps
  • Alleen-lezen op domeinen & apps

Full API documentation (Swagger)

Volledige API-documentatie (Swagger)

Interactive docs with all endpoints, schemas and try-it-out — crossref.webbis.nl/swagger

Interactieve docs met alle endpoints, schemas en try-it-out — crossref.webbis.nl/swagger


Ready to connect your systems?

Klaar om uw systemen te verbinden?

CrossRef is developed and maintained by Web-Bis IT. Get in touch and discover how CrossRef fits your architecture.

CrossRef is ontwikkeld en wordt beheerd door Web-Bis IT. Neem contact op en ontdek hoe CrossRef past binnen uw architectuur.