Skip to content

BISAP

Replacing BI Norwegian Business School's ageing ERP with an event-driven integration platform on Azure.

Category
Work
Type
Website
Year
2026
Stack
.NET · Azure Functions · Azure Service Bus · Azure Web Apps · SAP S/4HANA · SAP SuccessFactors · Entra ID · Salesforce · OData · SAML · GitHub Actions · Claude Code · MCP
Event flowAzure Service BusBannerstudentsSuccessFactorsHRSalesforceCRMPerson serviceidentity graphCapabilitiesAzure FunctionsFacadesREST · ODataSAP S/4HANAfinanceBI.noTimeEditEntra IDevery line is an eventdead-letter · dedup · correlation id
Simplified. Person and employee data moving across BI's core systems.

BISAP is BI Norwegian Business School's programme to replace the ageing Agresso ERP with SAP S/4HANA for finance and SAP SuccessFactors for HR. It means rebuilding every integration between BI's core systems: Banner for students, Salesforce for CRM, SAP, and internal services like TimeEdit and Entra ID.

At the centre sits an event-driven microservice platform on Azure. A shared Person service collects identity data from every source system and distributes updates to downstream consumers over Azure Service Bus. The integration layers follow a Capability and Facade pattern: Capabilities are Azure Functions that consume messages, persist locally and forward to Facades, which are REST APIs translating requests into SAP-specific calls over OData, OAuth and SAML.

Most of the work has been establishing robust, event-driven dataflows for person and employee data across systems with very different data models and ID structures.

As fullstack developer

  • Built the event engine in the Person service that publishes employee, lecturer and student events to downstream systems including BI.no, TimeEdit and Entra ID

  • Designed and implemented a third-party API response structure, Slim, Default and Extended, with granular authorisation roles and database-level privacy filtering so protected personal data never reaches an unauthorised consumer

  • Implemented message reliability across the whole integration chain: error classification, dead-letter handling, deterministic deduplication and correlation tracing

  • Implemented UPN and email generation against Entra Graph, plus detection of inactive people with automatic delete events

  • Upgraded every service to .NET 10 with the matching CI/CD pipelines in GitHub Actions

  • Established a framework for agentic development wired into DevOps for tasks, Confluence for docs, Slack for communication, GitHub for code and Azure for environments, where an automated agent team picks up a task, gathers the context it needs, asks questions, finishes the implementation and documents the result

As project lead for finance

  • Owned the finance integrations against SAP S/4HANA, including the order flow from BI's internal systems and handling of payment discrepancies

  • Built, with agentic coding, a finance dashboard that traces an order through all five systems and gives full visibility into status and errors across the entire chain