SlideShare a Scribd company logo
From Event Receivers
to SharePoint Webhooks
André Vala
IT Deputy Director @ Pestana Hotel Group
Office Servers and Services MVP
SharePoint for 11+ years
Speaker & author
https://andrevala.com
/in/andrevala
@atomicvee
andre.vala@gmail.com
Agenda
Event
Receivers Conclusions
3 SLIDES
LEVEL: 100
ALL
7 SLIDES
LEVEL: 200
DEV
15 SLIDES + 1 DEMO
LEVEL: 300
DEV
15 SLIDES + 1 DEMO
LEVEL: 300
DEV
7 SLIDES
LEVEL: 100
ALL
Remote
Event
Receivers
SharePoint
Webhooks
Event
Handling in
SharePoint
1
Respond to user actions and modifications to content
Add validation logic for columns on list items
Cleanup and format content as it is entered by users
Calculate and store aggregated values
Initialize a host web with new lists during add-in installation
Why Handle Events?
Event Handling in SharePoint
2003 2007 2010 2013 2016
Server-Side Event Receivers
Remote Event Receivers
SharePoint Webhooks
2
Server-side event handling
Implemented using an event receiver class
Registration requires referencing of the event receiver class
Event receivers are deployed by SharePoint solution in a .NET
assembly
Loaded into SharePoint worker process
Overview
Executed before data is committed to the Content DB
Opportunity for pre-processing like validations
Opportunity to cancel the event
Run in the same process and thread that triggered the event
Block the execution of the current thread
UI will be held up
Avoid complex time-consuming processing logic
Synchronous Events (-ing)
Executed after data is committed to the Content DB
Cannot be cancelled
Opportunity for post-processing like notifications
Run on a background thread and do not block the UI
This behaviour can be changed by updating the synchronization property of the the event receiver to
synchronous
Asynchronous Events (-ed)
Supported Events
Site/Web Events
Site Delete  
Web Delete  
Web Move  
Web Add (2010) 
Web Provision (2010) 


Feature Events
Feature Activate 
Feature Deactivate 
Feature Install 
Feature Uninstall 
Feature Upgrade 
Workflow Events
Workflow Start (2010)  
Workflow Postpone (2010) 
Workflow Complete (2010) 
Entity Instance Events
Entity Instance Add (2013) 
Entity Instance Delete (2013) 
Entity Instance Update (2013) 
Add-In Lifecycle Events
Add-In Install (2013) 
Add-In Upgrade (2013) 
Add-In Uninstall (2013) 
List Events
List Add (2010)  
List Delete (2010)  
Email Reception 
List Schema Events
Field Add  
Field Delete  
Field Update  
List Item Events
Item Add  
Item Delete  
Item Update  
Item Attachment Add  
Item Attachment Delete  
Item Check In  
Item Check Out  
Item Uncheck Out  
Item File Move  
Item File Convert 
Item Version Delete (2013)  
Security Events (2013)
Group Add  
Group Update  
Group Delete  
Group User Add  
Group User Delete  
Role Definition Add  
Role Definition Delete  
Role Definition Update  
Role Assignment Add  
Role Assignment Delete  
Role Assignment Update  
Break Inheritance  
Reset Inheritance  
Declaratively for List and Content Type binding
Using the object model for all bindings
Registering Event Receivers
SPWeb new SPSite "http://localhost"
SPEventReceiverDefinition
"Receiver.Class1"
"Receiver, Version=1.0.0.0, Culture=neutral, PublicKeyToken =10b23036c9b36d6d"
SPEventReceiverType
Inherit from one of the base classes
Override the corresponding event methods
Event Receiver Implementation
3
Event handler code runs in remote web (not SharePoint)
SharePoint calls web service in remote web to trigger event
Must be accessible by anonymous users
Supported remote events are a subset of server-side events
Remote “before” events implemented as two-way events
Remote “after” events implemented as one-way events
Overview
Modeled as two-way events
Execution flow goes to remote web and then back to SharePoint
Client is blocked while event processing occurs in remote web
Sample execution flow for two-way event
1. Client attempts action which triggers an event (e.g. update item)
2. SharePoint host calls to web service in remote web
3. SharePoint host blocks until call returns from remote web
4. SharePoint host commits action and returns to Client
Remote “Before” Events
Two Way Event (aka before event)
Client
SharePoint
Host
Remote Web
1 2
34
Modeled as one-way events
Execution flow goes to remote web but does not return
Unlike “before” events, after events do not block client response
Sample execution flow for one-way event
1. Client attempts action which triggers an event (e.g. update item)
2. SharePoint host commits action and returns to Client
3. SharePoint host executes one-way WCF call on remote web
Remote “After” Events
One Way Event (aka after event)
Client
SharePoint
Host
Remote Web
1
3
2
Supported Events
Site/Web Events
Site Delete  
Web Delete  
Web Move  
Web Add 
Web Provision 


