{"record":{"id":"3b62048b11c9aba5","repo":"flowable/flowable-engine","slug":"using-joda-time-localdate-has-been-deprecated-and-3b6204","errorCode":null,"errorMessage":"Using Joda-Time LocalDate has been deprecated and will be removed in a future version. Process Variable {} in process instance {} and execution {} was a Joda-Time LocalDate. ","messagePattern":"Using Joda-Time LocalDate has been deprecated and will be removed in a future version\\. Process Variable (.+?) in process instance (.+?) and execution (.+?) was a Joda-Time LocalDate\\. ","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"modules/flowable-variable-service/src/main/java/org/flowable/variable/service/impl/types/JodaDateType.java","lineNumber":62,"sourceCode":"\n    @Override\n    public Object getValue(ValueFields valueFields) {\n        Long longValue = valueFields.getLongValue();\n        if (longValue != null) {\n            return new LocalDate(longValue);\n        }\n        return null;\n    }\n\n    @Override\n    public void setValue(Object value, ValueFields valueFields) {\n        if (value != null) {\n            if (valueFields.getTaskId() != null) {\n                JodaDeprecationLogger.LOGGER.warn(\n                        \"Using Joda-Time LocalDate has been deprecated and will be removed in a future version. Task Variable {} in task {} was a Joda-Time LocalDate. \",\n                        valueFields.getName(), valueFields.getTaskId());\n            } else if (valueFields.getProcessInstanceId() != null) {\n                JodaDeprecationLogger.LOGGER.warn(\n                        \"Using Joda-Time LocalDate has been deprecated and will be removed in a future version. Process Variable {} in process instance {} and execution {} was a Joda-Time LocalDate. \",\n                        valueFields.getName(), valueFields.getProcessInstanceId(), valueFields.getExecutionId());\n            } else {\n                JodaDeprecationLogger.LOGGER.warn(\n                        \"Using Joda-Time LocalDate has been deprecated and will be removed in a future version. Variable {} in {} instance {} and sub-scope {} was a Joda-Time LocalDate. \",\n                        valueFields.getName(), valueFields.getScopeType(), valueFields.getScopeId(), valueFields.getSubScopeId());\n            }\n            valueFields.setLongValue(((LocalDate) value).toDateTimeAtStartOfDay().getMillis());\n        } else {\n            valueFields.setLongValue(null);\n        }\n    }\n}\n","sourceCodeStart":44,"sourceCodeEnd":76,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-variable-service/src/main/java/org/flowable/variable/service/impl/types/JodaDateType.java#L44-L76","documentation":"A deprecation warning logged by JodaDateType.setValue when a process-instance variable holds a Joda-Time LocalDate. Flowable logs the variable name, process instance id and execution id, stores the value as millis, and continues.","triggerScenarios":"Setting a variable to org.joda.time.LocalDate where ValueFields has no taskId but a processInstanceId is set (e.g. execution.setVariable inside a process).","commonSituations":"Legacy BPMN processes and delegates passing Joda LocalDate values into the variable service; gradual java.time migrations.","solutions":["Use java.time.LocalDate instead of org.joda.time.LocalDate","Update Java delegates/listeners producing the Joda value","Migrate existing variable data with a one-off script if needed before the removal release"],"exampleFix":"// before\ndelegateExecution.setVariable(\"planDate\", org.joda.time.LocalDate.now());\n// after\ndelegateExecution.setVariable(\"planDate\", java.time.LocalDate.now());","handlingStrategy":"validation","validationCode":"if (vars.values().stream().anyMatch(v -> v instanceof org.joda.time.LocalDate)) { throw new IllegalArgumentException(\"Joda LocalDate variables are deprecated\"); }","typeGuard":"boolean isJodaLocalDate(Object v) { return v instanceof org.joda.time.LocalDate; }","tryCatchPattern":null,"preventionTips":["Migrate delegates/listeners to java.time","Add integration tests asserting variable types","Grep the codebase for org.joda.time.LocalDate usages feeding setVariable"],"tags":["deprecation","joda-time","variables"],"backgroundTag":"deprecated-api-usage","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}