Services
Custom software developmentUmbraco developmentWeb developmentCRM developmentERP developmentAI & LLM integration.NET development & modernizationE-commerce developmentIntegrations & automationCloud & DevOpsMaintenance, support & project rescueDedicated teams & white-label
Our Work
Case studiesProducts
About Blog Contact
Web platforms · Events and conferences

EM2: matching thousands of event attendees across 8 .NET microservices

A cloud-native platform for multi-day, multi-venue events: 8 .NET microservices on Azure handle registration, scheduling, attendee matching and Zoom.

ClientEnterprise event organizer
IndustryEvents and conferences
Year2025
CategoryWeb platforms
Event dashboard with attendee counts and quick links for a two-day forum
8.NET microservices with clear domain boundaries
1000sattendees and sessions per event
3external ecosystems integrated
The client

About the client

A company that runs large business events, including multi-day conferences spread across several venues.

EM2 is an enterprise platform for running large, complex events. One event can last several days, use several venues and include thousands of attendees and sessions.

Organizers and admins use it to plan events, register people, arrange sessions and pair attendees for meetings. OSKI works across the platform's services, integrations and cloud setup.

The challenge

What had to be solved

Scale and scheduling were the hard parts.

  • Turn attendee preferences into workable schedules across many sessions and venues.
  • Match attendees by questionnaire answers without manual sorting.
  • Connect to outside systems, including Zoom and the Crimson and Positive ecosystems.
  • Stay secure and responsive under peak event load.
The approach

How the team built it

Services split by domain

The back end is a set of .NET microservices. They communicate through REST calls and Azure Service Bus messages, while Azure Functions run event-driven background jobs. The core uses Clean Architecture, CQRS through MediatR and EF Core. Organizers work in a React 18 and TypeScript app built with Ant Design.

Scheduling and matching as their own services

EM2-Crunch takes raw attendee preferences and produces optimized schedules. A second service, EM2-QuestionnaireService, reads questionnaire answers and pairs attendees during scheduled background runs.

Dedicated integration services

EM2-ZoomService manages webinars and meetings across several Zoom accounts and collects analytics. Inbound and outbound services connect Crimson, with a stub service for integration tests. An inbound link to Positive uses Azure AD auth and supports multiple entities.

Locked down and reproducible

Azure AD B2C with JWT tokens, managed identities and Key Vault protect access. Terraform and Azure DevOps pipelines deploy isolated Dev, Staging and Prod environments, and Application Insights tracks per-service health checks.

Steady feature work

Recent releases added Excel import of conference timings that creates seminar sessions with a line-by-line validation report, bulk inserts with automatic prefixes and attendee status history. A documentation and business-logic audit ran before release.

The outcome

What changed

EM2 gives organizers one system for the full event lifecycle.

  • Core features run across eight microservices with clear domain boundaries.
  • Background services generate schedules and attendee matches.
  • Zoom, Crimson and Positive connect through dedicated integration services.
  • Azure Functions and asynchronous Service Bus messaging let the platform scale out for peak load.
Screens

Inside the product

Start a project

Have a similar project? Tell us about it.

A spec, a Figma file or three paragraphs is enough to start.

  1. First reply · from an engineer, not a sales rep
  2. 30-min call · with Roman, our CTO, to clarify scope
  3. After the call · a written proposal with plan, team and price
Roman Oleksuk
Roman Oleksuk, CTOPrefer to talk? Pick a slot in Roman's calendar
We reply from a human mailbox. No newsletters. Your brief stays under NDA on request. We use your details only to reply; see our privacy policy.