· Hub for the NS Community ·

2025 february


Header january

Dear community member,

With the developers' conference approaching and another month behind us, we have plenty of news to share. We hope you enjoy it, and look forward to seeing you on March 12th!


NS DevCon

NS DevCon

The Dutch Tax Administration (DTA) is interested in expander training to facilitate the integration of expander development within the organization. In recent years, most expander bundles have been created by external employees who could work with the technology. Today the need for expander building has grown, the Competence Center Normalized Systems (CCNS) has recognized the need to educate more in-house developers and management has expressed interest in workshops on expander development.

The DTA is currently transitioning from mainframe and IPAS servers to an OpenShift-based solution for its entire organization. As early adopters, CCNS is contributing to this transition by providing a standardized solution for deploying applications on the OpenShift platform.

Recently, CCNS has been actively involved in business development within DTA, exploring new ways to enhance the software environment. For challenges such as fraud detection, prevention, and the exchange of large volumes of diverse data, DTA is also exploring the potential of evolvable software and the benefits of Normalized Systems.

Additionally, CCNS is preparing for its first developers' conference for the NS community, scheduled for March 12th at De Knoop in Utrecht.


NS WellData

NS WellData

As healthcare shifts towards prevention rather than merely treating illnesses, access to structured, citizen-controlled data is becoming increasingly important. The WellData project, an Interreg-funded initiative, aims to leverage data-driven insights to support citizens, healthcare professionals, and policymakers in making proactive health decisions.

The main principles of NS, interoperability, privacy, and evolvability— are necessary for SOLID and FHIR, hence they perfectly align. That's why we are contributing our expertise in scalable data platforms to WellData, ensuring citizens can retain control over their health data while benefiting from personalized, preventive care.

Our role in WellData

  • Leveraging SOLID for Citizen-Centric Data Storage: WellData explores how SOLID (Social Linked Data) can provide individuals with a personal data vault, allowing them to manage their health information while sharing it securely with healthcare providers.
  • Building a Robust, Interoperable Data Infrastructure: We are developing a FHIR-based framework to enable structured, privacy-compliant data exchange between healthcare and lifestyle services.
  • Enhancing Accessibility with Zipster: Zipster, the digital referral platform developed by NSX, will be integrated into WellData, ensuring that citizens are directly connected to local health and social care services.
  • Scalability and Evolvability with NS Principles: By applying Normalized Systems Theory, we ensure that WellData remains future-proof, minimizing technical debt and allowing the platform to evolve alongside emerging health challenges.

By combining SOLID, FHIR, and evolvable software principles, we are helping to reshape preventive healthcare, ensuring that citizens remain in control while benefiting from better health insights and timely support.


Rejuvenation

NS Rejuvenation

The Rejuvenation team utilizes the Prime Radiant to track applications, expanders, and their dependencies in real time. This includes monitoring applications, expanders, pipelines, deployments, microRadiant plugins, and repositories.

Beyond dependency tracking, the Prime Radiant provides insights into custom code volume and placement across application layers, element usage, and the expanders applied in each version. All data is recorded over time, enabling historical analysis.

To ensure data currency, NSX projects incorporate an additional step in the Jenkins pipeline, automatically transmitting relevant information to the Prime Radiant.

A dedicated Angular dashboard, built with Angular expanders, visualizes key metrics such as application and expander dependencies, project-specific custom code history, element usage trends, and expander bundle file generation.

This provides valuable insights into NSX software development, and we are only beginning to explore its full potential.


Oracle DB migrations

Oracle DB migration to NSX Model

Problem Statement

For the rebuilding of the BN-applications of rijkswaterstaat it is necessary to apply an NSX model to their existing oracle database. This poses a challenge for the NSX models since they make some assumptions about the database-NSX model relation that might not necessarily hold true for existing databases. The issues that arose as well as their solution(s) are discussed. Keep in mind that the discussion is rather technical.

Problem Statement

Problem 1: Existing Oracle database support
NSX does have default support for Oracle databases already. But some settings have to be tweaked.

Solution
First off, we need to change the `businessLogicSettings` to reflect our oracle database. Second, we will need to change the jdbc in the tomee config / docker compose files to point to our new oracle database.

Problem 2: dataElement name, table name mismatch
The NSX model expects a specific syntax to represent its dataElements, fields, etc. Using this syntax, it will link the dataElements to their corresponding tables. An existing database might not follow these syntax rules, creating a mismatch between the dataElement names and table names. E.g. you have a table named MSB_BN_SOORTEN in the database but the dataElement is named MsbBnSoorten in the NSX model

Solution
Model options exist already to deal with these kinds of mismatches in the current jpa-data-expanders: Link

Problem 3: User Keyword
The NSX model wants users to be inside the ACCOUNT.user table in the database in case you are using the account component. However, having a table called User is not possible in oracle, as it is a keyword.

Solution
Using sql-server-expanders alongside the sql-expanders resolves this issue. Furthermore, we have chosen to put the NSX base components in a different oracle database to keep the original database as intact as possible.

Problem 4: Linkfields and Primary keys
The NSX model assumes every table corresponding to a dataElement in the model contains an ID column. Furthermore, it assumes the ID column represents the primary key of the table. Consequently, every linkField (foreign) is linked to their target using this ID column. However, when connecting to an existing database, having this ID column is not a guarantee. Furthermore, it's possible for foreign key relations to be linked using other unique columns rather than solely the ID column.

Solution 1
If allowed, the easiest option would be to add an ID column to every table and update the foreign key relations to use this ID column. For our project, we wanted to make the least amount of changes to the database as we could get away with. Because adding an ID column and changing the foreign keys had an impact on other applications using the same database.

Solution 2
Our solution consisted of (creating our own or) updating the `jpa-data-layer-expanders`. I extended the expanders, adding support for defining the primary key in the NSX model, as well as defining the targetField that a linkField (foreignKey) is referencing.

Problem 5: ExternalId's
The application had to be built making use of the angular frontend expanders. These expanders mainly communicate with the backend using the rest api. In doing so, it makes use of externalId's to represent the dataElements. These might not necessarily be present in the existing database structure.

Solution 1
Since it was the easiest solution, that had no impact on existing applications running on the same database, we were allowed to simply add externalId columns to all the needed tables

Solution 2
Use a different api instead of the rest-api for the angular expanders to communicate with the backend that don't rely on externalId's


NS Lab

NS Lab

Last but not least, some more exciting news from the NS lab in Prague! Here we got an update of the doctorate on Dissertation Report: Advancing API Evolvability.

The dissertation research is in the area of API Evolvability, specifically focusing on API Migration, aiming to contribute to automation of the necessary changes for API consumers when the consumed APIs evolve.

We began by exploring existing literature on API Migration, identifying multiple approaches that leverage Static Code Analysis and Artificial Intelligence, including Natural Language Processing (NLP) and Machine Learning (ML).

Next, we examined standardized API documentation formats such as OpenAPI Specification and API Blueprint Specification. Based on our investigation, we implemented a formal transformation of API Blueprint documents into OpenAPI Specification, which we published in the article: Semantic Analysis of API Blueprint and OpenAPI Specification.

Additionally, we analyzed API Consumers, API Providers, and API Changes to develop an ontological API model, published in:Towards Evolvable APIs through Ontological Analysis

Finally, we have designed a new approach to API Migration based on:

  • Normalized Systems Theory
  • Code Generation
  • Semantic Data
  • Static Code Analysis
  • FAIR Principles

Kind community regards and see you next month!

energized-with-ns

Back to newsletter overview