LOADING

Anti-corruption layers through functional type safety

This presentation describes the development of a financial middleware that internationally connects several ERP systems (Navision and SAP) to a cloud-based invoicing solution.

Jan Ypma
About This Talk

The world of financial ERP integration is a curious landscape, with high-tech startup hilltops, dotting vast valleys which are seemingly still celebrating the discovery of the wheel. An added complexity is that every financial valley and hilltop has their own language and idea of what constitutes an "invoice" or "order". Combined with communication roads often being closed, integration can be a challenge indeed.

This presentation describes the development of a financial middleware that internationally connects several ERP systems (Navision and SAP) to a cloud-based invoicing solution. Both the invoicing service and the ERP systems pose integration challenges, due to a combination of API mismatches and stability issues. Still, a goal of this middleware was to provide added value by having a useful financial representation across all countries.

A solution was found in careful application of existing data model standards for electronic business documents (UBL), forming an Anti-Corruption Layer as known from Domain-Driven Design, which allows the middleware to present a more straightforward, and reliable, integration target than the invoicing service can. This also allowed for an increased separation of concerns, allowing integration decisions for the ERP systems to reside in different components.

The middleware is developed in Scala, using Akka and ZIO as underlying frameworks, exposing a streaming REST API. It is demonstrated how ZIO's advanced type system has helped prevent classes of errors. Kafka is used as intermediary storage. The system running in production processes over 1000 invoices per day across 6 countries.

more great talks

Might Be Interesting

Day 2
  —  
3:30 pm
arrow pointing right icon

Sounds of Scala.js

Drawing on 25 years of experience as a professional musician and record producer, this will be a beginner focused talk introducing the use of Scala.js and the web audio api for building Scala powered Web Audio Applications.

Day 2
  —  
9:00 am
arrow pointing right icon

Contravariance: intuition building and examples

This talk aims to equip the audience with the minimum required bagage to get comfortable working with contravariance.

Day 1
  —  
8:00 pm
arrow pointing right icon

Scalar Afterparty!

Don't miss out on this opportunity to connect with Scalar community and create lasting memories

Day 1
  —  
2:00 pm
arrow pointing right icon

How slow is your tram?

In this beginner-friendly talk we'll try to find out using the power of Scala and functional programming techniques.

Day 2
  —  
11:30 am
arrow pointing right icon

Implementing multithreading in Scala Native or a story of 201 little pains

Listen to a story of how we have dealt with 201 obstacles allowing us to run multithreaded programs natively!

Day 1
  —  
5:00 pm
arrow pointing right icon

Exploring Build Caching: A Practical Overview

In this talk, we will start with the basics, understanding what build caching is and why it can be a bit tricky to handle in real projects.

See All Events
Join us!

We're looking for amazing speakers.
CFP is open till 10.01.2023

Fill in Call for Papers
location icon

Location

Centrum Konferencyjne POLIN, Poland
stay in touch icon

Follow Us

Contact Us