BOOST.ERP.Compute
The core ERP backend compute engine for the BOOST platform. Processes 150+ API methods via JMS message queues, covering sales, procurement, inventory, accounting, documents, and more. Deployed as a Kubernetes service.
Note: This project currently lives at
C:\src\BOOST.Middleware(previously named PortalMiddleware). The recommended name is BOOST.ERP.Compute.
Architecture
AMQP Broker
↓
PortalServer (extends Server from BoostMiddleware)
↓
DynamicMethodRegistrator
↓
150+ Controller Methods
↓
┌──────────┬──────────┬────────────┐
│ MySQL │ MongoDB │ ClickHouse │
│ (JOOQ) │ (Driver) │ (Analytics)│
└──────────┴──────────┴────────────┘
+ Redis (cache) + MinIO (files) + Solr (search)Request Flow
- JMS message arrives on queue
boostv3.devapi.messages PortalServer(extends BoostMiddlewareServer) routes by method name- Controller executes business logic with JOOQ database access
- Response sent via JMS reply-to queue
Prerequisites
- Java 15
- AMQP Broker (RabbitMQ / ActiveMQ)
- MySQL (primary ERP data)
- MongoDB (document storage)
- ClickHouse (analytics/reporting)
- Redis (caching)
- MinIO (S3-compatible file storage)
- Apache Solr (full-text search)
Deployment
Kubernetes with Docker:
yaml
replicas: 3
image: qasim786/portalmiddleware
port: 8080dockerfile
FROM eclipse-temurin
ENTRYPOINT java -jar PortalMiddleware-jar-with-dependencies.jarConfiguration
config.properties
properties
broker_url=amqp://172.16.200.32:5672
message_queue_name=boostv3.devapi.messages
dispatcher_queue_name=boost.dispatcher.jobs
redis_uri=redis://172.16.200.65:6379
mongodb.uri=mongodb://172.16.200.35
mqtt_host=tcp://p-s01-mqtt-01.westbahr.netDatabase Pools (HikariCP)
Multiple connection pools for different databases:
hikari-master.properties— Primary ERP databasehikari-qeeping-master.properties— Accounting databasehikari-portal-dev.properties— Portal databasehikari-inv.properties— Inventory database
API Methods
Authentication & Users
| Method | Description |
|---|---|
authenticate | Login user |
getToken | OAuth 2.0 client credentials flow |
createUser | Register new user |
whoami | Get current user info |
refreshPermissionCache | Reload RBAC permissions |
Sales
| Method | Description |
|---|---|
createSalesInvoice | Create invoice |
updateSalesInvoice | Update invoice |
getSalesInvoice | Retrieve invoice |
deleteSalesInvoice | Delete invoice |
createCustomerOrder | Create sales order |
addSalesInvoicePayment | Record payment |
findSalesInvoicesByFilter | Search invoices |
Procurement
| Method | Description |
|---|---|
createPurchaseOrder | Create PO |
updatePurchaseOrder | Update PO |
updatePurchaseOrderStatus | Change PO status |
createReceiptAdvice | Record goods receipt |
getReceiptAdvicesByPurchaseorderUUID | Get receipts for PO |
Inventory
| Method | Description |
|---|---|
createTransaction | Inventory movement |
getTransactionReasons | Transaction types |
getTransactionsBySku | History by SKU |
createArticleStockTakeTransaction | Stock count |
inventoryDoBatchAction | Batch operations |
Items & Catalog
| Method | Description |
|---|---|
createItem / getItem / updateItem / deleteItem | Item CRUD |
createArticle / getArticleById / getArticleBySKU | Article management |
findArticlesByName / findArticlesBySKU | Search |
createItemGroup / getItemGroup | Item groups |
createItemInstance / getItemInstance | Item instances |
getArticleSuppliers | Supplier links |
Accounting
| Method | Description |
|---|---|
createAccJournalEntry | Create journal entry |
getAccJournalEntry | Retrieve entry |
createAccAccountTemplate | Account templates |
Documents
| Method | Description |
|---|---|
createDocument / updateDocument / deleteDocument | Document CRUD |
createDocumentType / getDocumentTypes | Document types |
updateFile | File management |
Other
| Method | Description |
|---|---|
createShipment | Shipment tracking (Postnord) |
createFlowDiagram | Workflow diagrams |
createCatalogue | Product catalogs |
authMinio / authzMinio | MinIO file storage auth |
alivetest | Health check |
Security
- Authentication: JWT Bearer tokens + OAuth 2.0 client credentials
- Authorization: Role-based access control (RBAC) via Casbin
- Object-level: Permission objects for fine-grained access
Key Integrations
| Service | Purpose |
|---|---|
| MinIO | S3-compatible file storage |
| Apache Solr | Full-text search |
| ClickHouse | Analytics and reporting |
| Redis | Caching |
| Twilio | SMS notifications |
| Google Maps | Address validation |
| bank4j | Banking integration |
| Postnord | Shipment tracking |
| BOOST.PDFBuilder | PDF generation |
| BOOST.Dispatcher | Async job processing |
Dependencies
| Dependency | Version | Purpose |
|---|---|---|
qpid-jms-client | 2.5.0 | AMQP messaging |
jooq | 3.19.6 | Type-safe SQL / ORM |
HikariCP | 5.1.0 | Connection pooling |
mysql-connector-java | 8.3.0 | MySQL driver |
mongodb-driver | 5.0.1 | MongoDB access |
clickhouse-client | 0.7.1 | ClickHouse analytics |
solr-solrj | 9.7.0 | Solr search |
jedis | 5.1.2 | Redis client |
minio | 8.4.3 | File storage |
pdfbox | 3.0.2 | PDF handling |
twilio | 10.1.3 | SMS |
casbin | 1.78.0 | RBAC authorization |
flyway | 11.4.0 | DB migrations |
gson | 2.8.9 | JSON processing |
okhttp | 4.12.0 | HTTP client |
bouncycastle | 1.77 | Cryptography |
Project Structure
Note: This project currently lives at
C:\src\BOOST.Middleware.
The source is organized by domain — major business functions have their own packages with controllers and models together, while shared concerns live in controllers/ and models/.
src/com/luqon/
├── boost/ # Main BOOST module
│ ├── accounting/ # AccountController, FiscalYearController
│ ├── address/ # Address model
│ ├── agreements/ # Agreement handling
│ ├── authorization/ # Authorization logic
│ ├── brand/ # Brand management
│ ├── calendar/ # Calendar functionality
│ ├── catalogue/ # Product/item catalogues
│ ├── categories/ # Category management
│ ├── clickhouse/ # ClickHouse analytics integration
│ ├── controllers/ # General controllers (Employee, Organization, GiftCard, WorkSchedule, etc.)
│ ├── core/ # CRUDController, GlobalConfig, record/
│ ├── customer/ # CustomerController, CustomerGroup, AccountingCustomer
│ ├── document/ # Document templates
│ ├── exceptions/ # BadRequest, NotFound, MissingField, etc.
│ ├── facility/ # Facility management
│ ├── files/ # File operations
│ ├── flowdiagram/ # FlowDiagramController
│ ├── integration/ # External integrations
│ │ ├── dabas/ # DABAS integration
│ │ ├── nimpos/ # NIMPOS integration (+ items/)
│ │ ├── solr/ # Solr search integration
│ │ └── tic/ # TIC integration
│ ├── inventory/ # Inventory management
│ ├── items/ # ItemGroupController, ItemTypeController, ItemIngredient
│ ├── jobs/ # JobController, PDFJob, JobData
│ ├── journal/ # Journal/audit logging
│ ├── models/ # Shared models (Employee, Supplier, Task, WorkOrder*, etc.)
│ ├── onboarding/ # Onboarding process
│ ├── organization/ # BankAccount, organization management
│ ├── PDF/ # PDF generation
│ ├── persons/ # AssignedPerson, ResponsiblePerson
│ ├── print/ # Printing functionality
│ ├── procurement/ # Procurement/purchasing
│ ├── project/ # ProjectController, ProjectManager, MainContact
│ ├── repository/ # Data repository/DAO layer
│ ├── sales/ # Sales operations (SalesOrderWorkOrderSourceData)
│ ├── secretary/ # Secretary/administrative functions
│ ├── tasks/ # TaskCommentController, TaskComment
│ └── workorder/ # Work order management
├── boosterp/ # ERP-specific module
│ ├── security/
│ │ └── minio/ # MinIO auth (AuthenticationManager, AuthorizationManager)
│ └── service/impl/
│ ├── PurchaseOrderService.java
│ ├── MinioSecurityService.java
│ └── bank4j/ # Swedish banking (BIC, accounts, transactions)
└── portal/ # Portal/middleware module
├── controllers/ # AccountsReceivable, AccountsPayable, Expense, Postnord, etc.
├── jwt/ # AuthorizationCode, HmacJsonWebToken, RefreshToken
└── middleware/
├── DynamicMethodRegistrator.java
├── GlobalExceptionHandler.java
├── data/ # Core data models (Article, Customer, Invoice, etc.)
├── jooq/ # Generated JOOQ classes (tables, records, pojos, enums)
├── ldap/ # LDAP integration
├── service/dao/ # Data access objects
└── utils/ # Utility classes