<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ghofrane WECHCRIA</title>
    <description>The latest articles on Forem by Ghofrane WECHCRIA (@ghofrane_wechcria_50fe903).</description>
    <link>https://forem.com/ghofrane_wechcria_50fe903</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3880828%2Fa4bb784e-540c-4e64-b6e2-05bbf2f6b541.jpg</url>
      <title>Forem: Ghofrane WECHCRIA</title>
      <link>https://forem.com/ghofrane_wechcria_50fe903</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ghofrane_wechcria_50fe903"/>
    <language>en</language>
    <item>
      <title>OrqueIO Benchmarking</title>
      <dc:creator>Ghofrane WECHCRIA</dc:creator>
      <pubDate>Fri, 17 Apr 2026 13:44:38 +0000</pubDate>
      <link>https://forem.com/ghofrane_wechcria_50fe903/orqueio-benchmarking-2o30</link>
      <guid>https://forem.com/ghofrane_wechcria_50fe903/orqueio-benchmarking-2o30</guid>
      <description>&lt;h2&gt;
  
  
  A deep dive into load testing the open-source Camunda 7 fork with Gatling, Kubernetes, and Prometheus
&lt;/h2&gt;

&lt;p&gt;When your business relies on a BPMN engine to orchestrate critical processes, performance is not just a nice-to-have. It is essential. Every millisecond of latency, every failed request, every resource bottleneck translates directly into business impact.&lt;/p&gt;

&lt;p&gt;That is why we put OrqueIO through rigorous performance testing. The results speak for themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is OrqueIO?
&lt;/h2&gt;

&lt;p&gt;OrqueIO is a production-ready, open-source fork of Camunda 7, the industry-standard BPMN 2.0 workflow engine trusted by enterprises worldwide. It was born from the need for long-term support and continuous improvement without costly migrations. OrqueIO preserves full compatibility with existing Camunda 7 processes while delivering enhanced security, stability, and performance.&lt;/p&gt;

&lt;p&gt;For teams facing the end of Camunda 7 support or seeking a vendor-independent BPMN solution, OrqueIO offers a seamless path forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Gatling?
&lt;/h2&gt;

&lt;p&gt;Before diving into the results, let me explain our testing tool. Gatling is an open-source load testing framework written in Scala. Unlike traditional tools that simulate users with threads (which gets expensive at scale), Gatling uses an asynchronous, non-blocking architecture. This means a single Gatling instance can simulate thousands of concurrent users without breaking a sweat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why we chose Gatling:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Code-based simulations:&lt;/strong&gt; Tests are written in Java, making them version-controllable and easy to integrate into CI/CD pipelines&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Realistic load patterns:&lt;/strong&gt; You can ramp up users gradually, hold steady load, or create complex traffic patterns that mirror real-world usage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beautiful reports:&lt;/strong&gt; Gatling generates detailed HTML reports with response time distributions, percentiles, and throughput charts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low resource footprint:&lt;/strong&gt; Thanks to its async architecture, you can generate massive load from modest hardware&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our test scenario is straightforward: we repeatedly call the OrqueIO REST API to start new process instances. This is the most common and performance-critical operation in any workflow engine.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;POST /engine-rest/process-definition/key/{processKey}/start&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Each request creates a new BPMN process instance, persists it to the database, and returns the instance ID. Simple, but it exercises the full stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Testing Setup
&lt;/h2&gt;

&lt;p&gt;We designed our load testing infrastructure to simulate real-world production conditions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes Environment:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon EKS cluster&lt;/li&gt;
&lt;li&gt;All components deployed in the same namespace for simplified networking&lt;/li&gt;
&lt;li&gt;PostgreSQL database running in EKS for consistent latency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Monitoring Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prometheus for metrics collection&lt;/li&gt;
&lt;li&gt;Grafana Alloy for scraping container metrics&lt;/li&gt;
&lt;li&gt;Real-time CPU and memory tracking during test execution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Load Testing Pipeline:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gatling packaged in a Docker container&lt;/li&gt;
&lt;li&gt;Jenkins for orchestration and parameterized test runs&lt;/li&gt;
&lt;li&gt;Automatic report upload to S3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The entire setup is automated. We can spin up a test, adjust pod counts, change resource limits, and compare results across configurations with just a few clicks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Testing Infrastructure
&lt;/h2&gt;

