- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
on 09-16-2016 05:19 AM
Update Feb 12, 2020: Official ServiceNow documentation for reference: https://docs.servicenow.com/bundle/newyork-servicenow-platform/page/administer/notification/referenc...
- Send new calendar invites from ServiceNow to email clients
- Update existing calendar invites created by ServiceNow
- Delete existing calendar invites
- Update ServiceNow when an invite is accepted/tentatived/declined*
- Update ServiceNow when an invite has notes added to the body*
- Instance running at least Calgary, maybe even Berlin
- Subproduction instance set to email a specific email address is highly recommended
- Outlook, though other email clients can work*
- A table that contains two fields that are in the date/time format
- Lots of patience
- A little knowledge on how iCalendar works
- Creating notifications
- Creating email templates
- Creating business rules OPTIONAL
- Creating events OPTIONAL
- Basic Javascript
- How to Google
- Reoccurring calendar invites are incredibly complicated (might dive into this later)
- Mail scripting is unavailable when sending calendar invites
- Can't account for all mail clients or the human element when transforming responses sent back to ServiceNow
- Different mail servers interact with meetings in slightly different ways (Exchange 07/10/13, O365, Gmail)
- HTML is possible to use....sort of. We'll touch on this a little
- Conditions that are built into a notification
- Event that triggers a notification, either through a business rule or workflow
- One event for new calendar invites
- One event for updating existing calendar invites
- One event for deleting existing calendar invites
if (current.operation() == 'insert') {
gs.eventQueue("change.inserted", current, gs.getUserID(), gs.getUserName());
}
- Select the table that we defined earlier and has our two date/time fields in it.
- We need to set when the notification will fire. If you chose to go the event route, select your event here. If you are using conditions, now is the time to define them.
- Set the "Content type" field on the "What it will contain" tab to "Plain text only". That's right, we can't do any mail scripting here. It's very annoying and greatly reduces the flexibility of the notification, but as of Eureka (and probably Fuji), we have to send out a plain text notification to make this work.
- dtstart - this denotes when a calendar invite will start REQUIRED
- dtend - this denotes when a calendar invite will end REQUIRED
- description - if you have a multi line description, we'll need to enter this in so that line breaks are handled correctly OPTIONAL
- alarm_time - if you want to have a flexible time for an alarm to trigger, this is needed for the date/time to translate correctly OPTIONAL
There are a lot of lines we can add/remove or different lines we can change. We're going to stick with the basics plus a few useful extras in this article though.
BEGIN:VCALENDAR
PRODID:-//Service-now.com//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:${to}
ORGANIZER:MAILTO:from email address
LOCATION:meeting location
DTSTART:${dtstart}
DTEND:${dtend}
UID:${sys_id}
DTSTAMP:${dtstamp}
DESCRIPTION:meeting body
SUMMARY:subject line
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-DISALLOW-COUNTER:TRUE
X-SNSYSID:${sys_id}
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
ORGANIZER:MAILTO: - Who is listed as the organizer. Recommend inserting the email for your instance if you want to be able to process attendee responses. NOTE: If you want this to be the email address for your ServiceNow instance, we can't use a system property here, so the easiest way is to hardcode it. Just remember that when testing.
LOCATION: - Where the meeting will be held
DTSTART:${dtstart} - Our field from the sys_impex_map table. DO NOT CHANGE
DTEND:${dtend} - Our field from the sys_impex_map table. DO NOT CHANGE
UID:${sys_id} - Unique identifier of the calendar invite. Recommend using the sys_id of the record you are sending this invite from. NOTE: If you want to process responses, I recommend putting 'your_table_name${sys_id}' as it will save us some time later.
DTSTAMP:${dtstamp} - Don't 100% remember what this is for, but let's just leave it be.
DESCRIPTION: - What shows up in the body of the invite. Can omit if defining the body in the notification
X-MICROSOFT-CDO-BUSYSTATUS:BUSY - Defines if the attendee is busy/free/etc.
X-MICROSOFT-DISALLOW-COUNTER:TRUE - Prevents the attendees from proposing new times.
X-SNSYSID:{$sys_id} - Some other unique identifier. Again just use the sys_id
TRIGGER:-PT15M - How soon before the meeting will the alarm pop up. In this example, it is for 15 minutes
BEGIN:VCALENDAR
PRODID:-//Service-now.com//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:CANCEL
BEGIN:VEVENT
STATUS:CANCELLED
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=FALSE:MAILTO: ${to}
DTSTART:${dtstart}
DTEND:${dtend}
UID:${sys_id}
DTSTAMP:${dtstamp}
DESCRIPTION:
END:VEVENT
END:VCALENDAR
if (current.operation() == 'delete') {
gs.eventQueue("your deleted event name", null, Parm1: who this is sent to, Parm2: current.sys_id);
}
BEGIN:VCALENDAR
PRODID:-//Service-now.com//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:CANCEL
BEGIN:VEVENT
STATUS:CANCELLED
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=FALSE:MAILTO: ${to}
DTSTART:${dtstart}
DTEND:${dtend}
UID:${event.parm2}
DTSTAMP:${dtstamp}
DESCRIPTION:
END:VEVENT
END:VCALENDAR
HTML in Meeting Invites from ServiceNow....Sort of
A big drawback of the iCalendar file type is that HTML is not supported in the description field when building up a new meeting. So how is it then that when making a normal meeting in Outlook/Gmail you can throw in some lovely HTML bits? The answer is another tag in the iCalendar type called "X-ALT-DESC". Before you get your hopes up though, this isn't very straightforward. X-ALT-DESC uses some XML schemas from schemas-microsoft-com to build up how the event looks. If you'd like to see what this looks like, I'd recommend making a meeting for yourself in your mail client, exporting it out, and taking a look at X-ALT-DESC. The <style> section contains all the good bits in it.
Something I have not tested, but might work best would be to get a calendar invite going out of ServiceNow into your own client, edit meeting in your client to pretty it up, then see if applying the X-ALT-DESC that appears after editing it into the iCalendar template in ServiceNow does the trick for keeping all of the styling in the future.
- ORGANIZER:MAILTO in your iCalendar code is set to the email address for your instance
- You have some knowledge as to how inbound email actions work and are able to script them
- There is some place in the record that sends the calendar invite to insert the information we get back
- Figure out if an email coming into the system is a response to our calendar invite
- Break down the content of the email to just give us the useful bits
var sbj = email.subject; //email subject
var body = email.body_text; //email body
var sysbody = body.indexOf('UID:table_name');
var sysid = body.slice(sysbody +12, sysbody + 44); //get the custom identifier of the outlook event
//gs.log(sysid + 'sys id of table_name record');
//See if the sys_id from the subject line returns any records
var ga = new GlideAggregate('table_name');
ga.addAggregate('COUNT');
ga.addQuery('sys_id',sysid);ga.query();
var answer = 0;
if (ga.next()) {
answer = gr.getAggregate('COUNT');
//If there are no records, create a log
if (answer == 0) {
gs.log("No meeting response " + sbj);
//Record has been found. Update the invite response fields
} else {
var gr = new GlideRecord('table_name');
gr.addQuery('sys_id',sysid);
gr.query();
while (gr.next()){
if (sbj.indexOf('Accepted') > -1){
gr.u_invite_response = 3;
} else if (sbj.indexOf('Tentative') > -1){
gr.u_invite_response = 5;
} else if (sbj.indexOf('Declined') > -1){
gr.u_invite_response = 7;
}
var responsenotes = gr.u_invite_response_notes;
var bslice = body.indexOf('BEGIN:VCALENDAR');
if (bslice == -1) {
gr.u_invite_response_notes = body + '\n\n' + responsenotes;
} else if (bslice > 0) {
var sbody = body.slice(0, bslice);
gr.u_invite_response_notes = sbody + '\n\n' + responsenotes;
}
gr.update();
}
}
}
- 63,966 Views

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Excellent Article! Thank you for this!
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Very detailed and helpful.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi All,
I am receiving the meeting invite and email body. But I am receiving the meeting invite attachment with name "not supported calendar message.ics". Any help regarding this will be highly appreciated.
Thanks for your help in advance!
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hey Karthika,
Let's start with a couple of common problems that cuase the .ics file to show up as invalid (listed below), and work from there. Quick question to go along with some of these troubleshooting steps, which mail client are you sending the calendar invites to? I ask because Gmail has a special rule to follow.
I'm getting an email with an attachment and a message that says "This is not a valid .ics file".
Lots of places to check here. First is to make sure that the notification Type is a Meeting Invitation, that the Content type is Plain text only, and that you are using an Email Template to house the iCalendar code.
From there, check to make sure that your iCalendar code is placed in the Message Box or Message Text Box in the template, and not the Message HTML Box if you are using Eureka or higher versions of ServiceNow
Finally check to make sure that you have created and mapped your fields in the sys_impex_map table.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hello Bradford,
Thank you I was able to resolve the issue. I have one more question. If one of the user rejects the calendar invite is there a way we can inform other users that the particular user has rejected the invite.
Regards,
Karthika
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hmmm I haven't tried it, but I think conceptually it's possible. This would hinge on the person rejecting the invite just normally rejecting it, and not picking the option to not send a response. That way ServiceNow gets the rejection email back.
Once ServiceNow has the Rejection email, you could make an inbound email action to act upon the email. The UID of the .ics file can be used to track down which record this invite is associated with. I'm guessing either the other recipients are listed in that record, or some form of logic based on the record is used to determine this list of recipients. Some scripting can pull the user who Rejected the meeting out of that list of users, and then you could take who's left and send some form of a notification or update to them.
I know it's very high level, but hopefully it helps spark some ideas on how to handle it. Good luck!

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Bradford,
Thank you so much for this detailed information.
I need your help to set up inbound email action for meeting response. I have created a new inbound email as shown in the screenshots.
action for reply type.
In this action, I am just updating a string type field with 'Testing' as value. But this action is not being triggered.
Thanks and Regards
Ujjawal
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
HI Ujjawal,
Thank you for being patient with my response. There are a lot of things to look at these days when trying to handle responses. The first is, what does the meeting response when someone clicks accept/tentative/decline look like when it gets back to ServiceNow?
There's no watermark on the message, so you'll have to take a look at the message that ServiceNow receives and see if you can use a piece of it to relate the message back to a record. Just as a warning, this can be very difficult as I've noticed some responses come back with the contents included as an attachment, and they don't actually show up in the body/header of the email log record.
I'd start there, then try and build up from what you see in the response that comes into ServiceNow.
Hope this is a helpful starting point.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi,
I get the meeting invite, in invitation 'Required' only contains first email address from the Group member.
In Notification I have added a group name to Groups in "Who Will Receive" section. The meeting invitation comes to outlook with correct date time but it has only one email address in 'Required'.
Expected: Meeting invitation should sent out to all members of the Group.
P.S. in email logs I have checked and found it includes all group member's email addresses in the 'Recipients' block. And all group members are active.
Any help on this issue.
Thanks & Regards,
Bubuprasad

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Bradford,
As per my understanding, inbound email action only works when email contains any watermark. But in case of meeting invite response there is no watermark. How can we use inbound email action then.
Second when a person is proposing a new time then i checked the response in email logs but could not find new proposed time.
Please help me with this.
Thanks and Regards
Ujjawal
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hey Ujjawal
I don't know where you heard that you can only perform inbound email actions on watermarked emails, but you are allowed to use inbound email actions on any email coming into the system, regardless if there is a watermark or not. That is why I recommended including the original table name and the sys_id of the record that generates the meeting invite so you can easily perform a GlideRecord query to locate the originating record on the inbound email action.
As for someone proposing a new time, I haven't played with how to handle that yet. I'd recommend taking a look at the message that gets sent to ServiceNow and seeing if you can piece out the original and new times from the message, then you can handle the new time however you need to.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Awesome explanation
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Bradford,
Can you tell me how to trigger the inbound action from outlook.
Please help me with this.
Thanks,
Arockia
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hey Arockia,
I'd need a little more information to better understand any issues you're having with trying to trigger the inbound action with responses. Any details you have about what is (or isn't) working would be useful.
Thank you
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
This is great!! Thanks for your work.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Bradford,
Very good explanation to create calendar invite. I tried and created successfully. whenever a calendar invite is created it is directly adding to my outlook calendar, I want to open the .ics file with a button i.e., if i want to accept the meeting i can click a button and add it to my calendar. Please help me to do it.
Thanks,
Arockia
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi,
I am receiving email invite, but the sender seems to be problem. Sender is the name mentioned in 'Email accounts' for 'username'. Since cannot change username, is it possible instead of 'username' as sender 'From' name can displayed for sender.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Nikhil,
If I'm understanding your needs correctly, I think you'd want to look at the ORGANIZER line in the iCalendar template. Editing that should change where the attendees see the invite coming from. Below is a link with some more information about the property in iCalendar.
iCalendar spec: 4.8.4.3 Organizer
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
I'm still not quire sure I understand. You're trying to accept the meeting invite from your mail client, correct? As soon as the invite comes in, by default it should show up as Tentative on your mail client's calendar, along with containing buttons in the client itself to Accept, Tentative, and Decline the meeting. Is there something else I am missing from what you're looking to do?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Bradford,
Thanks for your reply, where can I find ORGANIZER property. It is not available in sys_properties.list. I have checked email template as well. It shows in organizer line that it is coming from ${from} and not username.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
I have the same issue ... did you solve it?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hey Nikhil,
Organizer is an iCalendar property, not a ServiceNow property. I think there might be two approaches you can possibly take (you'd need to test).
If I remember correctly, you can dot walk in the Template. It might be possible to dot walk to the field you want to use.
If that doesn't work, then you can manually set the ORGANIZER property in the Template based on the documentation I listed in my previous comment.
Hopefully one of those two ways works out.

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi All,
In calendar invite in body message i want to send global phone number around all countries phone numbers, how can achieve this?
in DESCRIPTION : <it doesn't accepting multiple lines>
thanks

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
How did you solve that issue?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Bradford,
I am glad to see such a wonderful article which is having enough details and also step by step approach. I am having a doubt in Notifications-part-2, who will receive tab. Here it's selected as user however I am unable to see & add user. Also in the inbound action sample code you mentioned some fields like u_invite_response, u_invite_response_notes. Is that values are optional ? Is it possible to share your table/fields details and structure.
Any suggestions/idea from your end will help me a lot
Thanks in advance.

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Just as a mention, the issue was solved from using email templates instead of adding icalendar code direct into the "Message text" box even though I was using plain text. Thank you once again Bradford.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Bradford,
Thanks for such a nice & great article. I am able to configure & receive email, however getting file format not supported. I am using office 365. Is that created the issue.
Meanwhile I cross checked all the setup (as per Karthika's update) & it seems everything is good. Can you please guide me.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Bradford,
Thank you very much for this article, it helps a lot.
However, I don't understand how we can handle responses : In my case I am using Outlook 2016, I followed the steps you described in your article (especially setting the sys_id in UID and ServiceNow instance email).
When I refuse or accept the meeting, ServiceNow receives the response, but the body is empty and I did not figure out how to link the answer to the record (by the way I am using a custom child table of Task).
I get some parameters in the Headers, Content Type and UID fields (the UID is different from the sys_id of the record, is it normal ?).
Here is the email sent :
Any idea on how to figure out for which record is linked to reply ?
Thank you in advance
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Very helpful. Thanks for posting.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi,
Meeting invite is being sent out to whole assignment group even though i added assigned to in who will receive section. I tried changing this line too ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:${to}. But didn't work out. Any help on how to send it to either assigned to or particular user?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Brad,
I see that when an outlook invite is being sent, it gets added to the activity log aswell and it just shows the email template there in the content of that email sent. It makes no sense to the users.
Can we somehow remove the outlook invites from the activity log? We would still wnt to see the other emails,so i cant make send/received email checked off.
Thanks
Surya
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Very helpful thank you for this!
I got stuck during the creation of Field Maps. The calendar invite will be used for a catalog item variable so after selecting "Mapping to a database field", the external name is dtstart but when trying to select the Database field I couldn't associate with the Start date field.
Did I miss a step or is the issue because I'm using the requested item table (icalendar.sc_req_item) instead of the catalog task table??
Thanks in advance!
Grace
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Fantastic article!!!
Is there any way to use other variables besides dtstart and dtend for the start and end date/time? I have a need to allow for two separate calendar invites from the same record on the same table for scheduling one activity, and then the next activity.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi, I'm trying to follow your very detailed instructions, but am running into an issue mapping to a custom table. Our team has a custom table and would like to send a calendar invite when an entry has been inserted or updated in that custom table. The issue is, that custom table contains a couple reference fields that we can dot-walk to get a start/end time, but it's not explicitly on that table. Is it possible to dot-walk through a reference field in order to map dtstart and dtend? Thanks!
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Exactly, what I'm looking for atm. How did you solve this issue?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi Team,
I have encountered one issue related to meeting invite, when the meeting invite recipient is same person who does update the date time field is not receiving meeting invite.
For example : If person A is the recipient and the same person A does update the date/time field notification is not triggering.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hello. Is there a way to calculate the end date based on the start date? For my purposes, I want to create a calendar invite to be a reminder to send an update on a sev 1 incident. My custom table has a field for a time/date to expect an update, but does not require an end date. I'd like to be able to make the end date 15 minutes past the start.
Thanks

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Just wanted to say that this post was SUPER helpful for me! I used it along with a survey to ask people to select from a list of options of training sessions to attend. Coupled with a custom table to manage event information, the process is nearly generic enough to need only entries for the event(s) on that custom table and a new survey with the options...unfortunately it also requires a new business rule right now because survey question type choices are limited in what values they let you record. If I could record a sys_id, though, I think I'd be golden! Thanks again!!

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi all,
I had requirement on this.I am facing two issue which is date and time is not able fetching into outlook below template used and sys_impex_map.
template :
BEGIN:VCALENDAR
PRODID:-//Service-now.com//Outlook 11.0 MIMEDIR//EN
MIMEDIR//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:${to}
ORGANIZER:MAILTO:${from}
DTSTART:${dtstart}
DTEND:${dtend}
LOCATION:${location}
UID:${uid}
DTSTAMP:${dtstamp}
DESCRIPTION:${description}
SUMMARY:${summary}
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-DISALLOW-COUNTER:TRUE
X-SNSYSID:${sys_id}
BEGIN:VALARM
TRIGGER:-PT30M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
sys_impex_map:
email output:
notification:
please check it suggest for this buddies
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
This is exactly what i am trying to do. How did u resolve this?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi,
Can we insert WebEx or Skype meeting invite links in it before sending them out. Did anyone tried this?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi, I am having issues with the proper time into my Outlook Event. I used the following in my email template which I am using this on the Appointment Booking Table. Any idea's on what I am doing wrong?
BEGIN:VCALENDAR
PRODID:-//Service-now.com//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:REQUEST
BEGIN:VEVENT
ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:${to}
ORGANIZER:MAILTO:landolakesdev.service-now.com
LOCATION:TechXpress
DTSTART:${dtstart}
DTEND:${dtend}
UID:${sys_id}
DTSTAMP:${dtstamp}
DESCRIPTION:meeting body
SUMMARY:subject line
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-DISALLOW-COUNTER:TRUE
X-SNSYSID:${sys_id}
BEGIN:VALARM
TRIGGER:-PT15M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
\

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Phenomenal Article!!! Thank you.
Note: On the calendar cancellation invite. The invite to remove the invite works BUT as an ordinary user, I may not know to open it then manually remove it from the calendar.
Ideally, I would want the invite to be removed once the cancellation hits my inbox; kind of like the rescheduled invite automatically moves the current one to another day, then waits for you to confirm/accept the new times.
I wondered if this was something I was doing wrong or was it working as designed.

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
This happened to me as well when setting up Appointment Booking. Turned out the name of the import-export map for the dates was incorrect.
The appointment booking icalendar name has to be "icalendar.sn_apptmnt_booking_appointment_booking".
(table: sys_impex_map.list)
Because the name is so long, you have to increase the name field size.
After the name was accurate, it worked.

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
How did you change your widget features like the about location, Welcome, etc?
I have a HI Ticket open with Service Now, because simply cloning the widget interfered with the functionality.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Has anyone run into any issues when trying this in scope? I have my event in my event logs but not sure why nothing is being sent.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Yes same thing that happened to me. I had to increase the value of the name field to 100 it was being stopped by character limitation.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
You also have to create the map in the scope - Soon as I changed it from Global to Scoped and made the below Name field bigger then it worked. Not sure if this is your issue but it's what worked for me.

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi,
I am getting the Email Invite. But If i try to respond back then it is bounced back to outlook stating
Delivery has failed to these recipients or groups:
The format of the email address isn't correct. A correct address looks like this: someone@example.com. Please check the recipient's email address and try to resend the message.
Any ideas what I am doing wrong with replying back to Servicenow.
ORGANIZER:MAILTO: I have set the email address for my instance.
Would helpful if any one faced the same previously.