Feature Events
Feature Activate
Feature Deactivate
Feature Install
Feature Uninstall
Feature Upgrade
Workflow Events
Workflow Start (2010)
Workflow Postpone (2010)
Workflow Complete (2010)
Entity Instance Events
Entity Instance Add  
Entity Instance Delete  
Entity Instance Update  
Add-In Lifecycle Events
Add-In Install 
Add-In Upgrade 
Add-In Uninstall 
List Events
List Add  
List Delete  
Email Reception
List Schema Events
Field Add  
Field Delete  
Field Update  
List Item Events
Item Add  
Item Delete  
Item Update  
Item Attachment Add  
Item Attachment Delete  
Item Check In  
Item Check Out  
Item Uncheck Out  
Item File Move  
Item File Convert 
Item Version Delete  
Security Events
Group Add  
Group Update  
Group Delete  
Group User Add  
Group User Delete  
Role Definition Add  
Role Definition Delete  
Role Definition Update  
Role Assignment Add  
Role Assignment Delete  
Role Assignment Update  
Break Inheritance  
Reset Inheritance  
Event receivers must be registered with SharePoint host
Registration can be declarative with XML for events occurring in app web
Registration for events occurring in host web requires writing procedural code
Registering Remote Event Receivers
Remote event receiver implemented with .svc file
Event receiver code written as C# code code-behind .svc file
Event receiver is a class that implements IRemoteEventService
ProcessEvent method executes when two-way event is triggered
ProcessOneWayEvent method executes when one-way event is triggered
The Remote Event Receiver Entry Point
Passed as parameter
Provides you with contextual information about the current event
Makes it possible to determine event type and event target object
Makes it possible to read user input to perform validation
SPRemoteEventProperties
ProcessEvent must return SPRemoteEventResult object
Makes it possible to cancel user action when user input is invalid
Makes it possible to update user input when processing a “before” event
SPRemoteEventResult
Example “Before” Event
Example “After” Event
SharePoint add-in model support add-in events
Add-in events for installation, upgrade and uninstall
Added to add-in project using property sheet
Implemented as a remote event receiver
App Installed event
App Installed event must complete within 30 seconds
SharePoint will call the receiver 3 times before failing
Add-In Lifecycle Events
Declaratively registered in AppManifest.xml
Add-In Lifecycle Event Registration
Debugging in Office 365
Addresses with http://localhost will not work
You must use a Azure Relay to expose your service
Visual Studio has native support for debugging via Azure Relay (previously Azure Services Bus)
Debugging
SharePoint Webhooks
4
A way to be notified of a done change
Push model instead of Pull model
Universal model used by many services (WordPress, GitHub,
MailChimp, ...)
First made available in OneDrive and Outlook
Now available in SharePoint Online
What are WebHooks?
Subscribe to a Webhook
POST /_api/web/lists('list-id')/subscriptions
Application
Content-Type: application/json
{
"resource": "https://contoso.sharepoint.com/_api/web/lists({id})",
"notificationUrl": "https://{your host}/your/webhook/service",
"expirationDateTime": "2017-06-18T16:17:57+00:00"
}
SharePoint
Service
Subscribe to a Webhook
Application
YourWebHook
notification
serviceendpoint
POST https://{your host}/your/webhook/service
?validationToken={randomString}
SharePoint
Service
Subscribe to a Webhook
Application
YourWebHook
notification
serviceendpoint
Content-Type: text/plain
{randomString}
HTTP/1.1 200 OK
SharePoint
Service
Subscribe to a Webhook
SharePoint
Service
Application
YourWebHook
notification
serviceendpoint
Content-Type: application/json
{
"id": "a8e6d5e6-9f7f-497a-b97f-8ffe8f559dc7",
"expirationDateTime": "2017-06-18T16:17:57Z",
"notificationUrl": "https://{your host}/your/webhook/service",
"resource": "{id}"
}
HTTP/1.1 201 Created
Application
Event Notification
SharePoint
Service
YourWebHook
notification
serviceendpoint
{
"value":[
{
"subscriptionId":"91779246-afe9-4525-b122-6c199ae89211",
"clientState":"00000000-0000-0000-0000-000000000000",
"expirationDateTime":"2017-06-18T17:27:00.0000000Z",
"resource":"b9f6f714-9df8-470b-b22e-653855e1c181",
"tenantId":"00000000-0000-0000-0000-000000000000",
"siteUrl":"/",
"webId":"dbc5a806-e4d4-46e5-951c-6344d70b62fa"
}
]
}
POST https://{your host}/your/webhook/service
Event Notification
SharePoint
Service
YourWebHook
notification
serviceendpoint
HTTP/1.1 200 OK
Event Processing
SharePoint
Service
YourWebHook
notification
serviceendpoint
HTTP/1.1 200 OK
POST https://{your host}/your/webhook/service
Storage Queue
WebJob
GetChanges Pattern
SharePoint
Service
YourWebHook
notification
serviceendpoint
Application
Storage Queue WebJob
SQL Azure DB
POST https://{your host}/your/webhook/service
POST /_api/web/lists('list-id')/subscriptions
Grab “CurrentChangeToken” from list
Persist token per
subscription
Persist last used token per subscription
Grab change token from DB
Supported Events
Site/Web Events
Site Delete
Web Delete
Web Move
Web Add
Web Provision


