public void updateTimer(String containerId, Number processInstanceId, Number timerId, boolean relative, String payload, String marshallingType) { logger.debug("About to unmarshal timer update details from payload: '{}' using container {} marshaller", payload, containerId); Map<String, Number> timerUpdates = marshallerHelper.unmarshal(containerId, payload, marshallingType, Map.class); Number delay = timerUpdates.getOrDefault("delay", 0); Number period = timerUpdates.getOrDefault("period", 0); Number repeatLimit = timerUpdates.getOrDefault("repeatLimit", 0); if (relative) { logger.debug("Timer {} in process instance is going to be updated relatively to current time with values: delay {}, period {}, repeat limit {}", timerId, processInstanceId, delay, period, repeatLimit); processInstanceAdminService.updateTimerRelative(processInstanceId.longValue(), timerId.longValue(), delay.longValue(), period.longValue(), repeatLimit.intValue()); } else { logger.debug("Timer {} in process instance is going to be updated with values: delay {}, period {}, repeat limit {}", timerId, processInstanceId, delay, period, repeatLimit); processInstanceAdminService.updateTimer(processInstanceId.longValue(), timerId.longValue(), delay.longValue(), period.longValue(), repeatLimit.intValue()); } logger.debug("Timer {} triggered successfully in process instance", timerId, processInstanceId); }