Prevent editing appointments and tasks in outlook - outlook

Is it possible to prevent a user from editing appointments and tasks in Outlook. The tasks and appointments are synchronized using an addin we are developing.
We want to make a first release, but we have to prevent the user from editing the items, because we can't sync to changes at to moment back to the server.
We use Redemption to create the appointments and tasks, Which is build on MAPI.
We are also using AddinExpress to make some things happen in Outlook.
Any ideas are welcome.

Unless you create your own store provider, you cannot make a truly read-only appointment or task.
You can try to intercept the Wrire event on each particular item and set the Cancel parameter to true.

Related

Outlook add in OnSend event to trigger only for appointments, not emails

Currently I am developing an Add in for Outlook and I have implemented onSend event. Since it is UI-less and it is always triggered, I was wondering is there a way to only trigger it for Appointments not emails? This is because user experience, for them not to have "Add in" triggered when messages are created and sent out.
There isn't a way to restrict On-send to just appointments. One workaround, which I'm sure you are aware of, is to no-op the event handler if the item is a message. This doesn't solve the problem of the add-in running on messages.
We track Outlook add-in feature requests on our Tech Community Page. Please submit your request there and choose the appropriate label(s). Feature requests on Tech Community are considered, when we go through our planning process.

Is it possible to detect when the user changes the date of an appointment directly from the calendar?

I am writing an outlook web Add-In where the user can create an appointment and book a meeting room through the software.
The problem is that once the user closes the Add-In and goes back to the calendar, they can freely change the date of the appointment by dragging it around, and the Add-In cannot see those changes, since it's not open.
That means that those changes do not get registered into the system and are essentially only local to the user who made them. I need a way that I can detect whenever the user changes the date of an appointment, so that I can update the data on my end.
I have heard about subscribing to notifications but I'm not sure that is the best solution. Any Ideas would be highly appreciated.
Not from a web addin - you can do that from a standalone app that continuously runs and uses either the Outlook Object Model (Items.ItemChange event) or EWS to receive the folder notifications. Or you can do that from a COM addin that uses the Items.ItemChange event.

How to create a custom notification in Dynamics