&lt;p&gt;We built a fully automated testing pipeline that anyone can replicate. Here is how all the pieces fit together:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4ww7t6d6fke1a0b7lev.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4ww7t6d6fke1a0b7lev.png" alt=" " width="800" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Flow:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Trigger:&lt;/strong&gt; A developer kicks off a Jenkins build, either manually or on a schedule.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt; Jenkins prompts for test configuration. How many pod replicas? What CPU and memory limits? How long should the test run? How many users per second?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build:&lt;/strong&gt; Jenkins builds the Gatling Docker image and pushes it to Amazon ECR.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scale:&lt;/strong&gt; Before the test starts, Jenkins uses kubectl to scale the OrqueIO deployment to the desired replica count and applies the specified resource limits.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deploy:&lt;/strong&gt; Jenkins deploys the Gatling container as a Kubernetes Job in the same namespace as OrqueIO.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Execute:&lt;/strong&gt; The Gatling pod hammers the OrqueIO REST API with HTTP requests. OrqueIO processes each request and persists data to PostgreSQL.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Monitor:&lt;/strong&gt; Meanwhile, Grafana Alloy scrapes CPU and memory metrics from all pods and pushes them to Prometheus.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Collect:&lt;/strong&gt; When the test finishes, the Gatling pod queries Prometheus for resource usage during the test window, bundles everything into a report, and uploads it to S3.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Gatling in Docker:&lt;/strong&gt; We packaged Gatling in a container along with scripts that automatically query Prometheus during test execution. When a test finishes, we capture not just the Gatling metrics but also the actual CPU and memory consumption of the target pods.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jenkins Pipeline:&lt;/strong&gt; Our Jenkins jobs accept parameters for pod count, CPU limits, memory limits, and test duration. This lets us quickly run comparison tests across different configurations without manual intervention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prometheus Integration:&lt;/strong&gt; During each test, we collect container metrics in real time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU usage via container_cpu_usage_seconds_total&lt;/li&gt;
&lt;li&gt;Memory usage via container_memory_usage_bytes&lt;/li&gt;
&lt;li&gt;Per-pod breakdowns for debugging hotspots&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything gets uploaded to S3 at the end of each run, so we have a historical record of every test.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benchmarking:
&lt;/h2&gt;

&lt;p&gt;We ran three tests with different configurations to understand how OrqueIO behaves under various conditions:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqcf8f3a68ko9ruvwszpc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqcf8f3a68ko9ruvwszpc.png" alt=" " width="800" height="191"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test 1: Single Pod Baseline&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Configuration:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 Pod replica&lt;/li&gt;
&lt;li&gt;CPU: 500m request / 2000m limit&lt;/li&gt;
&lt;li&gt;Memory: 512Mi request / 1Gi limit&lt;/li&gt;
&lt;li&gt;Load: 10 requests per second for 1 minute (600)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Benchmark:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Gatling Report:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnno4l1y46k010vdsgd8o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnno4l1y46k010vdsgd8o.png" alt=" " width="800" height="704"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Interpretation:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6o95prq91toa1srlna9r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6o95prq91toa1srlna9r.png" alt=" " width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Resource Consumption:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU: 0.031 cores average&lt;/li&gt;
&lt;li&gt;Memory: 323 MB stable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;What this tells us:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The single pod handled all &lt;strong&gt;600 requests&lt;/strong&gt; with &lt;strong&gt;zero failures&lt;/strong&gt;. The minimum response time of &lt;strong&gt;37ms&lt;/strong&gt; represents the true baseline , when a request hits the pod with no GC activity. That is impressive for a full BPMN create, database persist, and response cycle.&lt;/p&gt;

&lt;p&gt;The interesting story is in the tail latency. Look at the gap between P95 (72ms) and P99 (478ms) : a 6x jump. This is the classic signature of JVM garbage collection. Most requests fly through quickly, but roughly 1 in 100 gets caught waiting for GC.&lt;/p&gt;

&lt;p&gt;The resource numbers tell us something important: the pod used only &lt;strong&gt;0.031 cores&lt;/strong&gt; (6% of requested) and memory sat stable at &lt;strong&gt;323 MB&lt;/strong&gt;. This pod is not struggling with capacity. It is struggling with GC pauses that happen regardless of load.&lt;/p&gt;




&lt;h2&gt;
  
  
  Test 2: Horizontal Scaling with 3 Pods
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Configuration:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3 Pod replicas&lt;/li&gt;
&lt;li&gt;CPU: 500m request / 2000m limit per pod&lt;/li&gt;
&lt;li&gt;Memory: 512Mi request / 1Gi limit per pod&lt;/li&gt;
&lt;li&gt;Load: 10 requests per second for 1 minute (600)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Benchmark:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Gatling Report:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdg9j8gle9qqs9oa4dybc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdg9j8gle9qqs9oa4dybc.png" alt=" " width="800" height="699"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Interpretation:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffha7f05gsli5vecr8ii1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffha7f05gsli5vecr8ii1.png" alt=" " width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Resource Consumption:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU: 0.101 cores total (about 0.034 per pod)&lt;/li&gt;
&lt;li&gt;Memory: 330 MB per pod&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What this tells us:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We tripled the pods but kept the same load. The improvements go far beyond what simple load distribution would explain.&lt;/p&gt;

