Couldn't complete task Exception while resolving duedate 'P30S': P30S

I am using the camunda-external-task-client-js lib to create create a simple node js app that will complete a external send message task

This external send message task works, but after the task complete method call, it gives the below error even though I have not set any duedate for my task

couldn’t complete task d813a33c-a620-11e8-af48-f49634ab846c, ENGINE-09027 Exception while resolving duedate ‘P30S’: P30S

Is this supposed to be 30 seconds? Its PT30S.
One of your timers is likely not configured correctly.


also make sure to use timers that are larger than 1 minute. Camunda has issues with very short times.

1 Like

Thanks Stephen. it worked when i changed it to Minutes.

I still have difficulties with the cyclic starts. No matter whether I try cron expressions or


with this entry, the cockpit shows these process instances:

As you can see, the start times do not have anything to do with “start every 2 minutes”. What am I missing?

By the way: does Camunda plan to solve the issues with seconds? At least for test purposes, it would be very helpful.


Hi @cjacob,

maybe this topic helps you further: Timer Execution too slow

Hope this helps, Ingo

Hi Ingo,

your reply was a good starting point, but I had to research a little bit more, since I’m using Spring Boot. Finally, I ended up with this entries in my application.yaml:

    wait-time-in-millis: 500
    max-wait: 800

With these settings, even a cron expression of “0/5 * * * * ?” (which means “every 5 seconds”) triggered almost in time. But now I have some more questions:

  • Which implications do these values for wait-time-in-millis and max-wait have?
  • Why do I need them at all?

If the implications are stressing some resources too much, I’d rather think about using Spring’s capabilities of timed triggers and create a new process instance from there with runtimeService.createProcessInstanceByKey(…). Unfortunately, with this Spring approach my BPM model could not carry the timed starter event symbol any more…


Hi @cjacob,

sorry for the late reply,

The settings are all about balancing resource consumption over accuracy with timers.

For the most use cases, you don’t care about a time difference of a minute when you wait for time that will expire in several days. For this reason, the engine implemented a increasing wait interval between job acquisitions, if there are no jobs to execute.

You can control the interval with the max-wait setting:

Your configuration makes the engine to ask the database every half a second for new jobs.

It depends on the overall performance requirements to your system if it’s worth to check for this small intervals or not.

Hope this helps, Ingo