I am looking in to creating a notification function in Dynamics 365, and to find the best solution, I have began with searching for the possibilities (Javascript/C#/All others). Example: Sending a user a notification that a new lead is created.
Edit:It should be generic and easy to add a new notification. So maybe it should be a workflow step, or connected to an entity.
Email notification is already integrated in Dynamics 365
Microsoft Graph has a Notification possibility (Only in Beta)
https://developer.microsoft.com/en-us/graph/graph-explorer#
Create a custom entity which. And on dashboard add a Web Resource (Javascript) that looks through the entity to find if there are any Records on the current user. If so make a popup.
Use Chrome extension to notify user.
(Example: https://community.dynamics.com/crm/b/bruce365usingdynamics/archive/2017/11/02/announcing-365-notify)
Is there any other possibility you know of?
Or do you have any experience with any of these. What one should go for or not.
Your best bet is Dashboard with Posts in Timeline/social pane. This just need couple of configurations like Post rule, Timeline embedding in Dashboard & user training.
Activity feeds
Activity Timeline
If not, timely workflow or MS Flow to send a digest notification.
I would say if you wish to go code less solution then use Workflow
and place trigger as you wish. Send an Email to Either team or
particular user from this workflow. Just set regarding in Email as
Account or Contact or any entity from which you have an Trigger. By
this way You can see all these notification in your Social pane
timeline as well.
If you need some custom logic, Use plugin but in turn call a
workflow which will be onDemand workflow and this will only be used
to send Email.
There can be different Ideas as well. But we have this in place on one of our productive system and it fulfilles requirement of Notification very well.
Since you specifically want to interact with users within the CRM system, there are a number of simple approaches:
Task Queue (Passive) -
Create task records within CRM (these can also sync to Outlook if you want to get fancy). Users review a queue containing all of their tasks. You can similarly assign tasks to teams of users. I recommend this approach for CRM oriented users who have a number of different tasks.
View/Report/Dashboard (Passive) -
Create views of records requiring action. Users then review these views on a regular basis. I recommend this approach for non-time sensitive tasks, and tasks executed in bulk across many records.
Email (Active) -
Create a workflow with a Send Email step. This is easy to do but could generate a lot of emails which the users may then ignore. I only recommend this approach for rare notifications, or those requiring urgent action.
Emailed Reports (Active) -
A hybrid of the second and third approaches, there are third party solutions that will email view results to users on a scheduled basis. This would be my recommendation if you want an active approach without spamming users constantly. These are easy to install and configure and entail a small cost.
In addition to the many viable options offered above (a few of which I was unaware), if the user's daily responsibilities include working with Leads, you might want to keep it super simple - create a My New Leads view and instruct them to check it throughout the day. You could even place this view on a dashboard, making your option 3 redundant.
If the user rarely needs to concern themselves with Leads, the need for a notification strengthens. Assuming that the Lead volume will not flood their inbox, in the interest of simplicity you could start with a workflow email notification.

Setting Activity Category on Email tracked from Outlook to CRM

I'm using Dynamics CRM 2015 (7.0.2.53) and Outlook 2016 (16.0.7766.7080) with the CRM for Outlook (7.1.1.3113) addin.
What I am trying to achieve is to give users the ability to specify an Activity Category against an email which they Track and Set Regarding from Outlook.
Currently, upon tracking and setting regarding on an email in Outlook, an Email Activity is created against the specified Entity record (let's say an Opportunity) in CRM, which is fine. The problem is that I cannot find any way to allow the user to specify an Activity Category for that created Activity either during the Track/Set Regarding process, or even after the Activity is created in CRM.
Is what I'm trying to achieve possible and if not, is there any other way to achieve a similar result, so that users can specify some value from a set of options against an email when they track it from Outlook to CRM, so that value can then be used for reporting purposes?
Basically there is no way of adding some custom functionality to Tracking Emails from Outlook. So you cannot add anything in Outlook plugin that will allow you to perform some operation on CRM side to set the Category right.
You can always make a plugin/workflow on Email creation in CRM and based on some email properties (topic, content, recipients etc.) set this category by youself - but of course users still will be unable to change it.
When email is created in CRM, it's disabled (because it usually already has been sent), but you can still modify it using workflows and dialogs. So you can always create a Dialog (https://msdn.microsoft.com/en-us/library/gg509010.aspx) and there you can prompt for proper category and set it on the email. So I can see a scenario like that - you have a view of Emails that are not categorized (or a Queue, where you put them in a plugin when user is tracking email from outlook). You pick Email, click "Start Dialog" which will be called "Set Category" or whatever, and set the category. Of course after this operation Email will vanish from the view. You can always create a reminder for the users to set the category for their mails, this should be included in new users training etc. Without any hardcore custom coding I think that's the only thing you can do (because if you don't mind writing more complex stuff you can always prepare some custom HTML5 control on Email form that will allow you to set the category field).

Create Exchange Meeting Programmatically

Is it possible to create a meeting or appointment on someone else's Exchange 2010 account, without them needing to accept the meeting? Ideally, we want to have a delegate account, or similar strategy, to place appointments/meetings onto people's calendars. We want to bypass the normal request/accept model, and force these meetings into the calendar.
I looked at CreateItem() in the Exchange 2010 documentation, but it is unclear as to what happens once the method is executed. Does the user receive a normal invitation? We don't want that. We want a model where our system has full control over the users' calendars, without them receiving a traditional meeting invitation, and with automatic acceptance. I would prefer not to have to use VBA hacks or plugins, also.
I think it's possible in case of usage ApplicationImpersonation (the usage of ImpersonatedUserId). It 's important that you have to configure the Exchange first. Then you can set NetworkCredential use ImpersonatedUserId to direct access to the destination calender. See here for more information and the code example.
What I would do is grab a copy of MFCMapi (mfcmapi.codeplex.com), and then create a meeting request in a traditional way and send it to a couple mailboxes. Accept it in a couple, mark tentative in a couple, etc.
Take a look at the resultant calendar item created in the invitee mailbox. I expect you should be able to create the appointment and then set the necesary MAPI properties to make it appear as accepted. You can set the arbitrary properties with EWS, it's just going to take a bit of digging to figure out which ones to set. MFC Mapi is a good tool for that.
On the organizer side, you'll need to make some tweaks so it looks like everyone accepted.

Resources