In FME 2020.0, we announced a new way to purchase FME Server capacity called “Dynamic Engines”. This blog will explore what Dynamic Engines are, what types of use cases they excel in, and demonstrate Dynamic Engines in action.

Want to get started right away? Download a trial of FME Server 2020.1 to receive 100 hours of free Dynamic Engine credits and visit this Knowledge Article to learn how to get started.


FME Server 2020.1 beta license with 100 free hours


Traditional FME Server Licensing 

Since its inception, FME Server has been sold on a per-engine basis. Engines sold with the traditional FME Server licensing model are referred to as standard engines. Each engine is able to process a single FME workspace or “job” at a time. The concept is simple. If you have 5 engines then you can run 5 jobs simultaneously.


To maximize ROI with traditional FME Server licensing,

you strive to keep standard FME Engines as busy as possible.


What are Dynamic Engines?

Dynamic Engines deliver FME Server in a whole new way.  Rather than purchasing engines, Dynamic Engines allow you to purchase “engine CPU time” as credits. Many vendors refer to this as usage-based pricing, where you only pay for the work that is done.  

Since the licensing of Dynamic Engines is based on usage instead of number of engines, this means you are able to launch as many or as few Dynamic Engines as you want, whenever you want.


Dynamic Engines are licensed by CPU time. 

1 Dynamic Engine credit = 1 hour of CPU time.


With Dynamic Engines, you only pay when a Dynamic Engine is doing work. This allows you to have as many Dynamic Engines as you want, ready for work at no cost.


With Dynamic Engines you only pay when “work” is done, not when the engine is idle or waiting for data.


Dynamic Engines give you the flexibility to use FME Server to solve a whole new set of challenges.


Can I Use Dynamic Engines and Standard Engines Together? 

Yes! Dynamic Engines are designed to work alongside standard FME Engines and we expect many FME Server deployments will consist of both standard and Dynamic Engines. 


Dynamic Engine Use Cases

With the flexibility and cost model of Dynamic Engines, organizations can now solve a whole new set of problems with FME Server

Dynamic Engines are well suited for workflows that have variable demand or one-time big data lifts. Some of the scenarios where we see Dynamics Engines being valuable include: 

However, oftentimes organizations don’t know when their server is going to be overloaded. When it does happen, Dynamic Engines will allow administrators to feel reassured because they will know they have extra capacity to handle those peaks.

Dynamic Engines were designed to address all of the above scenarios. 


Example: Dynamic Engines in Action

This demo will walk through how an organization can use Dynamic Engines to supplement standard FME Engines. In most but not all cases, you will want to use standard engines first and Dynamic Engines to relieve the peak loads on your FME Server. 

The links to the components of this workflow can be found here on FME Hub.


It is easy to assign Dynamic Engines to address peak load workflows using the FME Server REST API.  


How to have Dynamic Engines at the Ready

The workflow below provides a framework for auto reassigning Dynamic Engines to queues that reach a specified threshold. The components are as follows:


Monitored Queues

A “watched queue” and High and Low Watermark

Watched Queue – One or more queues being monitored.  When any of the queues hit the high watermark then Dynamic Engines are assigned to the queue.

Watermarks – Thresholds at which Dynamic Engines are assigned (High Watermark) and removed from queues (Low Watermark).  In this example, the same watermark values are used for all queues but they can easily be changed to different values for different queues.

Dynamic Engines Home Queue

Dynamic Engines, when launched, are assigned to only one queue known as the “home queue”. This Home queue is where Dynamic Engines wait for assignment to a busy queue. The Dynamic Engines are not assigned to the Default queue.

In this example, the home queue is named auto_assign_queue. The queue is given a low priority.

Dynamic Engines waiting to be assigned to busy queues


Metric Endpoint

FME Server has a metric endpoint that when called with an HTTP GET request, returns current load information about FME Server including the number of running and queued jobs.  The returned information follows the OpenMetrics standard. The metric endpoint is called:


So for <queue> the values returned will be of the form:

fme_running_jobs {queue=”<queue>”} <num_running_jobs>

fme_queued_jobs {queue=”<queue>”} <num_queued_jobs>


Putting it All Together

Once you have all of the necessary components, the process is quite simple.  A simple Automation is used to orchestrate the process as shown below.

