{"record":{"id":"3fb2122592491993","repo":"kestra-io/kestra","slug":"the-islastworkingday-function-requires-at-leas","errorCode":null,"errorMessage":"The 'isLastWorkingDay()' function requires at least one valid day in 'workingDays'.","messagePattern":"The 'isLastWorkingDay\\(\\)' function requires at least one valid day in 'workingDays'\\.","errorType":"validation","errorClass":"PebbleException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/io/kestra/core/runners/pebble/functions/IsLastWorkingDayFunction.java","lineNumber":99,"sourceCode":"        Set<DayOfWeek> result = EnumSet.noneOf(DayOfWeek.class);\n        for (String part : parts) {\n            String trimmed = part.trim();\n            if (trimmed.isEmpty()) {\n                continue;\n            }\n            try {\n                result.add(DayOfWeek.valueOf(trimmed.toUpperCase()));\n            } catch (IllegalArgumentException e) {\n                throw new PebbleException(\n                    e,\n                    \"The 'isLastWorkingDay()' function received an invalid 'workingDays' value: '\" + trimmed + \"'. Expected day names like MONDAY, TUESDAY, etc.\",\n                    lineNumber, self.getName()\n                );\n            }\n        }\n\n        if (result.isEmpty()) {\n            throw new PebbleException(null, \"The 'isLastWorkingDay()' function requires at least one valid day in 'workingDays'.\", lineNumber, self.getName());\n        }\n\n        return result;\n    }\n\n    @Override\n    public List<String> getArgumentNames() {\n        return List.of(\"date\", \"workingDays\");\n    }\n\n    @Override\n    // HashMap is required here because Map.of() does not allow null values,\n    // and null defaults indicate arguments with no meaningful autocompletion default.\n    public Map<String, String> getArgumentDefaults() {\n        HashMap<String, String> defaults = new HashMap<>();\n        defaults.put(\"date\", null);\n        defaults.put(\"workingDays\", null);\n        return defaults;","sourceCodeStart":81,"sourceCodeEnd":117,"githubUrl":"https://github.com/kestra-io/kestra/blob/823fada9274c4f9c251ea0a516460a4f7d958032/core/src/main/java/io/kestra/core/runners/pebble/functions/IsLastWorkingDayFunction.java#L81-L117","documentation":"After splitting workingDays, every token was empty/blank, so the resulting day set is empty. The string was non-blank (so it bypassed the default Mon–Fri shortcut) but contained only separators/whitespace.","triggerScenarios":"Passing workingDays=',' , '   ,   ,' , or any value that consists only of delimiters and whitespace tokens.","commonSituations":"A templated workingDays value that rendered to separators only, or a copy-paste artifact.","solutions":["Provide at least one valid day name, or omit workingDays to use the default Mon–Fri.","Sanitize templated workingDays values before passing."],"exampleFix":"// before\n{{ isLastWorkingDay(date='2024-01-31', workingDays=',,') }}\n// after\n{{ isLastWorkingDay(date='2024-01-31', workingDays='MONDAY') }}","handlingStrategy":"validation","validationCode":"{% set days = workingDays ?? '' %}{% if days|replace({',': '', ' ': ''}) is empty %}{% set days = null %}{% endif %}{{ isLastWorkingDay(date=myDate, workingDays=days) }}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Provide at least one valid day name in workingDays, or omit it to use the default.","Sanitize templated workingDays values so they are not just delimiters/whitespace."],"tags":["pebble","date","enum","validation"],"backgroundTag":null,"analyzedSha":"823fada9274c4f9c251ea0a516460a4f7d958032","analyzedAt":"2026-08-14T06:15:17.947Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}