This section provides a step-by-step process for upgrading client-server projects from BAMOE v8 to v9, covering key changes in configuration, security, and deployment.
While both versions use standard Maven project structures (e.g., pom.xml, src/main/java, src/main/resources), there are important differences that must be addressed to ensure a successful migration.
The POM file
The pom.xml file used in BAMOE v8 is not compatible with BAMOE v9. To create a compatible POM, you can either use a BAMOE Accelerator or manually configure it from scratch.
Using BAMOE Accelerators
BAMOE Accelerators are project templates with a ready-to-use structure designed to help you quickly get started with a Business Service project. These templates include a pre-configured POM files tailored for BAMOE v9.
The easiest way to upgrade your project is to replace your existing v8 pom.xml with the one provided in the BAMOE v9 Accelerator, available here:
NOTE: Use the pom.xml content from a branch corresponding to your BAMOE v9 version.
For more information on Accelerators see Getting Started → Setting up a Business Services project and BAMOE Canvas → Using Accelerators.
|
Note
|
You can not simply Apply Accelerator from the BAMOE Canvas to BAMOE v8 project. It would result into invalid project structure. Read more about this limitation here. |
Manual upgrade
If you prefer more control over your Maven configuration, you can manually upgrade your pom.xml by selecting the appropriate dependencies from the official BAMOE Maven repository:
This approach is for advanced users who want to fine-tune their project setup or integrate with existing enterprise build pipelines.
The application properties file
The application.properties content of BAMOE v8 is not compatible with BAMOE v9.
This table shows a summary of the properties specific to v8 and v9.
| Feature | BAMOE 8 | BAMOE 9.2 |
|---|---|---|
|
✅ Used |
❌ Deprecated |
|
✅ Used |
❌ Deprecated |
|
✅ Used |
❌ Deprecated |
|
❌ Not available |
✅ Introduced |
The BAMOE v9 application.properties content will depend on the technology being used.
NOTE: Please review BAMOE Supported environments.
You can find a reference of the main application properties in BAMOE v9 in Reference → Application Properties. You will also find multiple examples based on different use cases throughout the documentation by searching by keyword or by property.
Similarly to the POM file you will also find application.properties in the BAMOE Accelerators, making sure you select the correct version repository branch.
Example: application.properties BAMOE 9 (Quarkus-based)
# Server configuration
quarkus.http.port=8080
quarkus.log.level=INFO
# Data source configuration (PostgreSQL)
quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=kogito_user
quarkus.datasource.password=kogito_pass
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/kogito_db
quarkus.hibernate-orm.database.generation=update
# Kogito persistence
kogito.persistence.type=jdbc
# Enable Kafka messaging
mp.messaging.incoming.kogito_in.connector=smallrye-kafka
mp.messaging.incoming.kogito_in.topic=kogito-events
mp.messaging.incoming.kogito_in.value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
mp.messaging.outgoing.kogito_out.connector=smallrye-kafka
mp.messaging.outgoing.kogito_out.topic=kogito-responses
mp.messaging.outgoing.kogito_out.value.serializer=org.apache.kafka.common.serialization.StringSerializer
# Enable OpenAPI and Swagger UI
quarkus.swagger-ui.always-include=true
quarkus.smallrye-openapi.path=/q/openapi
# Tracing and monitoring
quarkus.opentelemetry.enabled=true
quarkus.opentelemetry.tracer.exporter.otlp.endpoint=http://localhost:4317
quarkus.micrometer.export.prometheus.enabled=true
quarkus.micrometer.export.prometheus.path=/metrics
# Kogito add-ons
kogito.addons.tracing.decision.enabled=true
kogito.addons.monitoring.prometheus.enabled=true
Example: application.properties BAMOE 9 (Spring Boot-based)
# Server configuration
server.port=8080
logging.level.root=INFO
# Data source configuration (PostgreSQL)
spring.datasource.url=jdbc:postgresql://localhost:5432/kogito_db
spring.datasource.username=kogito_user
spring.datasource.password=kogito_pass
spring.jpa.hibernate.ddl-auto=update
# Kogito persistence
kogito.persistence.type=jdbc
# Kafka configuration
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=kogito-group
spring.kafka.consumer.auto-offset-reset=earliest
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
# Kogito Kafka topics
kogito.events.incoming=kogito-events
kogito.events.outgoing=kogito-responses
# OpenAPI and Swagger
springdoc.api-docs.path=/v3/api-docs
springdoc.swagger-ui.path=/swagger-ui.html
# Tracing and monitoring
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true
#kogito.addons.tracing.decision.enabled=true
kogito.addons.monitoring.prometheus.enabled=true
Security configurations
In BAMOE v8, security was typically configured using JBoss EAP SSO. These approaches, while functional, were tightly coupled to the application server.
With BAMOE v9, security configuration has shifted to a modern, standards-based model using external Identity Providers (IdPs) that support OpenID Connect (OIDC). This change aligns with cloud-native best practices and enables more flexible, centralized authentication and authorization strategies.
For detailed steps on how to migrate your existing security configurations, refer to the Upgrading Authentication and Authorization section.
Asset upgrade
Please, see the Upgrading individual assets section to learn how to upgrade individual assets.
API upgrade
Please, see the Production environment comparison section to understand API changes.
How do you know it worked?
To validate that the project upgrade was successful, the upgraded BAMOE v9 project must be built and run. The two options to do this are described below.
The Quarkus Dev mode
The upgraded BAMOE v9 project is a Maven Quarkus project that we can build and start locally as mvn clean package mvn clean quarkus:dev.
The procedure is described in the Getting started with business rule microservice Getting Started → Rule Service in 15 minutes. If you are using Gradle, use the gradle clean quarkusDev command.
Your application.properties must contain the following property:
quarkus.swagger-ui.always-include=true
Once the Dev mode is up and running we should be able to see available Rest endpoints using the address: http://localhost:8080/q/swagger-ui/#/,
Deployment to OpenShift
Deploying a Business Service to OpenShift is described in: Getting Started → Deploying your first Business Service to OpenShift using Quarkus.
Your application.properties must contain the following property:
quarkus.swagger-ui.always-include=true
Once the OpenShift deployment is up and running you should be able to see available Rest endpoints using the address: [OpenShift deployment endpoint]/q/swagger-ui/#/