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.
The problemHet probleem
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.
Customers stored with their own internal numbering
Klanten opgeslagen met eigen interne nummering
Same customers, but under a different ID structure
Dezelfde klanten, maar met een andere ID-structuur
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.
The solutionDe oplossing
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.
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.
One reliable source for ID translation eliminates inconsistencies across your landscape.
Eén betrouwbare bron voor de vertaling tussen systeem-ID's elimineert inconsistenties.
Connecting new systems takes minimal effort — the architecture scales along with you.
Nieuwe systemen aankoppelen kost minimale inspanning — de architectuur schaalt mee.
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.
ExamplesVoorbeelden
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.
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.
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.
SecurityBeveiliging
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.
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.
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.
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.
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.
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.
HostingHosting
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.
Run CrossRef on your own infrastructure, fully under your control.
Draai CrossRef op uw eigen infrastructuur, volledig onder uw beheer.
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.
For developers
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.
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:
// 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}
// Step 1: link records (once, e.g. during onboarding) const linkRes = await fetch( 'https://crossref.webbis.nl/crossref/account/Apps/AFAS/12345/Exact/67890', { method: 'POST', headers: { 'Authorization': `Bearer ${token}` } } ); // Response: MasterkeyModel with all linked keys const masterkey = await linkRes.json(); // → { id: "3fa85f64...", keys: [ // { key: "12345", applicationId: "AFAS", enabled: true }, // { key: "67890", applicationId: "Exact", enabled: true } ] } // Step 2: query as normal afterwards const exactId = await fetch( 'https://crossref.webbis.nl/crossref/account/Apps/AFAS/12345/Exact', { headers: { 'Authorization': `Bearer ${token}` } } ).then(r => r.json()); // → "67890"
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
Contact
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.