Execution of Schedulers in UTC?

Schedulers execute based on the timezone associated with the System Administrator. If we set a Scheduler to be executed at  

Min: 30

Hour: 06

Date: *

Month: *

Day: 1-5

This means this should be executed at 6:30 a.m. Monday - Friday.

However, it's executing not in UTC but in the Timezone of the Admin, prior to the current release of Sugar. We could log in as the Admin user and set the Admin user's timezone. In the current version, the timezone is automatically set. We have global users who when performing administrative tasks log in as Admin. This results in the timezone changing based on the location of the person logged in.

How can we either pin the Admin to UTC timezone and/or ensure that schedulers are always executed in UTC?

Thoughts?

We are using Sugar Enterprise 13.0.1.

edited for clarity.

  • Hi  ,

    interesting question and I'll be following to see what is suggested here...

    Is it the Admin's timezone or the timezone of the server on which the crontab is running that makes a difference?
    Also, how does the current system set the admin timezone? What is it basing it on?

    I may be an admin on the east coast administering a server on the west coast... I may also be one of several admins around the world...
    so my browser timezone will by different from my system's timezone and from other admins' timezones...

    Is it user id = 1 that dictates the scheduling times?

    FrancescaS

  • The timezone is based on the function 

    $current_user->getSystemUser();

    It's this user's timezone that is used. , when you log in to Sugar 13. The timezone is automatically set based on the timezone of the user's computer. 

    If for example, I'm in CA when I log in. The timezone will automatically change. If I travel to NY, the timezone will change when I log in again. 

  • Not a fan of that type of dependency. I would prefer to use the sever TZ or UTC.

  • The schedulers run based on the default admin user. If you have users from different time zones sharing the credentials for that user, it's going to create a problem since Sugar expects each user to be dedicated to an individual for license usage. My recommendation is to ensure the default admin user is dedicated to a single person to avoid this conflict. 

  •  our official position is similar to what  mentioned. Do not share admin password.

    I brought this up with engineering and PMs for alternatives which we do not have at this point, we are, however, looking into enhancements around the Scheduler Timezone in the future.

    SugarCRM | Principal Developer Advocate

  •   This still doesn't solve the issue of running in the administrator's timezone. Schedulers should run in UTC. Since Sugar now sets the user's timezone. We can't pin it to be UTC.

  • Hi  ,
    Can I ask how did you get to this conclusion?
    Cheers,
    Andras

  • As long as there is only one user who is logging in to the default admin account, you can adjust the scheduler times to be running in the desired UTC timeframe based on that user's offset (accepting you would still need to adjust twice a year for DST changes if you want to stay true to UTC times). 

    Chris

  •  

    I noticed that my schedulers were not executing when I was expecting them to based on the interval set. 

    I then debugged the issue using xdebug and observed that when executing cron.php the system uses the administrator's timezone to determine when to execute. 

    In my image in the origin description, I would expect my Scheduler to execute Monday - Friday at 06:30 UTC. However, my administrator's timezone is America/Los_Angeles (Pacific Time). Which is causing it to run at 22:30 the day before. Also the time changes in the US when daylight saving changes. So 22:30 is different when the timezone is in PST and PDT.

    Further, if I travel and log in as the admin and I'm now in America/New_York (Eastern Time). All of my schedulers are now running in EST/EDT times. 

  • I've tracked this down, and I think you're correct. modules/Schedulers/Schedulers.php in line 93 is picking up User 1's time zone. This is then used for building the job queue from the Scheduled Tasks. Have you opened a bug about this? I think it's worth it.

     I also think this is a legit concern. One doesn't even have to cross time zones, it's enough that your own time zone switches from Winter to Summer time (that's GMT to BST, AKA +1 hour, for example) which can cause the Scheduled Tasks to effectively skip a daily or hourly task when executed the right time.
    However if you had, say a system admin, who would travel between branches, every time they would log in to Sugar in a different time zone the execution pattern of the Scheduled Tasks will change as there will be either an extra execution or a skipped one.

    My solution to this problem would be to have an effective Sugar Time Zone setting in admin where you can set your Sugar instance's TZ, taking a default of your server's Time Zone. It would make sense.

1 2