Blog Sending an iCalendar Event Series from ServiceNow to Outlook
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
2 hours ago
Hi,
ServiceNow supports sending recurring calendar invitations to Microsoft Outlook using the iCalendar (ICS) format.
While ServiceNow already supports sending single meeting invitations—including updates and cancellations—recurring events follow a slightly different approach. Instead of sending separate invites for each occurrence, a single calendar event is sent with a recurrence rule that Outlook uses to generate all instances.
Common Use Cases
Sending an iCalendar event series from ServiceNow to Outlook is commonly used for:
Shift schedules
Daily or weekly on-call or support team shifts
Maintenance windows
Planned, recurring system maintenance activities
Key iCalendar Properties Used (Standardized Format)
Property Name: UID
Purpose: Uniquely identifies the entire event series
Type: Text / String
Description:
The UID must remain unchanged for the lifetime of the event series
Used by Outlook to recognize updates and cancellations
Best practice is to use a stable value, such as the ServiceNow record sys_id
- Ex: UID:234eeade3331fe5087f728367d
Property Name: RRULE
Purpose: Defines the rule or repeating pattern for recurring events
Type: Recurrence Rule (RFC 5545)
Description:
Controls how often the event repeats
Outlook uses this rule to generate all occurrences
Common parameters include FREQ, BYDAY, COUNT, and UNTIL
- Examples:
RRULE:FREQ=DAILY
RRULE:FREQ=WEEKLY;BYDAY=MO
RRULE:FREQ=MONTHLY
Property Name: DTSTART
Purpose: Defines the start date and time of the event
Type: Date-Time
Description:
For recurring events, this represents the first occurrence in the series
All other occurrences are calculated based on this value and the RRULE
Timezone must be consistent and correctly formatted
Example: DTSTART:20251216T230000Z
Property Name: DTEND
Purpose: Defines the end date and time of the event
Type: Date-Time
Description:
Works together with DTSTART to define the duration of the event
For single events, it represents the actual end time
For recurring events, it defines the end time of each occurrence, not the series
Examples:
Single event:
DTSTART:20251217T090000Z
DTEND:20251217T110000Z
DTEND:20251217T080000Z
RRULE:FREQ=DAILY
Note:
The end of a recurring series is controlled by the RRULE(using UNTIL or COUNT), not byDTEND.
Property Name: SEQUENCE
Purpose: Tracks the version of an event or event series
Type: Integer
Description:
Must be incremented whenever the event is:
Updated
Rescheduled
Cancelled
Outlook uses this value to determine whether an incoming update is newer
Example: SEQUENCE:7
Property Name: RECURRENCE-ID
Purpose: RECURRENCE-ID is used together with UID and SEQUENCE to uniquely identify one specific instance of a recurring calendar component (such as a VEVENT).
It allows calendar systems like ServiceNow and Microsoft Outlook to understand which exact occurrence in a recurring series is being updated or cancelled.
What RECURRENCE-ID Represents
The value of RECURRENCE-ID is the original DTSTART value of the occurrence
In simple terms:
RECURRENCE-ID = the start date and time of the occurrence you want to change
Each occurrence in a recurring event has a unique start date and time, which makes it possible to target a single instance precisely.
In practice: We use the start date and time of the day we want to update or cancel.
Example: RECURRENCE-ID:20251218T230000Z
Recently, I worked on a use case where recurring iCalendar meeting invitations were sent from ServiceNow for on-call shift schedules.
The goal was to ensure that on-call members could clearly see their shifts in Outlook and that any changes were reflected correctly.
1. Sending Recurring iCalendar Meeting Invitations
2. Cancelling an iCalendar Meeting Invitation
3. Cancelling the Entire Event Series
Thanks,
Sathya