Feature Events
Feature Activate
Feature Deactivate
Feature Install
Feature Uninstall
Feature Upgrade
Workflow Events
Workflow Start (2010)
Workflow Postpone (2010)
Workflow Complete (2010)
Entity Instance Events
Entity Instance Add
Entity Instance Delete
Entity Instance Update
Add-In Lifecycle Events
Add-In Install
Add-In Upgrade
Add-In Uninstall
List Events
List Add
List Delete
Email Reception
List Schema Events
Field Add
Field Delete
Field Update
List Item Events
Item Add 
Item Delete 
Item Update 
Item Attachment Add 
Item Attachment Delete 
Item Check In 
Item Check Out 
Item Uncheck Out 
Item File Move 
Item File Convert 
Item Version Delete 
Security Events
Group Add
Group Update
Group Delete
Group User Add
Group User Delete
Role Definition Add
Role Definition Delete
Role Definition Update
Role Assignment Add
Role Assignment Delete
Role Assignment Update
Break Inheritance
Reset Inheritance
WebHooks have a retry mechanism with an incremental back off
strategy (5 times with 5 minute interval)
WebHook calls are less taxing for your service endpoint
The WebHook payload is very small
Notifications are batched because processing depends on the CSOM GetChanges() call
WebHooks are more secure as no event information is passed along
during the notification
WebHooks are easier to consume by “non-SharePoint” developers
No WCF based endpoints, regular HTTP services are sufficient (e.g.
Web API)
WebHook Advantages
WebHooks have an expiration date of maximum 6 months
after creation
You can “renew” a WebHook via a REST call
PATCH /_api/web/lists('list-id')/subscriptions('subscriptionID')
Two patterns are possible:
Have a background job that regularly renews the needed subscriptions (recommended model)
Renew at notification time (will drop WebHook if there’s no event within the defined expiration window)
Subscription Renewal
Connect remote debugger to your service and web job running
in Azure
Use ngrok (https://ngrok.com/) as alternative to create a
tunnel to your service running on localhost
Debugging
SharePoint List Webhooks
DEMO
Conclusions
5
SharePoint Version Availability
Event Receivers Remote Event Receivers WebHooks
SharePoint Server 2003 
SharePoint Server 2007 
SharePoint Server 2010 
SharePoint Server 2013  
SharePoint Server 2016  
SharePoint Online  
Supported Event Types
Event Receivers Remote Event Receivers WebHooks
Site/Web events  
List events  
List schema events  
List item events   
Workflow events 
Security events  
Add-in events  
Feature events 
Comparison
Event Receivers Remote Event Receivers WebHooks
Easy to develop   
Event registration   
Event type coverage   
Security   
Robustness   
Compatibility   
Future proof   
Overall   
Remote Event Receivers are here to stay
Use Webhooks if
Developing exclusively for SharePoint Online (currently)
Just need to handle list item events (currently)
Want to leverage automatic retries
Want to leverage increased security
Use Remote Event Receivers if
Targeting SharePoint On-Prem (2013 or later)
Need to handle events other than list item events
Use Server-side Event Receivers if
Targeting older versions of SharePoint (before 2013)
Conclusions
https://andrevala.com
/in/andrevala
@atomicvee
andre.vala@gmail.com

More Related Content

What's hot

Introduction to Microsoft SharePoint Online Capabilities, Security, Deploymen...
Introduction to Microsoft SharePoint Online Capabilities, Security, Deploymen...Introduction to Microsoft SharePoint Online Capabilities, Security, Deploymen...
Introduction to Microsoft SharePoint Online Capabilities, Security, Deploymen...Microsoft Private Cloud
 
Breakdown of Microsoft Purview Solutions
Breakdown of Microsoft Purview SolutionsBreakdown of Microsoft Purview Solutions
Breakdown of Microsoft Purview Solutions
Drew Madelung
 
Microsoft Information Protection.pptx
Microsoft Information Protection.pptxMicrosoft Information Protection.pptx
Microsoft Information Protection.pptx
ChrisaldyChandra
 
Migrating 3000 users and 1100 applications from Lotus Notes to Office 365
Migrating 3000 users and 1100 applications from Lotus Notes to Office 365Migrating 3000 users and 1100 applications from Lotus Notes to Office 365
Migrating 3000 users and 1100 applications from Lotus Notes to Office 365
Arno Flapper
 
Microsoft Azure Security Overview
Microsoft Azure Security OverviewMicrosoft Azure Security Overview
Microsoft Azure Security Overview
Alert Logic
 
OpenID Connect and Single Sign-On for Beginners
OpenID Connect and Single Sign-On for BeginnersOpenID Connect and Single Sign-On for Beginners
OpenID Connect and Single Sign-On for Beginners
Salesforce Developers
 
Microsoft Purview Information Barriers and Communication Compliance and Micro...
Microsoft Purview Information Barriers and Communication Compliance and Micro...Microsoft Purview Information Barriers and Communication Compliance and Micro...
Microsoft Purview Information Barriers and Communication Compliance and Micro...
Albert Hoitingh
 
Securing Team, SharePoint, and OneDrive in Microsoft 365 - M365VM
Securing Team, SharePoint, and OneDrive in Microsoft 365 - M365VMSecuring Team, SharePoint, and OneDrive in Microsoft 365 - M365VM
Securing Team, SharePoint, and OneDrive in Microsoft 365 - M365VM
Drew Madelung
 
Secure your Access to Cloud Apps using Microsoft Defender for Cloud Apps
Secure your Access to Cloud Apps using Microsoft Defender for Cloud AppsSecure your Access to Cloud Apps using Microsoft Defender for Cloud Apps
Secure your Access to Cloud Apps using Microsoft Defender for Cloud Apps
Vignesh Ganesan I Microsoft MVP
 
SharePoint Online (365) vs SharePoint On-Premises
SharePoint Online (365) vs SharePoint On-PremisesSharePoint Online (365) vs SharePoint On-Premises
SharePoint Online (365) vs SharePoint On-Premises
Lior Zamir
 
Planning Your Migration to SharePoint Online #SPBiz60
Planning Your Migration to SharePoint Online #SPBiz60Planning Your Migration to SharePoint Online #SPBiz60
Planning Your Migration to SharePoint Online #SPBiz60
Christian Buckley
 
Microsoft Information Protection demystified Albert Hoitingh
Microsoft Information Protection demystified Albert HoitinghMicrosoft Information Protection demystified Albert Hoitingh
Microsoft Information Protection demystified Albert Hoitingh
Albert Hoitingh
 
Enabling Sharing & Collaboration in OneDrive & SharePoint
Enabling Sharing & Collaboration in OneDrive & SharePointEnabling Sharing & Collaboration in OneDrive & SharePoint
Enabling Sharing & Collaboration in OneDrive & SharePoint
Drew Madelung
 
Native Support of Prometheus Monitoring in Apache Spark 3.0
Native Support of Prometheus Monitoring in Apache Spark 3.0Native Support of Prometheus Monitoring in Apache Spark 3.0
Native Support of Prometheus Monitoring in Apache Spark 3.0
Databricks
 
Extending your Information Architecture to Microsoft Teams
Extending your Information Architecture to Microsoft TeamsExtending your Information Architecture to Microsoft Teams
Extending your Information Architecture to Microsoft Teams
Christian Buckley
 
Sharepoint
SharepointSharepoint
Sharepoint
Naqash Ahmed
 
Migrating on premises and cloud contents to SharePoint Online at no cost with...
Migrating on premises and cloud contents to SharePoint Online at no cost with...Migrating on premises and cloud contents to SharePoint Online at no cost with...
Migrating on premises and cloud contents to SharePoint Online at no cost with...
Juan Carlos Gonzalez
 
Creating a Visio web part with SharePoint SPFx
Creating a Visio web part with SharePoint SPFxCreating a Visio web part with SharePoint SPFx
Creating a Visio web part with SharePoint SPFx
David Parker
 
Introduction to Microsoft Enterprise Mobility + Security
Introduction to Microsoft Enterprise Mobility + SecurityIntroduction to Microsoft Enterprise Mobility + Security
Introduction to Microsoft Enterprise Mobility + Security
AntonioMaio2
 

What's hot (20)

Introduction to Microsoft SharePoint Online Capabilities, Security, Deploymen...
Introduction to Microsoft SharePoint Online Capabilities, Security, Deploymen...Introduction to Microsoft SharePoint Online Capabilities, Security, Deploymen...
Introduction to Microsoft SharePoint Online Capabilities, Security, Deploymen...
 
Breakdown of Microsoft Purview Solutions
Breakdown of Microsoft Purview SolutionsBreakdown of Microsoft Purview Solutions
Breakdown of Microsoft Purview Solutions
 
Overview of Microsoft Exchange Online
Overview of Microsoft Exchange OnlineOverview of Microsoft Exchange Online
Overview of Microsoft Exchange Online
 
Microsoft Information Protection.pptx
Microsoft Information Protection.pptxMicrosoft Information Protection.pptx
Microsoft Information Protection.pptx
 
Migrating 3000 users and 1100 applications from Lotus Notes to Office 365
Migrating 3000 users and 1100 applications from Lotus Notes to Office 365Migrating 3000 users and 1100 applications from Lotus Notes to Office 365
Migrating 3000 users and 1100 applications from Lotus Notes to Office 365
 
Microsoft Azure Security Overview
Microsoft Azure Security OverviewMicrosoft Azure Security Overview
Microsoft Azure Security Overview
 
OpenID Connect and Single Sign-On for Beginners
OpenID Connect and Single Sign-On for BeginnersOpenID Connect and Single Sign-On for Beginners
OpenID Connect and Single Sign-On for Beginners
 
Microsoft Purview Information Barriers and Communication Compliance and Micro...
Microsoft Purview Information Barriers and Communication Compliance and Micro...Microsoft Purview Information Barriers and Communication Compliance and Micro...
Microsoft Purview Information Barriers and Communication Compliance and Micro...
 
Securing Team, SharePoint, and OneDrive in Microsoft 365 - M365VM
Securing Team, SharePoint, and OneDrive in Microsoft 365 - M365VMSecuring Team, SharePoint, and OneDrive in Microsoft 365 - M365VM
Securing Team, SharePoint, and OneDrive in Microsoft 365 - M365VM
 
Secure your Access to Cloud Apps using Microsoft Defender for Cloud Apps
Secure your Access to Cloud Apps using Microsoft Defender for Cloud AppsSecure your Access to Cloud Apps using Microsoft Defender for Cloud Apps
Secure your Access to Cloud Apps using Microsoft Defender for Cloud Apps
 
SharePoint Online (365) vs SharePoint On-Premises
SharePoint Online (365) vs SharePoint On-PremisesSharePoint Online (365) vs SharePoint On-Premises
SharePoint Online (365) vs SharePoint On-Premises
 
Planning Your Migration to SharePoint Online #SPBiz60
Planning Your Migration to SharePoint Online #SPBiz60Planning Your Migration to SharePoint Online #SPBiz60
Planning Your Migration to SharePoint Online #SPBiz60
 
Microsoft Information Protection demystified Albert Hoitingh
Microsoft Information Protection demystified Albert HoitinghMicrosoft Information Protection demystified Albert Hoitingh
Microsoft Information Protection demystified Albert Hoitingh
 
Enabling Sharing & Collaboration in OneDrive & SharePoint
Enabling Sharing & Collaboration in OneDrive & SharePointEnabling Sharing & Collaboration in OneDrive & SharePoint
Enabling Sharing & Collaboration in OneDrive & SharePoint
 
Native Support of Prometheus Monitoring in Apache Spark 3.0
Native Support of Prometheus Monitoring in Apache Spark 3.0Native Support of Prometheus Monitoring in Apache Spark 3.0
Native Support of Prometheus Monitoring in Apache Spark 3.0
 
Extending your Information Architecture to Microsoft Teams
Extending your Information Architecture to Microsoft TeamsExtending your Information Architecture to Microsoft Teams
Extending your Information Architecture to Microsoft Teams
 
Sharepoint
SharepointSharepoint
Sharepoint
 
Migrating on premises and cloud contents to SharePoint Online at no cost with...
Migrating on premises and cloud contents to SharePoint Online at no cost with...Migrating on premises and cloud contents to SharePoint Online at no cost with...
Migrating on premises and cloud contents to SharePoint Online at no cost with...
 
Creating a Visio web part with SharePoint SPFx
Creating a Visio web part with SharePoint SPFxCreating a Visio web part with SharePoint SPFx
Creating a Visio web part with SharePoint SPFx
 
Introduction to Microsoft Enterprise Mobility + Security
Introduction to Microsoft Enterprise Mobility + SecurityIntroduction to Microsoft Enterprise Mobility + Security
Introduction to Microsoft Enterprise Mobility + Security
 

Similar to From Event Receivers to SharePoint Webhooks

From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
André Vala
 
From Event Receivers to SharePoint Webhooks
From Event Receivers to SharePoint WebhooksFrom Event Receivers to SharePoint Webhooks
From Event Receivers to SharePoint Webhooks
André Vala
 
PDC Highlights
PDC HighlightsPDC Highlights
PDC Highlights
MS Innovation Days
 
Apps 101 - Moving to the SharePoint 2013 App Model - Presented 7/27/13 at Sha...
Apps 101 - Moving to the SharePoint 2013 App Model - Presented 7/27/13 at Sha...Apps 101 - Moving to the SharePoint 2013 App Model - Presented 7/27/13 at Sha...
Apps 101 - Moving to the SharePoint 2013 App Model - Presented 7/27/13 at Sha...
BlueMetalInc
 
Suguk activity feed
Suguk activity feedSuguk activity feed
Suguk activity feedWes Hackett
 
Google Wave API: Now and Beyond
Google Wave API: Now and BeyondGoogle Wave API: Now and Beyond
Google Wave API: Now and Beyond
Marakana Inc.
 
HTML5 Server Sent Events/JSF JAX 2011 Conference
HTML5 Server Sent Events/JSF  JAX 2011 ConferenceHTML5 Server Sent Events/JSF  JAX 2011 Conference
HTML5 Server Sent Events/JSF JAX 2011 ConferenceRoger Kitain
 
MS flow.docx
MS flow.docxMS flow.docx
MS flow.docx
Sharepoint Designs
 
Building workflow solution with Microsoft Azure and Cloud | Integration Monday
Building workflow solution with Microsoft Azure and Cloud | Integration MondayBuilding workflow solution with Microsoft Azure and Cloud | Integration Monday
Building workflow solution with Microsoft Azure and Cloud | Integration Monday
BizTalk360
 
Microsoft flow best practices SharePoint Saturday Bremen 2019 (Germany)
Microsoft flow best practices SharePoint Saturday Bremen 2019 (Germany)Microsoft flow best practices SharePoint Saturday Bremen 2019 (Germany)
Microsoft flow best practices SharePoint Saturday Bremen 2019 (Germany)
serge luca
 
ESPC18 Copenhagen session : Energize your application developments with micro...
ESPC18 Copenhagen session : Energize your application developments with micro...ESPC18 Copenhagen session : Energize your application developments with micro...
ESPC18 Copenhagen session : Energize your application developments with micro...
serge luca
 
Ondemand scaling-aws
Ondemand scaling-awsOndemand scaling-aws
Ondemand scaling-aws
Iegor Fadieiev
 
Azure Durable Functions (2018-06-13)
Azure Durable Functions (2018-06-13)Azure Durable Functions (2018-06-13)
Azure Durable Functions (2018-06-13)
Paco de la Cruz
 
Workflow Management with Espresso Workflow
Workflow Management with Espresso WorkflowWorkflow Management with Espresso Workflow
Workflow Management with Espresso Workflow
Rolf Kremer
 
Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014
Lou Sacco
 
Microsoft Graph API with OutSystems Event Subscriptions
Microsoft Graph API with OutSystems Event SubscriptionsMicrosoft Graph API with OutSystems Event Subscriptions
Microsoft Graph API with OutSystems Event Subscriptions
Stefan Weber
 
SoCalCodeCamp SharePoint Server 2010 a Developer Platform
SoCalCodeCamp SharePoint Server 2010 a Developer PlatformSoCalCodeCamp SharePoint Server 2010 a Developer Platform
SoCalCodeCamp SharePoint Server 2010 a Developer Platform
Ivan Sanders
 
Windows Phone 7 Unleashed Session 2
Windows Phone 7 Unleashed Session 2Windows Phone 7 Unleashed Session 2
Windows Phone 7 Unleashed Session 2
Wes Yanaga
 
Developer application lifecycle process and tools - v.5
Developer application lifecycle process and tools - v.5Developer application lifecycle process and tools - v.5
Developer application lifecycle process and tools - v.5
Ivan Sanders
 

Similar to From Event Receivers to SharePoint Webhooks (20)

From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
From Event Receivers to SharePoint Webhooks (SPS Lisbon 2017)
 
From Event Receivers to SharePoint Webhooks
From Event Receivers to SharePoint WebhooksFrom Event Receivers to SharePoint Webhooks
From Event Receivers to SharePoint Webhooks
 
PDC Highlights
PDC HighlightsPDC Highlights
PDC Highlights
 
Apps 101 - Moving to the SharePoint 2013 App Model - Presented 7/27/13 at Sha...
Apps 101 - Moving to the SharePoint 2013 App Model - Presented 7/27/13 at Sha...Apps 101 - Moving to the SharePoint 2013 App Model - Presented 7/27/13 at Sha...
Apps 101 - Moving to the SharePoint 2013 App Model - Presented 7/27/13 at Sha...
 
Suguk activity feed
Suguk activity feedSuguk activity feed
Suguk activity feed
 
Google Wave API: Now and Beyond
Google Wave API: Now and BeyondGoogle Wave API: Now and Beyond
Google Wave API: Now and Beyond
 
HTML5 Server Sent Events/JSF JAX 2011 Conference
HTML5 Server Sent Events/JSF  JAX 2011 ConferenceHTML5 Server Sent Events/JSF  JAX 2011 Conference
HTML5 Server Sent Events/JSF JAX 2011 Conference
 
Sharepoint Online
Sharepoint OnlineSharepoint Online
Sharepoint Online
 
MS flow.docx
MS flow.docxMS flow.docx
MS flow.docx
 
Building workflow solution with Microsoft Azure and Cloud | Integration Monday
Building workflow solution with Microsoft Azure and Cloud | Integration MondayBuilding workflow solution with Microsoft Azure and Cloud | Integration Monday
Building workflow solution with Microsoft Azure and Cloud | Integration Monday
 
Microsoft flow best practices SharePoint Saturday Bremen 2019 (Germany)
Microsoft flow best practices SharePoint Saturday Bremen 2019 (Germany)Microsoft flow best practices SharePoint Saturday Bremen 2019 (Germany)
Microsoft flow best practices SharePoint Saturday Bremen 2019 (Germany)
 
ESPC18 Copenhagen session : Energize your application developments with micro...
ESPC18 Copenhagen session : Energize your application developments with micro...ESPC18 Copenhagen session : Energize your application developments with micro...
ESPC18 Copenhagen session : Energize your application developments with micro...
 
Ondemand scaling-aws
Ondemand scaling-awsOndemand scaling-aws
Ondemand scaling-aws
 
Azure Durable Functions (2018-06-13)
Azure Durable Functions (2018-06-13)Azure Durable Functions (2018-06-13)
Azure Durable Functions (2018-06-13)
 
Workflow Management with Espresso Workflow
Workflow Management with Espresso WorkflowWorkflow Management with Espresso Workflow
Workflow Management with Espresso Workflow
 
Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014
 
Microsoft Graph API with OutSystems Event Subscriptions
Microsoft Graph API with OutSystems Event SubscriptionsMicrosoft Graph API with OutSystems Event Subscriptions
Microsoft Graph API with OutSystems Event Subscriptions
 
SoCalCodeCamp SharePoint Server 2010 a Developer Platform
SoCalCodeCamp SharePoint Server 2010 a Developer PlatformSoCalCodeCamp SharePoint Server 2010 a Developer Platform
SoCalCodeCamp SharePoint Server 2010 a Developer Platform
 
Windows Phone 7 Unleashed Session 2
Windows Phone 7 Unleashed Session 2Windows Phone 7 Unleashed Session 2
Windows Phone 7 Unleashed Session 2
 
Developer application lifecycle process and tools - v.5
Developer application lifecycle process and tools - v.5Developer application lifecycle process and tools - v.5
Developer application lifecycle process and tools - v.5
 

More from André Vala

RGPD - Testemunho do Mundo Real
RGPD - Testemunho do Mundo RealRGPD - Testemunho do Mundo Real
RGPD - Testemunho do Mundo Real
André Vala
 
Office Dev Day 2018 - Extending Microsoft Teams
Office Dev Day 2018 - Extending Microsoft TeamsOffice Dev Day 2018 - Extending Microsoft Teams
Office Dev Day 2018 - Extending Microsoft Teams
André Vala
 
Planning the Death Star with Microsoft Planner
Planning the Death Star with Microsoft PlannerPlanning the Death Star with Microsoft Planner
Planning the Death Star with Microsoft Planner
André Vala
 
Microsoft Planner Deep Dive
Microsoft Planner Deep DiveMicrosoft Planner Deep Dive
Microsoft Planner Deep Dive
André Vala
 
SharePoint - Presente e Futuro
SharePoint - Presente e FuturoSharePoint - Presente e Futuro
SharePoint - Presente e Futuro
André Vala
 
Office 365 Groups Deep Dive
Office 365 Groups Deep DiveOffice 365 Groups Deep Dive
Office 365 Groups Deep Dive
André Vala
 
Soluções com Office Graph
Soluções com Office GraphSoluções com Office Graph
Soluções com Office Graph
André Vala
 
Host-Named Site Collections in SharePoint 2013
Host-Named Site Collections in SharePoint 2013Host-Named Site Collections in SharePoint 2013
Host-Named Site Collections in SharePoint 2013
André Vala
 
User License Enforcement em SharePoint 2013
User License Enforcement em SharePoint 2013User License Enforcement em SharePoint 2013
User License Enforcement em SharePoint 2013
André Vala
 
How To Use Host-Named Site Collections
How To Use Host-Named Site CollectionsHow To Use Host-Named Site Collections
How To Use Host-Named Site Collections
André Vala
 
Novidades na pesquisa no SharePoint 2013
Novidades na pesquisa no SharePoint 2013Novidades na pesquisa no SharePoint 2013
Novidades na pesquisa no SharePoint 2013
André Vala
 
Building Public Web Sites in SharePoint 2010
Building Public Web Sites in SharePoint 2010 Building Public Web Sites in SharePoint 2010
Building Public Web Sites in SharePoint 2010
André Vala
 
SharePoint + Azure = Better Together
SharePoint + Azure = Better TogetherSharePoint + Azure = Better Together
SharePoint + Azure = Better Together
André Vala
 
Federated Authentication in SharePoint 2010
Federated Authentication in SharePoint 2010Federated Authentication in SharePoint 2010
Federated Authentication in SharePoint 2010
André Vala
 
Using BCS to integrate Azure Services with SharePoint 2010
Using BCS to integrate Azure Services with SharePoint 2010Using BCS to integrate Azure Services with SharePoint 2010
Using BCS to integrate Azure Services with SharePoint 2010
André Vala
 
LINQ to SharePoint
LINQ to SharePointLINQ to SharePoint
LINQ to SharePoint
André Vala
 
Solução de Negócio baseadas em Office 2010 e SharePoint 2010
Solução de Negócio baseadas em Office 2010 e SharePoint 2010Solução de Negócio baseadas em Office 2010 e SharePoint 2010
Solução de Negócio baseadas em Office 2010 e SharePoint 2010
André Vala
 
SharePoint Deployment
SharePoint DeploymentSharePoint Deployment
SharePoint Deployment
André Vala
 
Microsoft Planner Deep Dive
Microsoft Planner Deep DiveMicrosoft Planner Deep Dive
Microsoft Planner Deep Dive
André Vala
 
Office 365 Groups Deep Dive
Office 365 Groups Deep DiveOffice 365 Groups Deep Dive
Office 365 Groups Deep Dive
André Vala
 

More from André Vala (20)

RGPD - Testemunho do Mundo Real
RGPD - Testemunho do Mundo RealRGPD - Testemunho do Mundo Real
RGPD - Testemunho do Mundo Real
 
Office Dev Day 2018 - Extending Microsoft Teams
Office Dev Day 2018 - Extending Microsoft TeamsOffice Dev Day 2018 - Extending Microsoft Teams
Office Dev Day 2018 - Extending Microsoft Teams
 
Planning the Death Star with Microsoft Planner
Planning the Death Star with Microsoft PlannerPlanning the Death Star with Microsoft Planner
Planning the Death Star with Microsoft Planner
 
Microsoft Planner Deep Dive
Microsoft Planner Deep DiveMicrosoft Planner Deep Dive
Microsoft Planner Deep Dive
 
SharePoint - Presente e Futuro
SharePoint - Presente e FuturoSharePoint - Presente e Futuro
SharePoint - Presente e Futuro
 
Office 365 Groups Deep Dive
Office 365 Groups Deep DiveOffice 365 Groups Deep Dive
Office 365 Groups Deep Dive
 
Soluções com Office Graph
Soluções com Office GraphSoluções com Office Graph
Soluções com Office Graph
 
Host-Named Site Collections in SharePoint 2013
Host-Named Site Collections in SharePoint 2013Host-Named Site Collections in SharePoint 2013
Host-Named Site Collections in SharePoint 2013
 
User License Enforcement em SharePoint 2013
User License Enforcement em SharePoint 2013User License Enforcement em SharePoint 2013
User License Enforcement em SharePoint 2013
 
How To Use Host-Named Site Collections
How To Use Host-Named Site CollectionsHow To Use Host-Named Site Collections
How To Use Host-Named Site Collections
 
Novidades na pesquisa no SharePoint 2013
Novidades na pesquisa no SharePoint 2013Novidades na pesquisa no SharePoint 2013
Novidades na pesquisa no SharePoint 2013
 
Building Public Web Sites in SharePoint 2010
Building Public Web Sites in SharePoint 2010 Building Public Web Sites in SharePoint 2010
Building Public Web Sites in SharePoint 2010
 
SharePoint + Azure = Better Together
SharePoint + Azure = Better TogetherSharePoint + Azure = Better Together
SharePoint + Azure = Better Together
 
Federated Authentication in SharePoint 2010
Federated Authentication in SharePoint 2010Federated Authentication in SharePoint 2010
Federated Authentication in SharePoint 2010
 
Using BCS to integrate Azure Services with SharePoint 2010
Using BCS to integrate Azure Services with SharePoint 2010Using BCS to integrate Azure Services with SharePoint 2010
Using BCS to integrate Azure Services with SharePoint 2010
 
LINQ to SharePoint
LINQ to SharePointLINQ to SharePoint
LINQ to SharePoint
 
Solução de Negócio baseadas em Office 2010 e SharePoint 2010
Solução de Negócio baseadas em Office 2010 e SharePoint 2010Solução de Negócio baseadas em Office 2010 e SharePoint 2010
Solução de Negócio baseadas em Office 2010 e SharePoint 2010
 
SharePoint Deployment
SharePoint DeploymentSharePoint Deployment
SharePoint Deployment
 
Microsoft Planner Deep Dive
Microsoft Planner Deep DiveMicrosoft Planner Deep Dive
Microsoft Planner Deep Dive
 
Office 365 Groups Deep Dive
Office 365 Groups Deep DiveOffice 365 Groups Deep Dive
Office 365 Groups Deep Dive
 

Recently uploaded

Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Yara Milbes
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 

Recently uploaded (20)

Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 

From Event Receivers to SharePoint Webhooks

  • 1. From Event Receivers to SharePoint Webhooks André Vala
  • 2.
  • 3. IT Deputy Director @ Pestana Hotel Group Office Servers and Services MVP SharePoint for 11+ years Speaker & author https://andrevala.com /in/andrevala @atomicvee andre.vala@gmail.com
  • 4. Agenda Event Receivers Conclusions 3 SLIDES LEVEL: 100 ALL 7 SLIDES LEVEL: 200 DEV 15 SLIDES + 1 DEMO LEVEL: 300 DEV 15 SLIDES + 1 DEMO LEVEL: 300 DEV 7 SLIDES LEVEL: 100 ALL Remote Event Receivers SharePoint Webhooks Event Handling in SharePoint
  • 5. 1
  • 6. Respond to user actions and modifications to content Add validation logic for columns on list items Cleanup and format content as it is entered by users Calculate and store aggregated values Initialize a host web with new lists during add-in installation Why Handle Events?
  • 7. Event Handling in SharePoint 2003 2007 2010 2013 2016 Server-Side Event Receivers Remote Event Receivers SharePoint Webhooks
  • 8. 2
  • 9. Server-side event handling Implemented using an event receiver class Registration requires referencing of the event receiver class Event receivers are deployed by SharePoint solution in a .NET assembly Loaded into SharePoint worker process Overview
  • 10. Executed before data is committed to the Content DB Opportunity for pre-processing like validations Opportunity to cancel the event Run in the same process and thread that triggered the event Block the execution of the current thread UI will be held up Avoid complex time-consuming processing logic Synchronous Events (-ing)
  • 11. Executed after data is committed to the Content DB Cannot be cancelled Opportunity for post-processing like notifications Run on a background thread and do not block the UI This behaviour can be changed by updating the synchronization property of the the event receiver to synchronous Asynchronous Events (-ed)
  • 12. Supported Events Site/Web Events Site Delete   Web Delete   Web Move   Web Add (2010)  Web Provision (2010)    Feature Events Feature Activate  Feature Deactivate  Feature Install  Feature Uninstall  Feature Upgrade  Workflow Events Workflow Start (2010)   Workflow Postpone (2010)  Workflow Complete (2010)  Entity Instance Events Entity Instance Add (2013)  Entity Instance Delete (2013)  Entity Instance Update (2013)  Add-In Lifecycle Events Add-In Install (2013)  Add-In Upgrade (2013)  Add-In Uninstall (2013)  List Events List Add (2010)   List Delete (2010)   Email Reception  List Schema Events Field Add   Field Delete   Field Update   List Item Events Item Add   Item Delete   Item Update   Item Attachment Add   Item Attachment Delete   Item Check In   Item Check Out   Item Uncheck Out   Item File Move   Item File Convert  Item Version Delete (2013)   Security Events (2013) Group Add   Group Update   Group Delete   Group User Add   Group User Delete   Role Definition Add   Role Definition Delete   Role Definition Update   Role Assignment Add   Role Assignment Delete   Role Assignment Update   Break Inheritance   Reset Inheritance  
  • 13. Declaratively for List and Content Type binding Using the object model for all bindings Registering Event Receivers SPWeb new SPSite "http://localhost" SPEventReceiverDefinition "Receiver.Class1" "Receiver, Version=1.0.0.0, Culture=neutral, PublicKeyToken =10b23036c9b36d6d" SPEventReceiverType
  • 14. Inherit from one of the base classes Override the corresponding event methods Event Receiver Implementation
  • 15. 3
  • 16. Event handler code runs in remote web (not SharePoint) SharePoint calls web service in remote web to trigger event Must be accessible by anonymous users Supported remote events are a subset of server-side events Remote “before” events implemented as two-way events Remote “after” events implemented as one-way events Overview
  • 17. Modeled as two-way events Execution flow goes to remote web and then back to SharePoint Client is blocked while event processing occurs in remote web Sample execution flow for two-way event 1. Client attempts action which triggers an event (e.g. update item) 2. SharePoint host calls to web service in remote web 3. SharePoint host blocks until call returns from remote web 4. SharePoint host commits action and returns to Client Remote “Before” Events Two Way Event (aka before event) Client SharePoint Host Remote Web 1 2 34
  • 18. Modeled as one-way events Execution flow goes to remote web but does not return Unlike “before” events, after events do not block client response Sample execution flow for one-way event 1. Client attempts action which triggers an event (e.g. update item) 2. SharePoint host commits action and returns to Client 3. SharePoint host executes one-way WCF call on remote web Remote “After” Events One Way Event (aka after event) Client SharePoint Host Remote Web 1 3 2
  • 19. Supported Events Site/Web Events Site Delete   Web Delete   Web Move   Web Add  Web Provision    Feature Events Feature Activate Feature Deactivate Feature Install Feature Uninstall Feature Upgrade Workflow Events Workflow Start (2010) Workflow Postpone (2010) Workflow Complete (2010) Entity Instance Events Entity Instance Add   Entity Instance Delete   Entity Instance Update   Add-In Lifecycle Events Add-In Install  Add-In Upgrade  Add-In Uninstall  List Events List Add   List Delete   Email Reception List Schema Events Field Add   Field Delete   Field Update   List Item Events Item Add   Item Delete   Item Update   Item Attachment Add   Item Attachment Delete   Item Check In   Item Check Out   Item Uncheck Out   Item File Move   Item File Convert  Item Version Delete   Security Events Group Add   Group Update   Group Delete   Group User Add   Group User Delete   Role Definition Add   Role Definition Delete   Role Definition Update   Role Assignment Add   Role Assignment Delete   Role Assignment Update   Break Inheritance   Reset Inheritance  
  • 20. Event receivers must be registered with SharePoint host Registration can be declarative with XML for events occurring in app web Registration for events occurring in host web requires writing procedural code Registering Remote Event Receivers
  • 21. Remote event receiver implemented with .svc file Event receiver code written as C# code code-behind .svc file Event receiver is a class that implements IRemoteEventService ProcessEvent method executes when two-way event is triggered ProcessOneWayEvent method executes when one-way event is triggered The Remote Event Receiver Entry Point
  • 22. Passed as parameter Provides you with contextual information about the current event Makes it possible to determine event type and event target object Makes it possible to read user input to perform validation SPRemoteEventProperties
  • 23. ProcessEvent must return SPRemoteEventResult object Makes it possible to cancel user action when user input is invalid Makes it possible to update user input when processing a “before” event SPRemoteEventResult
  • 26. SharePoint add-in model support add-in events Add-in events for installation, upgrade and uninstall Added to add-in project using property sheet Implemented as a remote event receiver App Installed event App Installed event must complete within 30 seconds SharePoint will call the receiver 3 times before failing Add-In Lifecycle Events
  • 27. Declaratively registered in AppManifest.xml Add-In Lifecycle Event Registration
  • 28. Debugging in Office 365 Addresses with http://localhost will not work You must use a Azure Relay to expose your service Visual Studio has native support for debugging via Azure Relay (previously Azure Services Bus) Debugging
  • 29.
  • 31. A way to be notified of a done change Push model instead of Pull model Universal model used by many services (WordPress, GitHub, MailChimp, ...) First made available in OneDrive and Outlook Now available in SharePoint Online What are WebHooks?
  • 32. Subscribe to a Webhook POST /_api/web/lists('list-id')/subscriptions Application Content-Type: application/json { "resource": "https://contoso.sharepoint.com/_api/web/lists({id})", "notificationUrl": "https://{your host}/your/webhook/service", "expirationDateTime": "2017-06-18T16:17:57+00:00" } SharePoint Service
  • 33. Subscribe to a Webhook Application YourWebHook notification serviceendpoint POST https://{your host}/your/webhook/service ?validationToken={randomString} SharePoint Service
  • 34. Subscribe to a Webhook Application YourWebHook notification serviceendpoint Content-Type: text/plain {randomString} HTTP/1.1 200 OK SharePoint Service
  • 35. Subscribe to a Webhook SharePoint Service Application YourWebHook notification serviceendpoint Content-Type: application/json { "id": "a8e6d5e6-9f7f-497a-b97f-8ffe8f559dc7", "expirationDateTime": "2017-06-18T16:17:57Z", "notificationUrl": "https://{your host}/your/webhook/service", "resource": "{id}" } HTTP/1.1 201 Created Application
  • 38. Event Processing SharePoint Service YourWebHook notification serviceendpoint HTTP/1.1 200 OK POST https://{your host}/your/webhook/service Storage Queue WebJob
  • 39. GetChanges Pattern SharePoint Service YourWebHook notification serviceendpoint Application Storage Queue WebJob SQL Azure DB POST https://{your host}/your/webhook/service POST /_api/web/lists('list-id')/subscriptions Grab “CurrentChangeToken” from list Persist token per subscription Persist last used token per subscription Grab change token from DB
  • 40. Supported Events Site/Web Events Site Delete Web Delete Web Move Web Add Web Provision   Feature Events Feature Activate Feature Deactivate Feature Install Feature Uninstall Feature Upgrade Workflow Events Workflow Start (2010) Workflow Postpone (2010) Workflow Complete (2010) Entity Instance Events Entity Instance Add Entity Instance Delete Entity Instance Update Add-In Lifecycle Events Add-In Install Add-In Upgrade Add-In Uninstall List Events List Add List Delete Email Reception List Schema Events Field Add Field Delete Field Update List Item Events Item Add  Item Delete  Item Update  Item Attachment Add  Item Attachment Delete  Item Check In  Item Check Out  Item Uncheck Out  Item File Move  Item File Convert  Item Version Delete  Security Events Group Add Group Update Group Delete Group User Add Group User Delete Role Definition Add Role Definition Delete Role Definition Update Role Assignment Add Role Assignment Delete Role Assignment Update Break Inheritance Reset Inheritance
  • 41. WebHooks have a retry mechanism with an incremental back off strategy (5 times with 5 minute interval) WebHook calls are less taxing for your service endpoint The WebHook payload is very small Notifications are batched because processing depends on the CSOM GetChanges() call WebHooks are more secure as no event information is passed along during the notification WebHooks are easier to consume by “non-SharePoint” developers No WCF based endpoints, regular HTTP services are sufficient (e.g. Web API) WebHook Advantages
  • 42. WebHooks have an expiration date of maximum 6 months after creation You can “renew” a WebHook via a REST call PATCH /_api/web/lists('list-id')/subscriptions('subscriptionID') Two patterns are possible: Have a background job that regularly renews the needed subscriptions (recommended model) Renew at notification time (will drop WebHook if there’s no event within the defined expiration window) Subscription Renewal
  • 43. Connect remote debugger to your service and web job running in Azure Use ngrok (https://ngrok.com/) as alternative to create a tunnel to your service running on localhost Debugging
  • 46. SharePoint Version Availability Event Receivers Remote Event Receivers WebHooks SharePoint Server 2003  SharePoint Server 2007  SharePoint Server 2010  SharePoint Server 2013   SharePoint Server 2016   SharePoint Online  
  • 47. Supported Event Types Event Receivers Remote Event Receivers WebHooks Site/Web events   List events   List schema events   List item events    Workflow events  Security events   Add-in events   Feature events 
  • 48. Comparison Event Receivers Remote Event Receivers WebHooks Easy to develop    Event registration    Event type coverage    Security    Robustness    Compatibility    Future proof    Overall   
  • 49. Remote Event Receivers are here to stay Use Webhooks if Developing exclusively for SharePoint Online (currently) Just need to handle list item events (currently) Want to leverage automatic retries Want to leverage increased security Use Remote Event Receivers if Targeting SharePoint On-Prem (2013 or later) Need to handle events other than list item events Use Server-side Event Receivers if Targeting older versions of SharePoint (before 2013) Conclusions
  • 50.