Mastering Workflow Time zones in Adobe Campaign
When working with workflows in Adobe Campaign Classic (ACC), time zone configuration plays a vital role in ensuring accuracy for time-dependent tasks such as queries, data imports, exports, or scheduled executions of campaigns. By properly setting up workflow-specific time zones to match your local time zone, you can ensure smooth operations and avoid potential discrepancies.
Why Workflow Time zone Matters
Adobe Campaign Classic’s default behavior uses the server’s time zone or the operator’s time zone for date and time settings. This may lead to inconsistencies when workflows are executed across different time zones or when operators from various regions collaborate. Configuring the time zone at the workflow level ensures precision and minimizes confusion, particularly for:
- Scheduled Campaigns: It often happens that you work with stakeholders from around the world, each requiring a schedule in their local timezone. To make things easier, you can set the workflow time zone to your desired one and then configure the scheduler in the requested local time.
- Export import activities: Time-sensitive operations like data imports and exports will use server time zone if not set differently
- Targeting and Segmentation: When time-based conditions are involved. The setting will be more accurate. For example when querying all clicks from yesterday.
- Data Reporting: Ensuring timestamps in reports align with the intended time zone.
Configuring Time zone Settings at the Workflow Level
To customize the time zone for a workflow:
- Access the Workflow Properties:
- Open the desired workflow in Adobe Campaign Classic.
- Click on Properties button on top of the workflow canvas.
- Modify the Timezone:
- Navigate to the General tab in the workflow properties.
- Locate the Time zone field and choose the appropriate time zone from the dropdown menu.
- Save the changes.
Best Practices for workflow Time zone Management
- Ensure Consistency Across Workflows: Align time zones across interconnected workflows to maintain data integrity. For all date-related fields, you are informing the workflow of the time zone your data is in.
- Document Time zone Changes: Clearly document time zone settings within workflow descriptions for easy reference by other team members.
- Test Time-Based Logic: Validate any time-dependent logic or scheduled tasks to ensure they execute correctly within the configured time zone.
Setting Workflow Activity-Specific Time zone Settings
In Adobe Campaign Classic, you can configure time zone settings at the activity level instead of relying solely on the workflow-level time zone. This can be particularly useful when a workflow involves activities that need to execute in different time zones, providing greater flexibility and precision.
Steps to Set Time zone for a Workflow Activity:
- Open the Workflow:
- Access the workflow in Adobe Campaign Classic and locate the activity where you need to set a specific time zone.
- Select the Activity:
- Click on the desired activity (e.g., a scheduler, query, or delivery activity) and open its Advanced tab.
- Modify Time zone Settings:
- In the activity advanced tab, navigate to the section that specifies the time zone.
- Select the appropriate time zone for that specific activity from the dropdown menu.
- Save the Changes:
- Click OK to confirm your settings.
- Test the Workflow:
- Run or simulate the workflow to verify that the activity executes at the expected time in the specified time zone.
Where we use time zone settings on activity level
Extracts for Different Stakeholders
You manage a global campaign, and different stakeholders in various regions (e.g., New York, London, and Tokyo) need daily data extracts scheduled in their respective local time zones.
Solution:
- Configure a Data Extract activity for each stakeholder.
- Set the timezone of each extract activity to the specific region, e.g.:
- New York:
America/New_York
- London:
Europe/London
- Tokyo:
Asia/Tokyo
- New York:
- This ensures extracts are generated and delivered at appropriate times for each stakeholder, avoiding confusion caused by a single global workflow-level time zone.
Working with time zones in JavaScript
JavaScript activities allow for more dynamic and precise operations, especially when working with varying time zones, date formatting, or advanced date calculations. Combining Adobe’s JSAPI functions with ES5’s capabilities enables you to build robust and flexible workflows that meet custom requirements.
formatDate
Almost certainly, when working with Adobe Campaign Classic, you have encountered the formatDate
function. This is not a core JavaScript function for working with and formatting dates but rather an Adobe JSAPI function. Now, here comes the plot twist: not many know that this function accepts a third argument to specify the time zone you want to use for your date operations.
formatDate(date, format [, timeZone])
date
: The date object you wish to format.format
: A string that defines the desired output format using specific characters to represent date components.timeZone
(optional): A string representing the timezone to apply. If omitted, the server’s default timezone is used.
Format
- Y – Year
- M – Month of the year (1-12)
- B – Month name
- D – Day of the month (1-31)
- A – Day name
- J – Day of the year (1-366)
- W – Week of the year
- H – Hour (0-23)
- I – Hour (1-12)
- N – Minutes (0-59)
- S – Seconds (0-59)
- P – AM/PM
Examples
- “%4Y/%2M/%2D” => 2000/01/24.
- “%A %D %B %4Y” => mon 24 jan 2000.
- “%Al %D %Bl %4Y” => monday 24 january 2000.
- “%02H:%02N:%02S” displays the hour, minutes and seconds to two figures.
timeZone
String of characters corresponding to the time zone. Possible values are specified in the xtk:common:timezone enumeration schema. Simply put you can use any value from any time zone drop down setting.
First four do not work maybe later I will figure that out or someone will tell me 🙂
Name | Value |
---|---|
Default | _inherit_ |
Server time zone | _server_ |
Operator time zone | _login_ |
Time zone of the database | _wdbc_ |
All values below work as intended.
Name | Value |
---|---|
Default | _inherit_ |
Server time zone | _server_ |
Operator time zone | _login_ |
Time zone of the database | _wdbc_ |
(GMT-11:00) Samoa | Pacific/Samoa |
(GMT-11:00) Greenwich Mean Time minus 11 hours | Etc/GMT+11 |
(GMT-10:00) Hawai | Pacific/Honolulu |
(GMT-10:00) Greenwich Mean Time minus 10 hours | Etc/GMT+10 |
(GMT-09:00) Alaska | America/Anchorage |
(GMT-09:00) Greenwich Mean Time minus 9 hours | Etc/GMT+9 |
(GMT-08:00) Pacific (United States and Canada) | America/Los_Angeles |
(GMT-08:00) Greenwich Mean Time minus 8 hours | Etc/GMT+8 |
(GMT-07:00) Arizona | America/Phoenix |
(GMT-07:00) Chihuahua, La Paz, Mazatlan | America/Chihuahua |
(GMT-07:00) Rocky Mountains (United States and Canada) | America/Denver |
(GMT-07:00) Greenwich Mean Time minus 7 hours | Etc/GMT+7 |
(GMT-06:00) Central America | America/Regina |
(GMT-06:00) Center (United States and Canada) | America/Chicago |
(GMT-06:00) Guadalajara, Mexico, Monterrey | America/Mexico_City |
(GMT-06:00) Greenwich Mean Time minus 6 hours | Etc/GMT+6 |
(GMT-05:00) Bogota, Lima, Quito | America/Bogota |
(GMT-05:00) Est (United States and Canada) | America/New_York |
(GMT-05:00) Indiana (East) | America/Indianapolis |
(GMT-05:00) Greenwich Mean Time minus 5 hours | Etc/GMT+5 |
(GMT-04:30) Caracas | America/Caracas |
(GMT-04:00) Asunción | America/Asuncion |
(GMT-04:00) Cuiaba | America/Cuiaba |
(GMT-04:00) La Paz | America/La_Paz |
(GMT-04:00) Manaus | America/Manaus |
(GMT-04:00) Atlantic Standard Time (Canada) | America/Halifax |
(GMT-04:00) Santiago | America/Santiago |
(GMT-04:00) Greenwich Mean Time minus 4 hours | Etc/GMT+4 |
(GMT-03:30) Newfoundland | America/St_Johns |
(GMT-03:00) Brasi | America/Sao_Paulo |
(GMT-03:00) Buenos Aires, Cayenne, Fortaleza | America/Buenos_Aires |
(GMT-03:00) Greenland | America/Godthab |
(GMT-03:00) Montevideo | America/Montevideo |
(GMT-03:00) Greenwich Mean Time minus 3 hours | Etc/GMT+3 |
(GMT-02:00) Central-Atlantic | Atlantic/South_Georgia |
(GMT-02:00) Greenwich Mean Time minus 2 hours | Etc/GMT+2 |
(GMT-01:00) Cape Verde islands | Atlantic/Cape_Verde |
(GMT-01:00) The Azores | Atlantic/Azores |
(GMT-01:00) Greenwich Mean Time minus 1 hour | Etc/GMT+1 |
(GMT) Casablanca | Africa/Casablanca |
(GMT) Greenwich Mean Time: Dublin, Edinburgh, Lisbon, London | Europe/London |
(GMT) Monrovia | Africa/Monrovia |
(GMT) Reykjavik | Atlantic/Reykjavik |
(GMT) Greenwich mean time | GMT |
(GMT+01:00) Central Africa – West | Africa/Luanda |
(GMT+01:00) Amsterdam, Berlin, Berne, Rome, Stockholm, Vienna | Europe/Berlin |
(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague | Europe/Belgrade |
(GMT+01:00) Brussels, Copenhagen, Madrid, Paris | Europe/Paris |
(GMT+01:00) Sarajevo, Skoplje, Sofia, Warsaw, Zagreb | Europe/Sarajevo |
(GMT+01:00) Greenwich Mean Time plus 1 hour | Etc/GMT-1 |
(GMT+02:00) Amman | Asia/Amman |
(GMT+02:00) Athens, Istanbul, Minsk | Europe/Athens |
(GMT+02:00) Beirut | Asia/Beirut |
(GMT+02:00) Bucarest | Europe/Bucharest |
(GMT+02:00) Damas | Asia/Damascus |
(GMT+02:00) Harare, Pretoria | Africa/Harare |
(GMT+02:00) Helsinki, Kiev, Riga, Sofia, Tallinn, Vilnius | Europe/Helsinki |
(GMT+02:00) Jerusalem | Asia/Jerusalem |
(GMT+02:00) Cairo | Africa/Cairo |
(GMT+02:00) Windhoek | Africa/Windhoek |
(GMT+02:00) Greenwich Mean Time plus 2 hours | Etc/GMT-2 |
(GMT+03:00) Bagdad | Asia/Baghdad |
(GMT+03:00) Koweït, Riyad | Asia/Riyadh |
(GMT+03:00) Moscow, St. Petersburg, Volgograd | Europe/Moscow |
(GMT+03:00) Nairobi | Africa/Nairobi |
(GMT+03:00) Greenwich Mean Time plus 3 hours | Etc/GMT-3 |
(GMT+03:30) Teheran | Asia/Tehran |
(GMT+04:00) Abu Dhabi, Muscat | Asia/Muscat |
(GMT+04:00) Baku | Asia/Baku |
(GMT+04:00) Caucasus, Erevan | Asia/Yerevan |
(GMT+04:00) Port Louis | Indian/Mauritius |
(GMT+04:00) Tbilissi | Asia/Tbilisi |
(GMT+04:00) Greenwich Mean Time plus 4 hours | Etc/GMT-4 |
(GMT+04:30) Kabul | Asia/Kabul |
(GMT+05:00) Iekaterinburg | Asia/Yekaterinburg |
(GMT+05:00) Islamabad, Karachi, Tachkent | Asia/Karachi |
(GMT+05:00) Greenwich Mean Time plus 5 hours | Etc/GMT-5 |
(GMT+05:30) Calcutta | Asia/Calcutta |
(GMT+05:30) Kolkata, Chennai, Mumbai, New Delhi | Asia/Kolkata |
(GMT+05:30) Sri Jayawardenepura | Asia/Colombo |
(GMT+05:45) Katmandu | Asia/Katmandu |
(GMT+06:00) Astana, Dhaka | Asia/Dhaka |
(GMT+06:00) Novossibirsk | Asia/Novosibirsk |
(GMT+06:00) Greenwich Mean Time plus 6 hours | Etc/GMT-6 |
(GMT+06:30) Rangoon | Asia/Rangoon |
(GMT+07:00) Bangkok, Hanoi, Djakarta | Asia/Bangkok |
(GMT+07:00) Krasnoïarsk | Asia/Krasnoyarsk |
(GMT+07:00) Greenwich Mean Time plus 7 hours | Etc/GMT-7 |
(GMT+08:00) Irkoutsk | Asia/Irkutsk |
(GMT+08:00) Kuala Lumpur, Singapore | Asia/Kuala_Lumpur |
(GMT+08:00) Oulan-Bator | Asia/Ulan_Bator |
(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi | Asia/Shanghai |
(GMT+08:00) Perth | Australia/Perth |
(GMT+08:00) Taipei | Asia/Taipei |
(GMT+08:00) Greenwich Mean Time plus 8 hours | Etc/GMT-8 |
(GMT+09:00) Osaka, Sapporo, Tokyo | Asia/Tokyo |
(GMT+09:00) Seoul | Asia/Seoul |
(GMT+09:00) Yakoutsk | Asia/Yakutsk |
(GMT+09:00) Greenwich Mean Time plus 9 hours | Etc/GMT-9 |
(GMT+09:30) Adelaïde | Australia/Adelaide |
(GMT+09:30) Darwin | Australia/Darwin |
(GMT+10:00) Brisbane | Australia/Brisbane |
(GMT+10:00) Canberra, Melbourne, Sydney | Australia/Canberra |
(GMT+10:00) Guam, Port Moresby | Pacific/Guam |
(GMT+10:00) Hobart | Australia/Hobart |
(GMT+10:00) Vladivostok | Asia/Vladivostok |
(GMT+10:00) Greenwich Mean Time plus 10 hours | Etc/GMT-10 |
(GMT+11:00) Magadan, The Solomon Islands, New Caledonia | Pacific/Guadalcanal |
(GMT+11:00) Greenwich Mean Time plus 11 hours | Etc/GMT-11 |
(GMT+12:00) Auckland, Wellington | Pacific/Auckland |
(GMT+12:00) Fidji | Pacific/Fiji |
(GMT+12:00) Greenwich Mean Time plus 12 hours | Etc/GMT-12 |
(GMT+13:00) Nuku’alofa | Pacific/Tongatapu |
(GMT+13:00) Greenwich Mean Time plus 13 hours | Etc/GMT-13 |
var serverDate = getCurrentDate(); // Array of 10 random timezone values var timezones = [ "America/Phoenix", "Asia/Kolkata", "Europe/London", "Pacific/Samoa", "America/Anchorage", "Asia/Shanghai", "Australia/Sydney", "Africa/Nairobi", "America/New_York", "Etc/GMT+5" ]; // Loop through the timezones and log the formatted date for each timezones.forEach(function (timezone) { var formattedDate = formatDate(serverDate, "%2D/%2M/%2Y %02H:%02N:%02S", timezone); logInfo("Converted Server Date for timezone (" + timezone + "): " + formattedDate); });