To ensure SLAs calculate correctly from the intended seasonal start time, I added an Object Launch Point automation script on WORKORDER with:
Condition: pmnum is not null
Events: Add, Save, Before Save
The script takes the time from PM.TARGSTARTTIME and applies it to the date in REPORTDATE, ensuring the work order uses the correct seasonal seed date before any SLA is applied.
from java.util import Date, Calendar
targStartTime = mbo.getDate("PM.TARGSTARTTIME")
reportDate = mbo.getDate("REPORTDATE")
if reportDate is not None:
calReport = Calendar.getInstance()
calReport.setTime(reportDate)
calTime = Calendar.getInstance()
calTime.setTime(targStartTime)
calReport.set(Calendar.HOUR_OF_DAY, calTime.get(Calendar.HOUR_OF_DAY))
calReport.set(Calendar.MINUTE, calTime.get(Calendar.MINUTE))
calReport.set(Calendar.SECOND, calTime.get(Calendar.SECOND))
calReport.set(Calendar.MILLISECOND,0)
mbo.setValue("REPORTDATE", calReport.getTime(), 11L)