&lt;p&gt;The minimum dropped from &lt;strong&gt;37ms&lt;/strong&gt; to &lt;strong&gt;34ms&lt;/strong&gt; : even the best-case benefits from reduced contention. But the real story is tail latency: P99 went from &lt;strong&gt;478ms&lt;/strong&gt; to just &lt;strong&gt;60ms&lt;/strong&gt;, an 87% improvement. Maximum response time fell from 758ms to 116ms.&lt;/p&gt;

&lt;p&gt;Why? When one pod pauses for GC, the load balancer routes requests to the other two pods. The probability that all three pause simultaneously is tiny.&lt;/p&gt;

&lt;p&gt;Most importantly, standard deviation collapsed from 68ms to just 7ms. The system became predictable. Each pod used about 0.034 cores and 330 MB — nearly identical to the single pod test. We did not waste resources. We simply distributed the workload and let each JVM breathe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test 3: Sustained Load (2-Hour Endurance Test)
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Configuration:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 Pod replica&lt;/li&gt;
&lt;li&gt;CPU: 500m request / 2000m limit per pod&lt;/li&gt;
&lt;li&gt;Memory: 512Mi request / 2Gi limit per pod&lt;/li&gt;
&lt;li&gt;Load: 10 requests per second for 2 hours&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Benchmark:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Gatling Report:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26qo210sj90hn0bnp8cs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26qo210sj90hn0bnp8cs.png" alt=" " width="800" height="701"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Interpretation:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ho13rdmpla5mhgjkd88.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ho13rdmpla5mhgjkd88.png" alt=" " width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Response Time Distribution:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under 800ms: 71,971 requests (99.96%)&lt;/li&gt;
&lt;li&gt;800ms to 1200ms: 28 requests (0.04%)&lt;/li&gt;
&lt;li&gt;Over 1200ms: 1 request (0.001%)&lt;/li&gt;
&lt;li&gt;Failed: 0 requests (0%)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Resource Consumption:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU: 0.040 cores per pod average&lt;/li&gt;
&lt;li&gt;Memory: 320 MB per pod average, 450 MB per pod peak&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What this tells us:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the real test. Two hours of sustained load, 72,000 process instances created, and not a single failure. That is production-grade reliability.&lt;/p&gt;

&lt;p&gt;The latency profile stayed remarkably consistent with the short test. Minimum response time actually improved to 32ms, and P99 held steady at &lt;strong&gt;65ms&lt;/strong&gt;. Even after 2 hours, 99.96% of requests completed in under 800ms.&lt;/p&gt;

&lt;p&gt;The 1509ms maximum and the 29 requests over 800ms represent rare GC pauses — about 0.04% of traffic. For most applications, this is perfectly acceptable.&lt;/p&gt;

&lt;p&gt;Memory tells an interesting story. Each pod averages around &lt;strong&gt;320 MB&lt;/strong&gt;. Under sustained load, the heap grows as request objects are created, peaking at around 450 MB per pod, then shrinks after garbage collection runs. This sawtooth pattern is exactly how a healthy Java application behaves. No leaks, no OOM kills, no memory pressure. The 2Gi limit gave plenty of headroom for GC to work efficiently.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Performance Insights
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. GC Pauses are Solvable Through Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The gap between P95 and P99 in single-pod deployments reveals the cost of garbage collection. But you do not need exotic GC tuning. Running multiple pods lets the load balancer route around pauses naturally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Horizontal Scaling Pays Compound Dividends&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tripling pods gave us more than 3x benefit in tail latency. You get fewer pauses (less load per JVM) AND better handling of remaining pauses (redundancy). These benefits compound.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Memory is Stable and Predictable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All tests showed consistent memory usage around 320–330 MB per pod, peaking at 450 MB under load. No memory leaks, no accumulating state. A 512Mi request with 2Gi limit is appropriately sized.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. CPU is Not the Bottleneck&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At 0.03 cores per pod, CPU utilization is negligible. This is typical for IO-bound applications. You can pack OrqueIO pods densely on your nodes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. The Database Keeps Up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With response times in the 40–50ms range including database round trips, PostgreSQL has plenty of headroom. Our PostgreSQL pod (500m CPU, 512Mi memory) handled 72,000 inserts over 2 hours without breaking a sweat. The latency spikes come from JVM pauses, not database contention.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;OrqueIO proves that open-source BPMN engines can deliver enterprise-grade performance. With &lt;strong&gt;sub-50ms&lt;/strong&gt; median latency, linear scaling characteristics, and predictable resource consumption, it is a compelling choice for organizations seeking a sustainable, high-performance workflow automation platform.&lt;/p&gt;

