Can the Alarm/Reminder of iCalendar Event be disabled via iCal file? - outlook

Quick synopsis:
I've developed a project management system that help our sales reps keep track of events by emailing them iCal files. At the moment everything is working perfectly, but they do not want to have reminders that pop up. Rather, they ONLY want the events to be on their calendars.
Caveat:
Having them change the settings of their email client is, unfortunately, not an acceptable solution.
Research:
According to the iCalendar specifications, the VALARM component can be set so that the Alarm/Reminders are defined, but I can't seem to figure out how to disable the alarms all together.
This seems to work in Outlook 2013, but I don't know why:
BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 15.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
CLASS:PUBLIC
CREATED:20130625T191929Z
DTEND;VALUE=DATE:20130627
DTSTAMP:20130625T174218Z
DTSTART;VALUE=DATE:20130626
LAST-MODIFIED:20130625T191929Z
PRIORITY:5
SEQUENCE:0
SUMMARY;LANGUAGE=en-us:test
TRANSP:TRANSPARENT
UID:040000008200E00074C5B7101A82E00800000000304147C0A971CE01000000000000000
0100000004A6B73D79A177C4ABFF1E0DCAE7E273F
X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//E
N">\n<HTML>\n<HEAD>\n<META NAME="Generator" CONTENT="MS Exchange Server ve
rsion 08.00.0681.000">\n<TITLE></TITLE>\n</HEAD>\n<BODY>\n<!-- Converted f
rom text/rtf format -->\n\n<P DIR=LTR><SPAN LANG="en-us"></SPAN></P>\n\n</
BODY>\n</HTML>
X-MICROSOFT-CDO-BUSYSTATUS:FREE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MS-OLK-AUTOFILLLOCATION:TRUE
END:VEVENT
END:VCALENDAR
Am I missing something obvious?
Thank you.

If I remember correctly, at least some versions of Outlook will set the reminder to the default value (15 minutes) if VALARM part is missing. Can you set the alarm to a date in the far future?

If I understand your problem correctly, the client on the receiving end will automatically add a (default) alarm although none was specified in the original VEVENT.
There is no way in iCalendar or iMIP/iTIP to explicitly convey the information that no alarm should ever been associated with an event. And as far as iMIP/iTIP, it is actually a bad practice to have an alarm in the VEVENT that you are sending. After all, my notion of the best alarm is likely to not be yours.
As far as your example, this may be due to the TRANSP property being set to TRANPARENT (you dont care about it since it does not consume your time) but that is a rather wild guess.

There is no way in iCalendar to specify a VALARM component and have it marked as "disabled". It either exists and is active or it simply does not exist.
Some clients like Outlook do not have the concept of disabling an alarm (and being able to reenable it later). The only client I know of that does support the idea of disabling an alarm is Notes but there may be others.
The only way to achieve this is to use an X- property that not everyone supports or to simply remove the VALARM in question.
You could consider having a "send with alarms" preference in your system so that users can indicate if they want you to send them or not. If users opt out then simply remove the VALARM component(s) from what you generate before you send it to them.

Well, I had the same issue. I created a .ics to bulk import a few dozen calendar holds based on a table from Excel. I did not define the VALARM, but when using the mac calendar import it natively inherited this and applied my default alarm. Comparing events with and without an alarm set, I found all events had the VALARM blocks, BUT all events I had marked as no reminder had the exact same trigger value set. Looks like setting it for a Value of 4/1/1976 at 00:55:45Z is the equivocal to no alarm.
BEGIN:VALARM
X-WR-ALARMUID:#####
TRIGGER;VALUE=DATE-TIME:19760401T005545Z
X-APPLE-DEFAULT-ALARM:TRUE
ACTION:NONE
END:VALARM
And this is why 4/1/1976 haha. Typical programming fashion, there's always a reason behind the random date or name selected. Kinda like Python's name...
"Founders Steve Jobs and Steve Wozniak created Apple Computer on April 1, 1976,[1] and incorporated the company on January 3, 1977,[2] in Cupertino, California." - wikipedia

Related

Google tasks API patch overrides time portion

I'm trying to use patch as an update option for a google tasks from the API https://developers.google.com/tasks/reference/rest/v1/tasks/patch. So far as I understand it should update only sent fields, but even if I'm sending only title, it overrides time portion, meaning: I add google task from google tasks app, set date and time; then in my app with https://developers.google.com/tasks/reference/rest/v1/tasks/patch I'm sending title update, task becomes all day and losing time portion
What I'm doing wrong ?
This is an issue that has been reported
The issue is tracked on Google's public issue tracker here: https://issuetracker.google.com/issues/128979662
The Support documentation says you can report this on Google Issue Tracker. In this case I would find the report created for this and upvote it.
As you mentioned Google Tasks documentation says that the field due should not be affected if your are not explicitly changing that field:
Due date of the task (as a RFC 3339 timestamp). Optional. The due date only records date information; the time portion of the timestamp is discarded when setting the due date. It isn't possible to read or write the time that a task is due via the API.