Automation designed to reassign engines to busy queues

The autoscaleV2.fmw workspace does the magic and takes the parameters shown below.

The workspace is included in the project below and a video explaining it can be found here.


Initial State – No Load

Initially, all of the Dynamic Engines are assigned to the Home queue called “auto_assign_queue” as shown below.

Initial state with Dynamic Engines ready to be assigned.


Engines Reassignment Workflow

Next, I will trigger an Automation that submits over 900 jobs. The Automation is shown below.

The Automation is pretty straightforward 

  1. 1 ProcessState workspace is triggered and results in 60 jobs being submitted to the County queue (ProcessCounty Workspace) 
  2. The 60 ProcessCounty workspaces run and result in 900 jobs being submitted to the Block queue (ProcessBlock Workspace)

When this is run you will see the engine’s assignment being changed on the fly. First, they will be assigned to the County queue and then the Block queue as the load changes. Once the queues hit the low watermark, the engines are returned to their original state.

Original Queue State    =>     Assigned to County Queue     =>      Assigned to Block Queue


Dynamic Engines and Parallel Processing

Dynamic Engines coupled with Automations makes parallel processing super easy. Take the example above, where parallelism happens. With FME Server Automations, you don’t have to even think about it. Automations makes it happen.  

This capability is especially useful if your business needs to complete large data lifts or migration projects. With Dynamic Engines and parallelism you can spin up 100 engines instantly and process jobs in parallel. The benefit of this feature is that you are only charged for the amount of processing done. Therefore it would cost the same to process this job with 1 engine as it would to use 100 engines.


Parallel processing is easy and cost effective with Automations and Dynamic Engines!


Is the old FME Server Pricing Model Going Away?

No. We like to give our customers more options so they are able to use the power of FME to solve more problems in cost effective ways.  Every licensing model has its strengths and weaknesses. We encourage you to embrace the one that best suits your business.  


Give Dynamic Engines a Try!

We welcome you to give Dynamic Engines a try. If you want to try Dynamic Engines on an evaluation FME Server, then we suggest you download FME Server 2020.1 Beta.

Each FME Server 2020.1 trial license comes with 100 hours of free Dynamic Engine credits.  

If you want to try it with FME Server 2020.0 then contact us at and we will be happy to give you hours to try.

If you are using FME Server 2019 or earlier, unfortunately, this feature is not available.

Have fun and please give us feedback on anything and everything FME. Whether related to Dynamic Engines or not, we love to hear your ideas, stories, and experiences.

About FME Automation FME Server Pricing

Don Murray

Don is the co-founder and President of Safe Software. Safe Software was founded originally doing work for the BC Government on a project sharing spatial data with the forestry industry. During that project Don and other co-founder, Dale Lutz, realized the need for a data integration platform like FME. When Don’s not raving about how much he loves XML, you can find Don working with the team at Safe to take the FME product to the next level. You will also find him on the road talking with customers and partners to learn more about what new FME features they’d like to see.

Holly Coxon

Holly is an FME Server Technology Support Team Lead at Safe Software. Among other things, she provides technical support, creates content for the Community, presents webinars and contributes to product development through functional testing and sharing customer feedback. Holly spends her weekends exploring the great backyard of British Columbia.


2 Responses to “The Power of Dynamic Engines”

  1. Oscar Willems says:

    Nice tutorial, I do have a question

    This workspace that monitors the queues can’t be run on queues that are busy (will end at that back of the queue), so I figure this monitoring workspace is ran on the dynamic engine, doesn’t the dynamic engine ‘leak’ processing time by constantly having to run this workspace?

  2. Don Murray says:

    Oscar. You are 100% correct. We are using a dynamic engine on a queue we control to ensure that it is run. This does ‘leak’ as you so put it as the dynamic engine will burn a tiny amount of time. That workflow also adds an extra layer of complexity that I am not a huge fan of.

    Soon “FME 2021.1?” you will be able to do the same thing without any workspace and without ‘leaking’ anytime. This is part of the expanded FME Server Engine Assignment rules capability. Stayed tuned for more exciting announcements.

    Thanks for your feedback. Great stuff and again you are 100% correct.

Leave a Reply

Related Posts