&lt;p&gt;The transition from Camunda 7 to OrqueIO is not just about maintaining compatibility. It is about building on a solid foundation with a clear path forward.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OrqueIO Official Website: &lt;a href="https://www.orqueio.io" rel="noopener noreferrer"&gt;https://www.orqueio.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OrqueIO Documentation: &lt;a href="https://docs.orqueio.io" rel="noopener noreferrer"&gt;https://docs.orqueio.io&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Have you tested OrqueIO in your environment? We would love to hear about your experience. Drop a comment below or reach out on&lt;a href="https://github.com/OrqueIO" rel="noopener noreferrer"&gt; GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>orqueio</category>
      <category>camunda7fork</category>
      <category>bpmn</category>
      <category>workfloworchestration</category>
    </item>
    <item>
      <title>Migrate your Drools rules to OrqueIO DMN</title>
      <dc:creator>Ghofrane WECHCRIA</dc:creator>
      <pubDate>Thu, 16 Apr 2026 14:32:22 +0000</pubDate>
      <link>https://forem.com/ghofrane_wechcria_50fe903/migrate-your-drools-rules-to-orqueio-dmn-1gb0</link>
      <guid>https://forem.com/ghofrane_wechcria_50fe903/migrate-your-drools-rules-to-orqueio-dmn-1gb0</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In a business process, decision-making is essential because it defines the logic that guides the execution of activities. Historically, this logic was externalized into rule engines such as Drools, separating decision-making from orchestration. However, in today’s environments where transparency and collaboration are key, this separation reveals its limitations: rules often remain hidden in technical files, difficult to understand and maintain.&lt;br&gt;
To address these challenges, organizations now seek more integrated approaches. This is exactly what OrqueIO DMN offers: a model in which decisions and processes are brought together within the same ecosystem, providing consistency, clarity, and traceability.&lt;/p&gt;


&lt;h2&gt;
  
  
  1.OrqueIO — The future of open-source orchestration
&lt;/h2&gt;

&lt;p&gt;Before introducing DMN, it’s important to present the execution platform.&lt;br&gt;
OrqueIO is a 100% open-source fork of Camunda, ensuring the long-term future of BPMN automation, maintaining full compatibility with existing workflows while extending and modernizing the engine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What OrqueIO brings:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;100% open-source and fully compatible with your current BPMN/DMN models, connectors, scripts, and APIs&lt;/li&gt;
&lt;li&gt;Ongoing maintenance and guaranteed security updates, ensuring long-term reliability and stability&lt;/li&gt;
&lt;li&gt;New, practical features for daily use, including improved Cockpit monitoring and native DMN integration&lt;/li&gt;
&lt;li&gt;Enhanced performance and engine stability, even under high load&lt;/li&gt;
&lt;li&gt;Expert technical support, transparent and reliable — with no vendor lock-in&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In summary, OrqueIO enables organizations to preserve their existing investments while adopting a modern, sustainable, and open orchestration platform — an environment where integrated decision logic with DMN naturally thrives.&lt;/p&gt;


&lt;h2&gt;
  
  
  2. The limitations of Drools
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Excessive separation from the BPMN process:&lt;/strong&gt;&lt;br&gt;
The rules are stored in .drl files, often isolated in a separate project or module, which scatters business logic and makes it difficult to understand the relationship between decisions and the process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maintenance complexity:&lt;/strong&gt;&lt;br&gt;
This separation between the rule engine and the process leads to difficulties in maintaining overall system consistency over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Barrier for business teams:&lt;/strong&gt;&lt;br&gt;
The rules are written in technical languages such as DRL or MVEL, requiring development skills.&lt;br&gt;
Non-technical users cannot read or modify these rules without IT involvement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lack of traceability and transparency:&lt;/strong&gt;&lt;br&gt;
Drools does not natively provide decision traceability (which rules were applied and why).&lt;br&gt;
This makes audits and regulatory compliance much more difficult.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rigid update cycle:&lt;/strong&gt;&lt;br&gt;
Any modification to a rule requires a full redeployment of the engine or application module, slowing down update cycles and reducing responsiveness.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limits in agility and governance:&lt;/strong&gt;&lt;br&gt;
The Drools model does not encourage collaboration between business and IT teams, nor does it provide clear governance of decision rules integrated into BPMN processes.&lt;/p&gt;


&lt;h2&gt;
  
  
  3. OrqueIO DMN: a unified, readable, and open-source approach
&lt;/h2&gt;