Custom Field Alert in TFS 2015

The question is the following:
I have a custom Requester field in TFS work items. It contains a valid TFS user name.
Is it possible to send an email to the person specified in this custom field, when the item changes a state?
In other words:
Requester = [Me]
Send email on State change
From the following questions :
1) “[Me]” variable for custom field alerts in TFS 2013
2) How to create custom Field with transition workflow in TFS
I figured out that custom fields (such as Requester) do not have = and <> operators. They have only Change, Change to, Change from. Thus it is not possible. (You can only observe the changes made to the custom fields)
Has anybody seen, herd or implemented a solution to this? Maybe a custom plug-in?
Thank You in advance!
You're looking at a server side event handler to achieve this.
Intercept the Work Item changed event
Check if the change was a
change in state
If it is, then email the address listed in the
Requester field.
There are couple of old projects on codeplex which should get you up and running but you'll need to update for TFS 2015 (and test with any updates you apply later)
Email alerts for TFS
TFS Work Item Watcher
There is a feature that just popped into VSTS that makes this a little slicker
Follow a Work Item
Although you would get notified on all changes rather than just state change
The feature was added in TFS "15" (not the same as TFS2015, see Brian Harry's blog post)
The feature is not enabled publicly yet, but there is a feature flag that you can turn on by changing a value in the team foundation registry to enable it - because it's not public yet you will have to contact Microsoft for instructions,
I have provided my email in the blog post
https://blogs.msdn.microsoft.com/rihamselim/2016/09/07/enabling-alerts-for-custom-fields-in-work-item-alerts/

What actions in Outlook would cause PR_LAST_MODIFIER_NAME or PR_LAST_MODIFICATION_TIME to be modified?

I am testifying soon as to data I gathered using MFCMAPI in which I determined that the PR_LAST_MODIFICATION_TIME did not match the PR_CREATION_TIME or PR_MESSAGE_DELIVERY_TIME of the message.
What actions in Outlook would cause PR_LAST_MODIFIER_NAME or PR_LAST_MODIFICATION_TIME to be modified? Simply reading, marking the message as unread, and viewing the attachments does not modify these properties in my lab tests.
I am trying to determine what other actions performed by the user or on behalf of the user could cause the PR_LAST_MODIFIER_NAME to no longer list the sender and PR_LAST_MODIFICATION_TIME no longer match Delivery/Creation time.
I had the opportunity many months ago to talk to developer on the MFCMAPI project from Microsoft and I am kicking myself in the gut for not writing down his name.
Any help is appreciated.
Do you mean Steve Griffin?
I am not him, but I think I can easily answer your question - every time IMessage::SaveChanges is called, PR_LAST_MODIFICATION_TIME will be reset.

Exchange Web Services, unable to set startTimeZone of appointment (java api)

When trying to set the start time zone of an appointment (in ews java API 1.1.5) I get an error. I'm trying to set the time zone because an exception is raised when using appointment.setStart otherwise.
Appointment = new Appointment(service);
appointment.setStartTimeZone(new TimeZoneDefinition() {{setId("what should go hère")}});
appointment.setStart(startTime);....
Using exchange 2007
It finally appear that the JAVA EWS API is a bad (and full of bugs) port of the C# version.
So the rule is simply to not use it.
There is some alternative out there :
J-xchange
For my specific question, it looks like setStartTimeZone function expect a C# object, which it's not possible to get.
I was able to get around this by commenting out the validation code regarding StartTimeZone (lines 247-256 of Appointment.java) and recompiling the jar. If I pass in date/times based on UTC, the appointment gets created in the user's timezone.

What time zones does Outlook 2007 support in iCalendar invites?

I understand Outlook only "partially" conforms to the standard. Does Microsoft have a published spec on what they do conform with?
I need a list of the available time zone id's I can use for Outlook meeting invites.
I'm using ical4j to build my invite. I found the ical4j-zoneinfo-outlook project, and it works for the basic America/Chicago and America/New_York time zones. Overall I can't get a list of the complete available id's from this library, and it won't support basic "GMT-6:00".
Any ideas? Thanks!
The best way to get a full list of timezone ids for iCal4j is to check the http://tzurl.org/zoneinfo-outlook website. This is the source for ical4j's timezones.
Note that you still need to either manually or programmatically traverse the site to get all the valid ids.

Resources