Dynamic Scheduling - Monthly puck behavior

In Dynamic Scheduling, when a Puck is created on a monthly basis (for example, from 2025/04/01 0:00:00 to 2025/05/01 0:00:00), if it is moved to another month, it retains the same number of days as in the previous month (in the example above, if aligned to 2025/05/01 0:00:00, the end point becomes 2025/05/30 0:00:00). This behavior is also seen in swap operations, which affects all subsequent Pucks.

Since scheduling on a monthly basis is quite common, it would be more user-friendly if the Puck width could be restricted to a monthly level and configured in a way that is independent of the number of days in the month. I would greatly appreciate it if you could consider this improvement.

Hello! Fairly certain I understand the usage pattern and corresponding issue you’re facing, but going to repeat it back to you just to make sure I am not misunderstanding something.

You are scheduling on a month basis - event starts on first of the month and ends on the last of that month. The duration of these events are dependent on the total number of days in a given month. Examples:

January Event:
*Start: 2025-01-01
*End: 2025-01-31
*Duration: 31 Days

February Event:
*Start: 2025-02-01
*End: 2025-02-28
*Duration: 28 Days

The specific issue you flagged occurs when moving between months - the duration and therefore end date do not dynamically update to reflect the length of the month. Example of moving from February to January:

Current State:
*Initial Start/End: 2025-02-01 → 2025-02-28
*New Start/End: 2025-01-01 → 2025-01-28
*No change in duration

Desired State:
*Initial Start/End: 2025-02-01 → 2025-02-28
*New Start/End: 2025-01-01 → 2025-01-31
*Duration changes 28 → 31

If I am understanding this correctly, a function backed save action could be used to handle the desired change in duration. The function would take in start start date, look up duration of start date month, calculate end date by adding duration to start date. I suspect the monthly duration could be hard coded. There’s an edge case with leap years, you could check if start date month is February and year is divisible by four, if true then duration equals 29 days and if false then duration equals 28 days.

https://www.palantir.com/docs/foundry/dynamic-scheduling/scheduling-advanced-features