&lt;p&gt;OrqueIO natively integrates the DMN standard (Decision Model and Notation), enabling the unification of process logic (BPMN) and decision logic within the same platform.&lt;br&gt;
Whereas Drools externalizes rules into a separate rule engine, OrqueIO provides an integrated, visual, and transparent approach within a recognized open-source automation ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clear and accessible rule representation&lt;/strong&gt;&lt;br&gt;
In OrqueIO, decisions are modeled as DMN decision tables.&lt;br&gt;
Each row represents a rule, and each column represents a condition or an output.&lt;br&gt;
This visual format is understandable to both business users and developers, replacing the DRL or MVEL source code used in Drools.&lt;br&gt;
Business analysts can define, adjust, and validate decision logic without heavy reliance on technical teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Native BPMN ↔ DMN Integration&lt;/strong&gt;&lt;br&gt;
In OrqueIO, a Business Rule Task can directly invoke a DMN decision table from within the same project.&lt;br&gt;
No external connectors, no complex integration: the process and the decision belong to the same executable model.&lt;br&gt;
This results in a decision logic that is coherent, centralized, and fully traceable across the entire workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built-in traceability and audit&lt;/strong&gt;&lt;br&gt;
Every decision execution is automatically logged.&lt;br&gt;
Teams can easily review:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which rules were evaluated,&lt;/li&gt;
&lt;li&gt;the input values,&lt;/li&gt;
&lt;li&gt;and the resulting outputs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This greatly simplifies audits, gap analysis, regulatory compliance, and continuous improvement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A complete and consistent ecosystem&lt;/strong&gt;&lt;br&gt;
OrqueIO provides a unified environment combining:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BPMN for process orchestration,&lt;/li&gt;
&lt;li&gt;DMN for decision logic,&lt;/li&gt;
&lt;li&gt;Cockpit for monitoring and analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is centralized, extensible, interoperable, and designed to enhance collaboration between business teams and IT.&lt;/p&gt;


&lt;h2&gt;
  
  
  4. Why migrate to OrqueIO DMN?
&lt;/h2&gt;

&lt;p&gt;The transition from Drools is not just a tool replacement —&lt;br&gt;
it is the adoption of a more agile, readable, and collaborative decision model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Centralization of decisions and processes&lt;/strong&gt;&lt;br&gt;
Decisions are no longer isolated in a separate technical module.&lt;br&gt;
They coexist with business processes within the same execution environment, ensuring a unified and coherent view of the system’s behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simplified maintenance&lt;/strong&gt;&lt;br&gt;
Modifying a rule no longer requires redeploying the application.&lt;br&gt;
A simple update to the DMN decision table is enough to adjust the business logic, reducing delivery cycles and improving operational responsiveness.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enhanced collaboration&lt;/strong&gt;&lt;br&gt;
Business teams design and adjust rules, while developers focus on integration and robustness.&lt;br&gt;
The result: fewer misunderstandings, fewer back-and-forth steps, and greater overall efficiency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitoring and transparency&lt;/strong&gt;&lt;br&gt;
With the Cockpit interface, every executed decision is observable, explainable, and interpretable.&lt;br&gt;
This transparency simplifies optimization, control, and regulatory compliance.&lt;/p&gt;

&lt;p&gt;Below is a comparison table summarizing the main differences between Drools and OrqueIO:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkv30po5dkeg8wpbieue.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkv30po5dkeg8wpbieue.png" alt="Comparison of Drools and OrqueIO DMN" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  5.Concrete example of the transition: from Drools to OrqueIO DMN
&lt;/h2&gt;

&lt;p&gt;We want to apply discounts based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the customer type (Standard, Premium, VIP)&lt;/li&gt;
&lt;li&gt;the order amount (orderAmount)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Drools version (Before)&lt;/strong&gt;&lt;br&gt;
This &lt;em&gt;.drl&lt;/em&gt; file contains the rules, written in Drools syntax&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;io.orqueio.bpm.exemple.dmn.model.Order&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="s"&gt;"Standard &amp;lt; 100"&lt;/span&gt;
    &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Order&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clientType&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"Standard"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;orderAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDiscount&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="s"&gt;"Standard 100..500"&lt;/span&gt;
    &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Order&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clientType&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"Standard"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;orderAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;orderAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDiscount&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="s"&gt;"Standard &amp;gt;= 500"&lt;/span&gt;
    &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Order&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clientType&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"Standard"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;orderAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDiscount&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="s"&gt;"Premium &amp;lt; 100"&lt;/span&gt;
    &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Order&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clientType&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"Premium"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;orderAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDiscount&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="s"&gt;"Premium 100..500"&lt;/span&gt;
    &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Order&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clientType&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"Premium"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;orderAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;orderAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDiscount&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="s"&gt;"Premium &amp;gt;= 500"&lt;/span&gt;
    &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Order&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clientType&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"Premium"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;orderAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDiscount&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="s"&gt;"VIP &amp;lt; 500"&lt;/span&gt;
    &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Order&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clientType&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"VIP"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;orderAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDiscount&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="s"&gt;"VIP 500..1000"&lt;/span&gt;
    &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Order&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clientType&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"VIP"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;orderAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;orderAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDiscount&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="s"&gt;"VIP &amp;gt;= 1000"&lt;/span&gt;
    &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Order&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clientType&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"VIP"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;orderAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;then&lt;/span&gt; &lt;span class="n"&gt;$o&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDiscount&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Implementation with DMN in OrqueIO&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With DMN, the decision logic is defined in the form of a decision model, in which we explicitly describe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which data serves as inputs to the decision,&lt;/li&gt;
&lt;li&gt;which conditions are applied,&lt;/li&gt;
&lt;li&gt;and which result must be produced.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This model can be edited visually, either as a table or as a diagram, which allows business teams to understand and adjust the logic more easily.&lt;/p&gt;

&lt;p&gt;At the same time, that same logic is stored in a standard DMN XML file, which is used by the engine for execution.&lt;br&gt;
The graphical view and the XML view are simply two representations of the same model, always kept in sync.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp459273upvpedvwpxnch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp459273upvpedvwpxnch.png" alt="Capture for the decision section" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the BPMN diagram, you simply add a Business Rule Task:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furlus2qi3x5hfbzxyaah.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furlus2qi3x5hfbzxyaah.png" alt="BPMN Workflow for an Order Processing" width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Calling a decision does not require any complex configuration.&lt;br&gt;
In the BPMN diagram, a simple Business Rule Task is enough.&lt;br&gt;
You only need to specify the decision reference (the ID defined in the DMN model), and the engine takes care of the evaluation.No additional technical configuration is required.&lt;br&gt;
The decision is executed automatically when the BPMN flow reaches the decision task.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Migrating from Drools to OrqueIO DMN is more than a modernization effort — it is a strategic shift toward transparency, agility, and collaboration. By bringing decision logic closer to BPMN processes, organizations eliminate silos, simplify maintenance, and empower business teams to directly contribute to the evolution of rules. The result is a unified, traceable, and adaptable system where decisions are easier to understand, update, and audit.&lt;/p&gt;

&lt;p&gt;With OrqueIO DMN, your business logic becomes clearer, your delivery cycles faster, and your governance stronger. This transition enables organizations to move from rigid rule engines to an integrated decision model that supports continuous improvement and operational efficiency.&lt;/p&gt;




&lt;p&gt;🌐 Learn more about &lt;a href="https://www.orqueio.io/" rel="noopener noreferrer"&gt;OrqueIO&lt;/a&gt;&lt;br&gt;
📂 Explore the &lt;a href="https://github.com/OrqueIO/example-order-process" rel="noopener noreferrer"&gt;example Order Process&lt;/a&gt; from the OrqueIO webinar&lt;/p&gt;

</description>
      <category>drools</category>
      <category>orqueio</category>
      <category>dmn</category>
      <category>businessprocesses</category>
    </item>
    <item>
      <title>Camunda 7 End of Life: Why More Teams Are Choosing OrqueIO as Their Migration Alternative</title>
      <dc:creator>Ghofrane WECHCRIA</dc:creator>
      <pubDate>Thu, 16 Apr 2026 13:48:23 +0000</pubDate>
      <link>https://forem.com/ghofrane_wechcria_50fe903/camunda-7-end-of-life-why-more-teams-are-choosing-orqueio-as-their-migration-alternative-40e8</link>
      <guid>https://forem.com/ghofrane_wechcria_50fe903/camunda-7-end-of-life-why-more-teams-are-choosing-orqueio-as-their-migration-alternative-40e8</guid>
      <description>&lt;p&gt;With Camunda 7 Community Edition now officially reaching end of life, many organizations are asking the same question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What comes next for our workflow orchestration platform?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For teams heavily invested in BPMN automation and process orchestration, the obvious path may seem to be migrating to Camunda 8.&lt;br&gt;
But in reality, many companies quickly discover that moving to Camunda 8 is &lt;strong&gt;far from a simple upgrade&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It often requires:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Major process refactoring&lt;/li&gt;
&lt;li&gt;New infrastructure and architecture changes&lt;/li&gt;
&lt;li&gt;Reworking integrations and deployment pipelines&lt;/li&gt;
&lt;li&gt;Significant investment in time, budget, and training&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For organizations running large-scale orchestration environments, this can represent a major technical and business challenge.&lt;/p&gt;

&lt;p&gt;That’s exactly why we built OrqueIO.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;OrqueIO: A Modern Open-Source Alternative to Camunda 7&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OrqueIO is a modern, long-term supported fork of Camunda 7, designed for organizations that want to preserve their existing workflow architecture without going through a painful migration.&lt;/p&gt;

&lt;p&gt;Instead of rebuilding everything from scratch, OrqueIO allows teams to continue running their BPMN processes and applications on a modernized, future-proof foundation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With OrqueIO, you get:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full compatibility with existing Camunda 7 BPMN/DMN models and APIs&lt;/li&gt;
&lt;li&gt;Java 25, Spring Boot 4 and Angular modern stack&lt;/li&gt;
&lt;li&gt;Continuous security updates and platform improvements&lt;/li&gt;
&lt;li&gt;Free and open-source licensing&lt;/li&gt;
&lt;li&gt;Optional enterprise support for production environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short:&lt;/p&gt;

&lt;p&gt;OrqueIO enables you to keep your Camunda 7 investment while moving forward with a modern platform.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Built for Enterprises That Need Stability and Continuity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OrqueIO was not created as an experimental fork.&lt;/p&gt;

&lt;p&gt;It was designed by engineers with real-world enterprise experience operating Camunda-based systems in large production environments.&lt;/p&gt;

&lt;p&gt;Our goal was simple:&lt;/p&gt;

&lt;p&gt;Preserve compatibility. Remove technical debt. Modernize the platform.&lt;/p&gt;

&lt;p&gt;This means organizations can benefit from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;smoother upgrades,&lt;/li&gt;
&lt;li&gt;lower migration risk,&lt;/li&gt;
&lt;li&gt;reduced maintenance overhead,&lt;/li&gt;
&lt;li&gt;and long-term platform sustainability.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;More Than a Fork: A Platform Evolving Beyond Camunda 7&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While compatibility remains at the core of OrqueIO, our ambition goes further.&lt;/p&gt;

&lt;p&gt;Our roadmap includes a growing set of enterprise-ready capabilities to make orchestration smarter, simpler, and more secure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Single Sign-On (SSO) and centralized identity management&lt;/li&gt;
&lt;li&gt;Enhanced observability and analytics dashboards&lt;/li&gt;
&lt;li&gt;Built-in documentation and model insights directly in the UI&lt;/li&gt;
&lt;li&gt;Continuous UI/UX modernization across all modules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Our philosophy remains unchanged:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Keep compatibility. Add value. Evolve continuously.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;The Future of Camunda 7 Doesn't Have to End Here&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Camunda 7 may have reached end of life, but that does not mean organizations need to abandon their architecture or rebuild everything.&lt;/p&gt;

&lt;p&gt;For teams looking for a &lt;strong&gt;Camunda 7 alternative, Camunda 7 fork,&lt;/strong&gt; or &lt;strong&gt;open-source workflow engine compatible with existing BPMN applications&lt;/strong&gt;, OrqueIO provides a pragmatic path forward.&lt;/p&gt;

&lt;p&gt;If your company wants to modernize without rewriting years of orchestration logic, OrqueIO may be exactly what you’re looking for.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Learn more about OrqueIO:&lt;/strong&gt; &lt;a href="https://www.orqueio.io" rel="noopener noreferrer"&gt;https://www.orqueio.io&lt;/a&gt;&lt;/p&gt;

</description>
      <category>orqueio</category>
      <category>camunda7fork</category>
      <category>camundaalternative</category>
      <category>bpm</category>
    </item>
    <item>
      <title>Camunda 7 EOL — What Comes Next?</title>
      <dc:creator>Ghofrane WECHCRIA</dc:creator>
      <pubDate>Thu, 16 Apr 2026 10:39:30 +0000</pubDate>
      <link>https://forem.com/ghofrane_wechcria_50fe903/camunda-7-eol-what-comes-next-2de9</link>
      <guid>https://forem.com/ghofrane_wechcria_50fe903/camunda-7-eol-what-comes-next-2de9</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Camunda 7 Community Edition, one of the most widely used BPMN workflow engines, reached its end of life in October 2025. For many enterprises, this marks a critical turning point: running business-critical workflows on an unsupported platform can create security risks, operational challenges, and technical debt.&lt;/p&gt;

&lt;p&gt;As organizations look for ways to maintain continuity and stability, it's essential to explore alternatives that preserve existing processes without major disruptions. &lt;strong&gt;OrqueIO, the most modern fork of Camunda 7&lt;/strong&gt;, offers a practical solution for teams that want to keep the trusted architecture of Camunda 7 while gaining long-term support, security, and flexibility.&lt;/p&gt;




&lt;h2&gt;
  
  
  End of Life of Camunda 7 Community
&lt;/h2&gt;

&lt;p&gt;In October 2025, Camunda 7 Community Edition reached its official end of life, with the final release (v7.24) published on October 14, 2025. Since then, Camunda 7 CE no longer receives updates, security patches, or official support.&lt;/p&gt;

&lt;p&gt;Any production environment running Camunda 7 CE after that date faced increased security risks and potential operational issues. For enterprises relying on Camunda 7 to manage critical workflows, this resulted in higher maintenance costs, accumulated technical debt, and reduced system stability. Without vendor support, addressing bugs or vulnerabilities became more difficult, making business continuity a real challenge.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Risks of Staying on Camunda 7 CE
&lt;/h2&gt;

&lt;p&gt;Continuing to run Camunda 7 Community Edition after its end of life comes with several risks for enterprises:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Technical debt:&lt;/strong&gt; Outdated workflows and custom extensions may become harder to maintain.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security vulnerabilities:&lt;/strong&gt; Without updates or patches, systems are more exposed to attacks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Maintenance challenges:&lt;/strong&gt; Troubleshooting and fixing issues without official support can slow down operations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Impact on critical processes:&lt;/strong&gt; Business-critical workflows may experience downtime or instability, affecting overall productivity and reliability.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Choosing the right path now can prevent disruptions and ensure that workflows continue running smoothly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Migration to Camunda 8: A Complex Journey
&lt;/h2&gt;

&lt;p&gt;Moving from Camunda 7 CE to Camunda 8 involves a complex process. Enterprises should be aware of the challenges involved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Workflow adjustments:&lt;/strong&gt; Existing BPMN models can often be migrated, but some elements, attributes, and extensions from Camunda 7 may need modification to run on Camunda 8.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;New architecture:&lt;/strong&gt; Camunda 8 uses a cloud-native, event-driven platform that differs significantly from Camunda 7.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Team adaptation:&lt;/strong&gt; Developers and operators need to become familiar with Camunda 8's APIs, operational patterns, and new workflow tools.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;High migration cost:&lt;/strong&gt; Moving to Camunda 8 requires significant time, resources, and financial investment, especially for organizations with complex workflows.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While Camunda 8 introduces modern features, the migration effort can be significant, especially for organizations with complex or mission-critical workflows.&lt;/p&gt;




&lt;h2&gt;
  
  
  OrqueIO: A Camunda 7 Alternative
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OrqueIO&lt;/strong&gt; is the most modern fork of Camunda 7, designed to provide enterprises with a seamless path beyond Camunda 7 CE &lt;strong&gt;without disruptions or rewrites.&lt;/strong&gt; It allows teams to maintain their existing BPMN workflows, APIs, and extensions while benefiting from a modern, continuously evolving platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key benefits of OrqueIO:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Operational continuity:&lt;/strong&gt; High availability and business continuity with zero code rewriting, keeping your BPMN workflows fully stable and running smoothly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Innovation and modern architecture:&lt;/strong&gt; A continuously evolving platform, adding new features, optimizations, and enhancements to stay modern and reliable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Optimization:&lt;/strong&gt; Simplified design and performance-focused execution, ensuring efficient and reliable processes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; Native security features to protect workflows, data, and integrations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Documentation:&lt;/strong&gt; Clear, practical, and usable technical documentation for developers and operators.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enterprise support:&lt;/strong&gt; Dedicated support with SLA and guaranteed response times.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OrqueIO ensures continuity, stability, and scalability, giving enterprises confidence as they evolve their workflow automation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Camunda 7 Community Edition &lt;strong&gt;reached its end of life in October 2025&lt;/strong&gt;, leaving enterprises running critical workflows in need of a reliable path forward. Continuing on an unsupported platform exposed businesses to security risks, technical debt, and operational challenges.&lt;/p&gt;

&lt;p&gt;OrqueIO provides a practical, future-proof alternative. With full compatibility for existing workflows, APIs, and extensions, enterprises can maintain business continuity with &lt;strong&gt;zero code rewriting&lt;/strong&gt; and without major infrastructure changes. Combined with dedicated support, continuous updates, and flexible deployment options, OrqueIO enables organizations to evolve their workflow automation &lt;strong&gt;securely and confidently.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Want to see OrqueIO in action?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;📩 Contact us at &lt;a href="mailto:contact@orqueio.io"&gt;contact@orqueio.io&lt;/a&gt; to schedule a personalized demo&lt;br&gt;
or visit our official website: &lt;a href="//www.orqueio.io/contact"&gt;www.orqueio.io/contact&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📚 Resources :&lt;/p&gt;

&lt;p&gt;Documentation: &lt;a href="https://docs.orqueio.io" rel="noopener noreferrer"&gt;https://docs.orqueio.io/&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://dev.tourl"&gt;https://github.com/OrqueIO&lt;/a&gt;&lt;/p&gt;

</description>
      <category>orqueio</category>
      <category>camundafork</category>
      <category>bpmn</category>
      <category>dmn</category>
    </item>
  </channel>
</rss>
