SlideShare a Scribd company logo
1 of 60
Download to read offline
Citizen developer tools are not
just for citizen developers!
Antti K. Koskela | SharePoint Saturday Houston 4/28/2018
@koskila | https://www.koskila.net
Welcome to the 9th Annual SharePoint Saturday
Who’s speaking?
• Antti K. Koskela, Escalation Engineer for
Valo Solutions
• A developer since 2004.
• Bending and twisting SharePoint into
different shapes since MOSS.
• From Finland, lived in USA in 2017, moved
to Montreal in 2018.
• Background in Fintech + accounting
• Blogging at https://www.koskila.net and
https://www.valointranet.com !
@koskila | https://www.koskila.net
Session
• The session will include a quick overview and a few demos of
the capabilities of:
• Microsoft Flow
• SharePoint (both Modern and Classic!)
• Microsoft Azure Cognitive ServicesTextAnalytics API
• Azure Functions
• There’s going to be code 
@koskila | https://www.koskila.net
Session: Structure
• A quick look into the bigger picture! (1/4)
• What’s a citizen developer?
• What does all this mean for a developer?
• And: Are we all going to be unemployed in a couple of years?
• A word or two about the tools (1/4)
• Demos (1/2)
@koskila | https://www.koskila.net
Are you / Have you /Were you…
• A developer?
• Used Microsoft Flow before?
• At other Microsoft Flow sessions today?
• Created an Azure Function?
@koskila | https://www.koskila.net
Enter the Citizen Developers!
@koskila | https://www.koskila.net
What’s a “Citizen Developer”?
An end-user, who creates applications, usually without
programming anything themselves.
• “A citizen developer is a user who creates new business applications for
consumption by others using development and runtime environments sanctioned
by corporate IT -- can build departmental, enterprise and even public applications
using shared services, 4GL-style development platforms and cloud computing
services.”
• Gartner, 2009
@koskila | https://www.koskila.net
An Epic Showdown
Devs vs Citizen Devs – who’s going to persevere?
@koskila | https://www.koskila.net
The typical Developer…
• Expensive
• Slow, obsolete from inception?
• Creates more bugs than
features
• Constrained by IT/vendor
(vendor-lock!)
• Doesn’t understand business
@koskila | https://www.koskila.net
…vs the Citizen Developer!
• Understands business
• Agile, can react to changes in
business immediately
• No code – no bugs?
• Limited only by their
imagination (and tools…)
@koskila | https://www.koskila.net
Citizen Developers == a mortal threat?
• “End of Software Development”
• “Citizen Developers are appearing at the workplaces”
• Tietoviikko (The Knowledge Weekly), 2018
• “Software Developers Will Become Obsolete”
• Brain Food, 2016
• “Software engineers will be obsolete by 2060”
• DanAuerbach, 2015
• “A new technology [5th GL] in software development [gives us] the ability
to automate fully the development process from design to installation. - -
Programming is better done by a machine than a human.“
• In “Can fifth-generation software replace fallible programmers?”, Philips, R, Computerworld, v 18, n 29, 1D/27-30, 16 July 1984
• “4th Generation Languages make programmers largely unneeded”
• In “Applications Development Without Programmers”, James Martin, 1982
@koskila | https://www.koskila.net
Citizen Developers == a mortal threat?
• “Low-code tools won’t be putting developers out of a job; on the
contrary, they have the potential to help developers do better work.”
• -Mike Fitzmaurize,Vice President ofWorkflowTechnology for Nintex, 2017
• Citizen Developer tools are not useful just for Citizen Developers
• Tools like Flow make the lives of “actual” developers easier, too!
• And when the tools won’t do the trick anymore, a developer will get to (have
to) export them to “real” development tools and fix them.
@koskila | https://www.koskila.net
Citizen Developer tools for
“actual developers”
@koskila | https://www.koskila.net
OurToolpack
• Microsoft Flow
• Built on top of Logic Apps
• Simple integration tool for “any white collar”
• Azure Logic Apps
• More hardcore integration tool – a code view available
• Flows can be exported to be “full-fledged” logic apps
• Azure Functions & AzureApp Service WebJobs
• Code-first integration services (and much more!)
• Azure Functions are serverless – and easy to attach to Flow/Logic Apps!
• Webjobs are a more classic solution – console apps you can run in an App Service
• … and SharePoint 
@koskila | https://www.koskila.net
Great resource: https://docs.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow-
webjobs
Advantages of Flow
• Easy-to-use, fairly well-tested integrations available out-of-
the-box
• Run history is saved – you can always go back in time and
rerun something that didn’t work. Great for debugging and
iterating!
• Easy to extend
• Custom connectors
• HTTP requests to send and receive data from almost any source
@koskila | https://www.koskila.net
Azure Functions considerations
• Consumption plan is practically free for small usage
• 1 million executions and 400 000 GB-s time/transfer are FREE
• After that €0.000014/GB-s & €0.169 per million executions
• Maximum runtime of 10 minutes!
• Scalability’s great (even though it still loses to AWS Lambda Functions)
• Running a function in an App Service
• It isn’t serverless
• Max runtime unspecified – but long!
• Azure Function can be durable (stateful)
• https://docs.microsoft.com/en-us/azure/azure-functions/durable-functions-
overview
@koskila | https://www.koskila.net
Microsoft Cognitive Services -Text Analytics
API
• Detect sentiment, key phrases, and language from your text
• Powered by MicrosoftCognitive Services, machine learning and AI
algorithms in the cloud.
• “Key phrases” works well for term extraction
@koskila | https://www.koskila.net
Learn more: https://azure.microsoft.com/en-us/services/cognitive-services/text-analytics/
Also noteworthy: MachineTranslation in SharePoint, and BingTranslator (used in Facebook), are powered by Cognitive
Services
SharePoint: Modern
• Finally, SharePoint that looks (kind of) good out-of-the-box
• It’s even responsive 
• “Back to basics”
• Only does what SharePoint does well
• Excellent file storage (used byTeams & Groups), decent web interface, and a mobile app
• Uses other services for everything it’s bad at:
• Calendars from Exchange, tasks from Planner, IM and discussions viaTeams orYammer
• Webhooks + SPFx = decent extensibility
@koskila | https://www.koskila.net
SharePoint: Classic
• Classic SharePoint is not dead either!
• If something works with Modern, it’ll usually work with Classic, too
• Just requires some sweat, tears and clever workarounds
• Publishing infrastructure makes things a bit complicated:
• Bad/no support for fields like “Page Layout” or “Publishing Page Content”
@koskila | https://www.koskila.net
How does this relate to real-life
business problems?
Case studies and demos
@koskila | https://www.koskila.net
Our demos today
1. Fancy: Using Machine Learning to achieve otherwise
difficult goals
2. Practical: Content mirroring in classic SharePoint
3. Hacky: Playing around with push notifications and Flow-
as-an-API
@koskila | https://www.koskila.net
Case 1: “The Fancy”
Automatic MetadataTagging Using Azure Cognitive Services
@koskila | https://www.koskila.net
The Problem
• The amount of data is surging (~90% of the data in the world has
been created in the last 2 years)
• To ensure that data in organizations is useful, it needs to be found
easily
• A great “Enterprise-y” solution has been metadata tagging!
• However, users generally hate doing that manually
• Automatic solutions are either cumbersome to maintain, expensive to
develop, or both
• Many required metadata fields will cause users to migrate to shadow
IT solutions (like DropBox)
@koskila | https://www.koskila.net
The Solution
• Using ModernTeam Sites in SharePoint for document storage
enables collaboration
• SharePoint Search is decent, but thorough metadata tagging makes
it a lot more useful
• UsingAzure Cognitive Services we can fill the metadata fields
automatically – without any user interaction at all!
• Content will be found and users will be happy 
@koskila | https://www.koskila.net
Our StackToday (1/2)
• Modern SharePointTeam Sites
• Document Library used as a Data Source
• The only End-User Facing GUI
• Microsoft Flow
• Launches via webhook, calls an Azure Function, finally sends a notification
• Azure Function
• Contains the actual program logic
• Azure Cognitive Services
• TextAPI used to analyze text for Key Phrases
@koskila | https://www.koskila.net
Our StackToday (2/2)
• The whole stack is super cheap!
• SharePointOnline included in most licenses anyway, standalone
$5/user/mo (including 1Tb of OneDrive!)
• Cognitive Services free (for a small monthly quota – commercial
plans starting from ~$70/mo)
• Azure Functions billed per usage, my monthly cost for my demos has
been $0.02
• Flow free for personal, basic use
@koskila | https://www.koskila.net
How?
• A Flow attached to Document
Library will call theAzure
Function that’ll do the heavy
lifting
• A simple HTTP request to Azure
Function – could create a
custom connector, too!
• Finally, notifies admin of the
execution and the creator of the
file.
@koskila | https://www.koskila.net
How?
• An Azure Function will
run, extract text,
analyze it using Azure
Cognitive Services,
and then write the
info back to
SharePointOnline
@koskila | https://www.koskila.net
Case 1: Resources
• Case description: https://www.koskila.net/2018/03/20/resolving-
managed-metadata-madness-good-enough-to-win-a-hackathon/
• Video: https://youtu.be/G0kESOlBBjk?t=109
• Code: https://github.com/koskila/KeyphraseExtraction
@koskila | https://www.koskila.net
Case 2: “The Practical”
Mirroring content between Classic SharePoint sites
@koskila | https://www.koskila.net
The Problem
• A lot of organizations will live with Classic SharePoint for years – it’s
not dead, and we’ll need to enhance and maintain those sites.
• Often there’s a need to replicate or mirror content between sites, but
out-of-the-boxSharePoint offers little to help automate this..
• Most of the intranets seem to use publishing infrastructure – and
that complicates the solution even more!
@koskila | https://www.koskila.net
The Solution
• Classic SharePoint publishing sites
• Flow for orchestration and copying everything we can from site A to
site B
• Using an Azure function to “patch the holes”
• Page Layout is broken by default
• Publishing Page Content is not copied
@koskila | https://www.koskila.net
@koskila | https://www.koskila.net
Our StackToday
• Microsoft Flow
• For orchestration
• An Azure function
• Fixes the layout, copies the fields that can’t be copied with Flow
• 2 Classic SharePoint Site( Collection)s
• As the GUI & CMS
@koskila | https://www.koskila.net
Case 2: Issues
• Flow’s support for dynamic values needs to be better
• Still a lot of custom development required
• Configuration overhead (hooking the Flows to lists)
@koskila | https://www.koskila.net
Case 2: Resources
• Code: https://github.com/koskila/CitizenDeveloperToolsDemos
• Video: https://youtu.be/fe_NiTjmL58
@koskila | https://www.koskila.net
Case 3: “The Hacky”
The easy but geeky way to subscribe to any push notifications
@koskila | https://www.koskila.net
The Problem
• You want to subscribe to push notifications from a workload, that
doesn’t support them.
• You often have the option to just send a notification email – but
there’s so much email already!
• On top of that, notification emails look like SPAM -> you won’t necessarily
receive them!
• You just want to notify yourself, so using a Push Notification Hub
would be the overkill of the lifetime
@koskila | https://www.koskila.net
The Solution
• You can use Microsoft Flow to create a simple “API” to push
notifications to your phone
• By creating a HTTP POST RequestTrigger, you can define the schema of the
payload, and use the properties for a push notification
• It’s hacky – but a really simple way to just notify yourself, and get rid
of the email notifications 
@koskila | https://www.koskila.net
Our StackToday
• SharePoint
• Classic or Modern, doesn’t matter – anything that supports webhooks
• Chrome SP Editor
• A tool to add the webhook, you won’t need PowerShell!
• Azure function
• Receives the payload from the webhook, modifies the notification and sends
it to the ”API”
• Microsoft Flow
• Basically, a personal ”notification API”
@koskila | https://www.koskila.net
Case 3, Demo 1:
• Get theAzure FunctionURL
• Hook it into a SharePoint list
• Add an item to the list
• Check out the notification 
@koskila | https://www.koskila.net
Case 3: Resources
• Code: https://github.com/koskila/CitizenDeveloperToolsDemos
• Video: https://youtu.be/DaX6V_fFqy8
@koskila | https://www.koskila.net
Further Considerations
@koskila | https://www.koskila.net
Flow Custom Connectors
• Don’t want to configure multiple HTTP –requests with difficult
parameters after one another?You can automate some of that with
custom connectors!
• Custom Connectors can be shared between teams, so if you have a
great API you want to publish to your colleagues, it’s fairly easy to
share
• They also look fancy, and (arguably) make your flows more readable!
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Flow Custom Connectors
@koskila | https://www.koskila.net
Conclusions & Final words
@koskila | https://www.koskila.net
Conclusions
• Citizen Development is not a threat, it’s an ongoing process and an
opportunity for developers – embrace it!
• Flow = great for orchestration (with caution, even for complex,
customized workloads)
• Azure Functions = code-first integrations and so much more!
• Demos:
• 1: Filling ML-powered taxonomy automatically for documents uploaded to
SharePoint = not a problem!
• 2: Content mirroring, even between classic publishing sites = not a problem!
• 3: Getting push notifications (instead of emails) = easy
@koskila | https://www.koskila.net
Caveats
• The stack’s evolving – no telling how long this will be valid or required
• You could replace text extraction with Azure OCR – but last time I
tried, the custom library worked better.
• TextAnalysis is interesting – sometimes it works better, sometimes
it’s not that accurate!
• For shorter documents, it often doesn’t work well
@koskila | https://www.koskila.net
What’s next?
• Microsoft Flow is getting more Managed Metadata capabilities
• Maybe we won’t need the OfficeDev PnP / CSOM library to write to the
document library soon?
• (Currently, can’t add new items via PowerApps / Flow:
https://techcommunity.microsoft.com/t5/PowerApps-Flow/Set-values-for-Managed-
Metadata-aka-Taxonomy-columns-in/td-p/129888)
• Azure Functions can now be ran in user context
• With Flow this is quite finicky!Couldn’t get it to work here – passing cookies
between HTTP actions is forbidden.
• See: https://powerusers.microsoft.com/t5/General-Flow-Discussion/Passing-Cookies-
Between-HTTP-Actions/td-p/69761/page/2
• See if you can figure it out?: https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-
parts/guidance/connect-to-api-secured-with-aad
@koskila | https://www.koskila.net
Resources & Further reading
• Documentation:
• https://azure.microsoft.com/en-gb/campaigns/developer-guide/
• Slides available:
• Somewhere under https://www.slideshare.net/AnttiKoskela/
• Code available:
• https://github.com/koskila/KeyphraseExtraction
• https://github.com/koskila/CitizenDeveloperToolsDemos
• Descriptions of the cases:
• Case 1: https://www.koskila.net/2018/03/20/resolving-managed-metadata-
madness-good-enough-to-win-a-hackathon/
@koskila | https://www.koskila.net
Feedback, Ideas,
Questions?
Let’s connect!
• antti@valointranet.com
• @koskila
• www.koskila.net
• https://github.com/koskila
• https://www.linkedin.com/in/
koskila/
@koskila | https://www.koskila.net

More Related Content

What's hot

#SPSHouston Automating your digital workplace proivisioning with #Azure Durab...
#SPSHouston Automating your digital workplace proivisioning with #Azure Durab...#SPSHouston Automating your digital workplace proivisioning with #Azure Durab...
#SPSHouston Automating your digital workplace proivisioning with #Azure Durab...Vincent Biret
 
Delve and the Office Graph for IT- Pros & Admins
Delve and the Office Graph for IT- Pros & AdminsDelve and the Office Graph for IT- Pros & Admins
Delve and the Office Graph for IT- Pros & AdminsSPC Adriatics
 
Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...
Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...
Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...BIWUG
 
Chatbot Success Factor - Microsoft 365 Saturday Sydney
Chatbot Success Factor - Microsoft 365 Saturday SydneyChatbot Success Factor - Microsoft 365 Saturday Sydney
Chatbot Success Factor - Microsoft 365 Saturday SydneyAnupam Ranku
 
Let's do PowerBi - Together
Let's do PowerBi - TogetherLet's do PowerBi - Together
Let's do PowerBi - TogetherBIWUG
 
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...BIWUG
 
Building the Perfect Office 365 Tenant
Building the Perfect Office 365 TenantBuilding the Perfect Office 365 Tenant
Building the Perfect Office 365 TenantBIWUG
 
SPSNYC - Next Generation Portals
SPSNYC - Next Generation PortalsSPSNYC - Next Generation Portals
SPSNYC - Next Generation PortalsBob German
 
Couchbase Mobile Ideathon in Tokyo 2014.08.29: Developing with couchbase lite
Couchbase Mobile Ideathon in Tokyo 2014.08.29: Developing with couchbase lite Couchbase Mobile Ideathon in Tokyo 2014.08.29: Developing with couchbase lite
Couchbase Mobile Ideathon in Tokyo 2014.08.29: Developing with couchbase lite Keiko Ogura
 
UK Community day 20180427 Microsoft Flow hackathon
UK Community day 20180427 Microsoft Flow hackathonUK Community day 20180427 Microsoft Flow hackathon
UK Community day 20180427 Microsoft Flow hackathonPenny Coventry
 
Microsoft Flow Advanced : tips, pitfalls, problems to be known before staring...
Microsoft Flow Advanced : tips, pitfalls, problems to be known before staring...Microsoft Flow Advanced : tips, pitfalls, problems to be known before staring...
Microsoft Flow Advanced : tips, pitfalls, problems to be known before staring...serge luca
 
Office 365, Practical Adoption Strategies
Office 365, Practical Adoption StrategiesOffice 365, Practical Adoption Strategies
Office 365, Practical Adoption StrategiesBIWUG
 
Bringing Zest to SharePoint Sites Using Out-of-the-Box Technology
Bringing Zest to SharePoint Sites Using Out-of-the-Box TechnologyBringing Zest to SharePoint Sites Using Out-of-the-Box Technology
Bringing Zest to SharePoint Sites Using Out-of-the-Box Technologyjoelsef
 
Office apps in Office 365 - Napa the next big thing
Office apps in Office 365 - Napa the next big thingOffice apps in Office 365 - Napa the next big thing
Office apps in Office 365 - Napa the next big thingSPC Adriatics
 
PowerApps and Flow, one year later
PowerApps and Flow, one year laterPowerApps and Flow, one year later
PowerApps and Flow, one year laterBIWUG
 
CUST-12 What’s New in Share Extras
CUST-12 What’s New in Share ExtrasCUST-12 What’s New in Share Extras
CUST-12 What’s New in Share ExtrasAlfresco Software
 
CUST-13 What’s New in Share Extras
CUST-13 What’s New in Share ExtrasCUST-13 What’s New in Share Extras
CUST-13 What’s New in Share ExtrasAlfresco Software
 
Engage: A Break Up Story
Engage: A Break Up StoryEngage: A Break Up Story
Engage: A Break Up StoryBelsoft
 
Using Client Side Technologies to create a dynamic org chart in SharePoint 20...
Using Client Side Technologies to create a dynamic org chart in SharePoint 20...Using Client Side Technologies to create a dynamic org chart in SharePoint 20...
Using Client Side Technologies to create a dynamic org chart in SharePoint 20...Jennifer Kenderdine
 
Engage 2018 adm04 - The lazy admin wins
Engage 2018   adm04 - The lazy admin winsEngage 2018   adm04 - The lazy admin wins
Engage 2018 adm04 - The lazy admin winsMatteo Bisi
 

What's hot (20)

#SPSHouston Automating your digital workplace proivisioning with #Azure Durab...
#SPSHouston Automating your digital workplace proivisioning with #Azure Durab...#SPSHouston Automating your digital workplace proivisioning with #Azure Durab...
#SPSHouston Automating your digital workplace proivisioning with #Azure Durab...
 
Delve and the Office Graph for IT- Pros & Admins
Delve and the Office Graph for IT- Pros & AdminsDelve and the Office Graph for IT- Pros & Admins
Delve and the Office Graph for IT- Pros & Admins
 
Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...
Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...
Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...
 
Chatbot Success Factor - Microsoft 365 Saturday Sydney
Chatbot Success Factor - Microsoft 365 Saturday SydneyChatbot Success Factor - Microsoft 365 Saturday Sydney
Chatbot Success Factor - Microsoft 365 Saturday Sydney
 
Let's do PowerBi - Together
Let's do PowerBi - TogetherLet's do PowerBi - Together
Let's do PowerBi - Together
 
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
Microsoft Flow advanced: tips, pitfalls, problems and warnings to be known be...
 
Building the Perfect Office 365 Tenant
Building the Perfect Office 365 TenantBuilding the Perfect Office 365 Tenant
Building the Perfect Office 365 Tenant
 
SPSNYC - Next Generation Portals
SPSNYC - Next Generation PortalsSPSNYC - Next Generation Portals
SPSNYC - Next Generation Portals
 
Couchbase Mobile Ideathon in Tokyo 2014.08.29: Developing with couchbase lite
Couchbase Mobile Ideathon in Tokyo 2014.08.29: Developing with couchbase lite Couchbase Mobile Ideathon in Tokyo 2014.08.29: Developing with couchbase lite
Couchbase Mobile Ideathon in Tokyo 2014.08.29: Developing with couchbase lite
 
UK Community day 20180427 Microsoft Flow hackathon
UK Community day 20180427 Microsoft Flow hackathonUK Community day 20180427 Microsoft Flow hackathon
UK Community day 20180427 Microsoft Flow hackathon
 
Microsoft Flow Advanced : tips, pitfalls, problems to be known before staring...
Microsoft Flow Advanced : tips, pitfalls, problems to be known before staring...Microsoft Flow Advanced : tips, pitfalls, problems to be known before staring...
Microsoft Flow Advanced : tips, pitfalls, problems to be known before staring...
 
Office 365, Practical Adoption Strategies
Office 365, Practical Adoption StrategiesOffice 365, Practical Adoption Strategies
Office 365, Practical Adoption Strategies
 
Bringing Zest to SharePoint Sites Using Out-of-the-Box Technology
Bringing Zest to SharePoint Sites Using Out-of-the-Box TechnologyBringing Zest to SharePoint Sites Using Out-of-the-Box Technology
Bringing Zest to SharePoint Sites Using Out-of-the-Box Technology
 
Office apps in Office 365 - Napa the next big thing
Office apps in Office 365 - Napa the next big thingOffice apps in Office 365 - Napa the next big thing
Office apps in Office 365 - Napa the next big thing
 
PowerApps and Flow, one year later
PowerApps and Flow, one year laterPowerApps and Flow, one year later
PowerApps and Flow, one year later
 
CUST-12 What’s New in Share Extras
CUST-12 What’s New in Share ExtrasCUST-12 What’s New in Share Extras
CUST-12 What’s New in Share Extras
 
CUST-13 What’s New in Share Extras
CUST-13 What’s New in Share ExtrasCUST-13 What’s New in Share Extras
CUST-13 What’s New in Share Extras
 
Engage: A Break Up Story
Engage: A Break Up StoryEngage: A Break Up Story
Engage: A Break Up Story
 
Using Client Side Technologies to create a dynamic org chart in SharePoint 20...
Using Client Side Technologies to create a dynamic org chart in SharePoint 20...Using Client Side Technologies to create a dynamic org chart in SharePoint 20...
Using Client Side Technologies to create a dynamic org chart in SharePoint 20...
 
Engage 2018 adm04 - The lazy admin wins
Engage 2018   adm04 - The lazy admin winsEngage 2018   adm04 - The lazy admin wins
Engage 2018 adm04 - The lazy admin wins
 

Similar to Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by Antti Koskela

Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018...
Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018...Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018...
Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018...Antti Koskela
 
Integroi oikein BizTalkilla ja Azurella
Integroi oikein BizTalkilla ja AzurellaIntegroi oikein BizTalkilla ja Azurella
Integroi oikein BizTalkilla ja AzurellaBilot
 
Suguk Southampton CodePlex - March 2014
Suguk Southampton   CodePlex - March 2014Suguk Southampton   CodePlex - March 2014
Suguk Southampton CodePlex - March 2014Steven Andrews
 
SPSNH - Who Moved My SharePoint (to 2013)
SPSNH - Who Moved My SharePoint (to 2013)SPSNH - Who Moved My SharePoint (to 2013)
SPSNH - Who Moved My SharePoint (to 2013)Theresa Lubelski
 
Introduction to SharePoint and Project Siena at SEFORUM14
Introduction to SharePoint and Project Siena at SEFORUM14Introduction to SharePoint and Project Siena at SEFORUM14
Introduction to SharePoint and Project Siena at SEFORUM14Knut Relbe-Moe [MVP, MCT]
 
[Webinar] New Features in SharePoint 2016
[Webinar] New Features in SharePoint 2016 [Webinar] New Features in SharePoint 2016
[Webinar] New Features in SharePoint 2016 James Wright
 
[Webinar] New Features in SharePoint 2016
[Webinar] New Features in SharePoint 2016[Webinar] New Features in SharePoint 2016
[Webinar] New Features in SharePoint 2016James Wright
 
The world is not black and white – Impact of decisions over the lifetime of a...
The world is not black and white – Impact of decisions over the lifetime of a...The world is not black and white – Impact of decisions over the lifetime of a...
The world is not black and white – Impact of decisions over the lifetime of a...Eric Reiche
 
Full stack conference talk slides
Full stack conference talk slidesFull stack conference talk slides
Full stack conference talk slidesSameer Al-Sakran
 
HTF - Who Moved My SharePoint (to 2013)
HTF - Who Moved My SharePoint (to 2013)HTF - Who Moved My SharePoint (to 2013)
HTF - Who Moved My SharePoint (to 2013)Theresa Lubelski
 
Can you build a Intranet with Modern SharePoint
Can you build a Intranet with Modern SharePointCan you build a Intranet with Modern SharePoint
Can you build a Intranet with Modern SharePointKnut Relbe-Moe [MVP, MCT]
 
What's New in SharePoint 2016 for End Users Webinar with Intlock
What's New in SharePoint 2016 for End Users Webinar with IntlockWhat's New in SharePoint 2016 for End Users Webinar with Intlock
What's New in SharePoint 2016 for End Users Webinar with IntlockVlad Catrinescu
 
Building Business Applications in Office 365 SharePoint Online Using Logic Apps
Building Business Applications in Office 365 SharePoint Online Using Logic AppsBuilding Business Applications in Office 365 SharePoint Online Using Logic Apps
Building Business Applications in Office 365 SharePoint Online Using Logic AppsPrashant G Bhoyar (Microsoft MVP)
 
SharePoint and javascript – modern development
SharePoint and javascript – modern developmentSharePoint and javascript – modern development
SharePoint and javascript – modern developmentYannick Plenevaux
 
SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...
SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...
SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...aOS Community
 
Thoughts on building deployable and updatable share point solutions
Thoughts on building deployable and updatable share point solutionsThoughts on building deployable and updatable share point solutions
Thoughts on building deployable and updatable share point solutionsSerge van den Oever
 
Rapid development of help files and user documentation in Dr.Explain 5
Rapid development of help files and user documentation in Dr.Explain 5Rapid development of help files and user documentation in Dr.Explain 5
Rapid development of help files and user documentation in Dr.Explain 5Dennis Zhuravlev (a.k.a. Crane)
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewboxLino Telera
 

Similar to Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by Antti Koskela (20)

Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018...
Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018...Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018...
Citizen Developer Tools (session at SharePoint Saturday Twin Cities 4/14/2018...
 
Integroi oikein BizTalkilla ja Azurella
Integroi oikein BizTalkilla ja AzurellaIntegroi oikein BizTalkilla ja Azurella
Integroi oikein BizTalkilla ja Azurella
 
Suguk Southampton CodePlex - March 2014
Suguk Southampton   CodePlex - March 2014Suguk Southampton   CodePlex - March 2014
Suguk Southampton CodePlex - March 2014
 
LUIS and Bots
LUIS and BotsLUIS and Bots
LUIS and Bots
 
SPSNH - Who Moved My SharePoint (to 2013)
SPSNH - Who Moved My SharePoint (to 2013)SPSNH - Who Moved My SharePoint (to 2013)
SPSNH - Who Moved My SharePoint (to 2013)
 
Introduction to SharePoint and Project Siena at SEFORUM14
Introduction to SharePoint and Project Siena at SEFORUM14Introduction to SharePoint and Project Siena at SEFORUM14
Introduction to SharePoint and Project Siena at SEFORUM14
 
[Webinar] New Features in SharePoint 2016
[Webinar] New Features in SharePoint 2016 [Webinar] New Features in SharePoint 2016
[Webinar] New Features in SharePoint 2016
 
[Webinar] New Features in SharePoint 2016
[Webinar] New Features in SharePoint 2016[Webinar] New Features in SharePoint 2016
[Webinar] New Features in SharePoint 2016
 
Anatomy of a mail app
Anatomy of a mail appAnatomy of a mail app
Anatomy of a mail app
 
The world is not black and white – Impact of decisions over the lifetime of a...
The world is not black and white – Impact of decisions over the lifetime of a...The world is not black and white – Impact of decisions over the lifetime of a...
The world is not black and white – Impact of decisions over the lifetime of a...
 
Full stack conference talk slides
Full stack conference talk slidesFull stack conference talk slides
Full stack conference talk slides
 
HTF - Who Moved My SharePoint (to 2013)
HTF - Who Moved My SharePoint (to 2013)HTF - Who Moved My SharePoint (to 2013)
HTF - Who Moved My SharePoint (to 2013)
 
Can you build a Intranet with Modern SharePoint
Can you build a Intranet with Modern SharePointCan you build a Intranet with Modern SharePoint
Can you build a Intranet with Modern SharePoint
 
What's New in SharePoint 2016 for End Users Webinar with Intlock
What's New in SharePoint 2016 for End Users Webinar with IntlockWhat's New in SharePoint 2016 for End Users Webinar with Intlock
What's New in SharePoint 2016 for End Users Webinar with Intlock
 
Building Business Applications in Office 365 SharePoint Online Using Logic Apps
Building Business Applications in Office 365 SharePoint Online Using Logic AppsBuilding Business Applications in Office 365 SharePoint Online Using Logic Apps
Building Business Applications in Office 365 SharePoint Online Using Logic Apps
 
SharePoint and javascript – modern development
SharePoint and javascript – modern developmentSharePoint and javascript – modern development
SharePoint and javascript – modern development
 
SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...
SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...
SharePoint et Javascript - Modern development - Yannick Plenevaux - Christoph...
 
Thoughts on building deployable and updatable share point solutions
Thoughts on building deployable and updatable share point solutionsThoughts on building deployable and updatable share point solutions
Thoughts on building deployable and updatable share point solutions
 
Rapid development of help files and user documentation in Dr.Explain 5
Rapid development of help files and user documentation in Dr.Explain 5Rapid development of help files and user documentation in Dr.Explain 5
Rapid development of help files and user documentation in Dr.Explain 5
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewbox
 

Recently uploaded

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Recently uploaded (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 

Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by Antti Koskela

  • 1. Citizen developer tools are not just for citizen developers! Antti K. Koskela | SharePoint Saturday Houston 4/28/2018 @koskila | https://www.koskila.net
  • 2. Welcome to the 9th Annual SharePoint Saturday
  • 3. Who’s speaking? • Antti K. Koskela, Escalation Engineer for Valo Solutions • A developer since 2004. • Bending and twisting SharePoint into different shapes since MOSS. • From Finland, lived in USA in 2017, moved to Montreal in 2018. • Background in Fintech + accounting • Blogging at https://www.koskila.net and https://www.valointranet.com ! @koskila | https://www.koskila.net
  • 4. Session • The session will include a quick overview and a few demos of the capabilities of: • Microsoft Flow • SharePoint (both Modern and Classic!) • Microsoft Azure Cognitive ServicesTextAnalytics API • Azure Functions • There’s going to be code  @koskila | https://www.koskila.net
  • 5. Session: Structure • A quick look into the bigger picture! (1/4) • What’s a citizen developer? • What does all this mean for a developer? • And: Are we all going to be unemployed in a couple of years? • A word or two about the tools (1/4) • Demos (1/2) @koskila | https://www.koskila.net
  • 6. Are you / Have you /Were you… • A developer? • Used Microsoft Flow before? • At other Microsoft Flow sessions today? • Created an Azure Function? @koskila | https://www.koskila.net
  • 7. Enter the Citizen Developers! @koskila | https://www.koskila.net
  • 8. What’s a “Citizen Developer”? An end-user, who creates applications, usually without programming anything themselves. • “A citizen developer is a user who creates new business applications for consumption by others using development and runtime environments sanctioned by corporate IT -- can build departmental, enterprise and even public applications using shared services, 4GL-style development platforms and cloud computing services.” • Gartner, 2009 @koskila | https://www.koskila.net
  • 9. An Epic Showdown Devs vs Citizen Devs – who’s going to persevere? @koskila | https://www.koskila.net
  • 10. The typical Developer… • Expensive • Slow, obsolete from inception? • Creates more bugs than features • Constrained by IT/vendor (vendor-lock!) • Doesn’t understand business @koskila | https://www.koskila.net
  • 11. …vs the Citizen Developer! • Understands business • Agile, can react to changes in business immediately • No code – no bugs? • Limited only by their imagination (and tools…) @koskila | https://www.koskila.net
  • 12. Citizen Developers == a mortal threat? • “End of Software Development” • “Citizen Developers are appearing at the workplaces” • Tietoviikko (The Knowledge Weekly), 2018 • “Software Developers Will Become Obsolete” • Brain Food, 2016 • “Software engineers will be obsolete by 2060” • DanAuerbach, 2015 • “A new technology [5th GL] in software development [gives us] the ability to automate fully the development process from design to installation. - - Programming is better done by a machine than a human.“ • In “Can fifth-generation software replace fallible programmers?”, Philips, R, Computerworld, v 18, n 29, 1D/27-30, 16 July 1984 • “4th Generation Languages make programmers largely unneeded” • In “Applications Development Without Programmers”, James Martin, 1982 @koskila | https://www.koskila.net
  • 13. Citizen Developers == a mortal threat? • “Low-code tools won’t be putting developers out of a job; on the contrary, they have the potential to help developers do better work.” • -Mike Fitzmaurize,Vice President ofWorkflowTechnology for Nintex, 2017 • Citizen Developer tools are not useful just for Citizen Developers • Tools like Flow make the lives of “actual” developers easier, too! • And when the tools won’t do the trick anymore, a developer will get to (have to) export them to “real” development tools and fix them. @koskila | https://www.koskila.net
  • 14. Citizen Developer tools for “actual developers” @koskila | https://www.koskila.net
  • 15. OurToolpack • Microsoft Flow • Built on top of Logic Apps • Simple integration tool for “any white collar” • Azure Logic Apps • More hardcore integration tool – a code view available • Flows can be exported to be “full-fledged” logic apps • Azure Functions & AzureApp Service WebJobs • Code-first integration services (and much more!) • Azure Functions are serverless – and easy to attach to Flow/Logic Apps! • Webjobs are a more classic solution – console apps you can run in an App Service • … and SharePoint  @koskila | https://www.koskila.net Great resource: https://docs.microsoft.com/en-us/azure/azure-functions/functions-compare-logic-apps-ms-flow- webjobs
  • 16. Advantages of Flow • Easy-to-use, fairly well-tested integrations available out-of- the-box • Run history is saved – you can always go back in time and rerun something that didn’t work. Great for debugging and iterating! • Easy to extend • Custom connectors • HTTP requests to send and receive data from almost any source @koskila | https://www.koskila.net
  • 17. Azure Functions considerations • Consumption plan is practically free for small usage • 1 million executions and 400 000 GB-s time/transfer are FREE • After that €0.000014/GB-s & €0.169 per million executions • Maximum runtime of 10 minutes! • Scalability’s great (even though it still loses to AWS Lambda Functions) • Running a function in an App Service • It isn’t serverless • Max runtime unspecified – but long! • Azure Function can be durable (stateful) • https://docs.microsoft.com/en-us/azure/azure-functions/durable-functions- overview @koskila | https://www.koskila.net
  • 18. Microsoft Cognitive Services -Text Analytics API • Detect sentiment, key phrases, and language from your text • Powered by MicrosoftCognitive Services, machine learning and AI algorithms in the cloud. • “Key phrases” works well for term extraction @koskila | https://www.koskila.net Learn more: https://azure.microsoft.com/en-us/services/cognitive-services/text-analytics/ Also noteworthy: MachineTranslation in SharePoint, and BingTranslator (used in Facebook), are powered by Cognitive Services
  • 19. SharePoint: Modern • Finally, SharePoint that looks (kind of) good out-of-the-box • It’s even responsive  • “Back to basics” • Only does what SharePoint does well • Excellent file storage (used byTeams & Groups), decent web interface, and a mobile app • Uses other services for everything it’s bad at: • Calendars from Exchange, tasks from Planner, IM and discussions viaTeams orYammer • Webhooks + SPFx = decent extensibility @koskila | https://www.koskila.net
  • 20. SharePoint: Classic • Classic SharePoint is not dead either! • If something works with Modern, it’ll usually work with Classic, too • Just requires some sweat, tears and clever workarounds • Publishing infrastructure makes things a bit complicated: • Bad/no support for fields like “Page Layout” or “Publishing Page Content” @koskila | https://www.koskila.net
  • 21. How does this relate to real-life business problems? Case studies and demos @koskila | https://www.koskila.net
  • 22. Our demos today 1. Fancy: Using Machine Learning to achieve otherwise difficult goals 2. Practical: Content mirroring in classic SharePoint 3. Hacky: Playing around with push notifications and Flow- as-an-API @koskila | https://www.koskila.net
  • 23. Case 1: “The Fancy” Automatic MetadataTagging Using Azure Cognitive Services @koskila | https://www.koskila.net
  • 24. The Problem • The amount of data is surging (~90% of the data in the world has been created in the last 2 years) • To ensure that data in organizations is useful, it needs to be found easily • A great “Enterprise-y” solution has been metadata tagging! • However, users generally hate doing that manually • Automatic solutions are either cumbersome to maintain, expensive to develop, or both • Many required metadata fields will cause users to migrate to shadow IT solutions (like DropBox) @koskila | https://www.koskila.net
  • 25. The Solution • Using ModernTeam Sites in SharePoint for document storage enables collaboration • SharePoint Search is decent, but thorough metadata tagging makes it a lot more useful • UsingAzure Cognitive Services we can fill the metadata fields automatically – without any user interaction at all! • Content will be found and users will be happy  @koskila | https://www.koskila.net
  • 26. Our StackToday (1/2) • Modern SharePointTeam Sites • Document Library used as a Data Source • The only End-User Facing GUI • Microsoft Flow • Launches via webhook, calls an Azure Function, finally sends a notification • Azure Function • Contains the actual program logic • Azure Cognitive Services • TextAPI used to analyze text for Key Phrases @koskila | https://www.koskila.net
  • 27. Our StackToday (2/2) • The whole stack is super cheap! • SharePointOnline included in most licenses anyway, standalone $5/user/mo (including 1Tb of OneDrive!) • Cognitive Services free (for a small monthly quota – commercial plans starting from ~$70/mo) • Azure Functions billed per usage, my monthly cost for my demos has been $0.02 • Flow free for personal, basic use @koskila | https://www.koskila.net
  • 28. How? • A Flow attached to Document Library will call theAzure Function that’ll do the heavy lifting • A simple HTTP request to Azure Function – could create a custom connector, too! • Finally, notifies admin of the execution and the creator of the file. @koskila | https://www.koskila.net
  • 29. How? • An Azure Function will run, extract text, analyze it using Azure Cognitive Services, and then write the info back to SharePointOnline @koskila | https://www.koskila.net
  • 30. Case 1: Resources • Case description: https://www.koskila.net/2018/03/20/resolving- managed-metadata-madness-good-enough-to-win-a-hackathon/ • Video: https://youtu.be/G0kESOlBBjk?t=109 • Code: https://github.com/koskila/KeyphraseExtraction @koskila | https://www.koskila.net
  • 31. Case 2: “The Practical” Mirroring content between Classic SharePoint sites @koskila | https://www.koskila.net
  • 32. The Problem • A lot of organizations will live with Classic SharePoint for years – it’s not dead, and we’ll need to enhance and maintain those sites. • Often there’s a need to replicate or mirror content between sites, but out-of-the-boxSharePoint offers little to help automate this.. • Most of the intranets seem to use publishing infrastructure – and that complicates the solution even more! @koskila | https://www.koskila.net
  • 33. The Solution • Classic SharePoint publishing sites • Flow for orchestration and copying everything we can from site A to site B • Using an Azure function to “patch the holes” • Page Layout is broken by default • Publishing Page Content is not copied @koskila | https://www.koskila.net
  • 35. Our StackToday • Microsoft Flow • For orchestration • An Azure function • Fixes the layout, copies the fields that can’t be copied with Flow • 2 Classic SharePoint Site( Collection)s • As the GUI & CMS @koskila | https://www.koskila.net
  • 36. Case 2: Issues • Flow’s support for dynamic values needs to be better • Still a lot of custom development required • Configuration overhead (hooking the Flows to lists) @koskila | https://www.koskila.net
  • 37. Case 2: Resources • Code: https://github.com/koskila/CitizenDeveloperToolsDemos • Video: https://youtu.be/fe_NiTjmL58 @koskila | https://www.koskila.net
  • 38. Case 3: “The Hacky” The easy but geeky way to subscribe to any push notifications @koskila | https://www.koskila.net
  • 39. The Problem • You want to subscribe to push notifications from a workload, that doesn’t support them. • You often have the option to just send a notification email – but there’s so much email already! • On top of that, notification emails look like SPAM -> you won’t necessarily receive them! • You just want to notify yourself, so using a Push Notification Hub would be the overkill of the lifetime @koskila | https://www.koskila.net
  • 40. The Solution • You can use Microsoft Flow to create a simple “API” to push notifications to your phone • By creating a HTTP POST RequestTrigger, you can define the schema of the payload, and use the properties for a push notification • It’s hacky – but a really simple way to just notify yourself, and get rid of the email notifications  @koskila | https://www.koskila.net
  • 41. Our StackToday • SharePoint • Classic or Modern, doesn’t matter – anything that supports webhooks • Chrome SP Editor • A tool to add the webhook, you won’t need PowerShell! • Azure function • Receives the payload from the webhook, modifies the notification and sends it to the ”API” • Microsoft Flow • Basically, a personal ”notification API” @koskila | https://www.koskila.net
  • 42. Case 3, Demo 1: • Get theAzure FunctionURL • Hook it into a SharePoint list • Add an item to the list • Check out the notification  @koskila | https://www.koskila.net
  • 43. Case 3: Resources • Code: https://github.com/koskila/CitizenDeveloperToolsDemos • Video: https://youtu.be/DaX6V_fFqy8 @koskila | https://www.koskila.net
  • 44. Further Considerations @koskila | https://www.koskila.net
  • 45. Flow Custom Connectors • Don’t want to configure multiple HTTP –requests with difficult parameters after one another?You can automate some of that with custom connectors! • Custom Connectors can be shared between teams, so if you have a great API you want to publish to your colleagues, it’s fairly easy to share • They also look fancy, and (arguably) make your flows more readable! @koskila | https://www.koskila.net
  • 46. Flow Custom Connectors @koskila | https://www.koskila.net
  • 47. Flow Custom Connectors @koskila | https://www.koskila.net
  • 48. Flow Custom Connectors @koskila | https://www.koskila.net
  • 49. Flow Custom Connectors @koskila | https://www.koskila.net
  • 50. Flow Custom Connectors @koskila | https://www.koskila.net
  • 51. Flow Custom Connectors @koskila | https://www.koskila.net
  • 52. Flow Custom Connectors @koskila | https://www.koskila.net
  • 53. Flow Custom Connectors @koskila | https://www.koskila.net
  • 54. Flow Custom Connectors @koskila | https://www.koskila.net
  • 55. Conclusions & Final words @koskila | https://www.koskila.net
  • 56. Conclusions • Citizen Development is not a threat, it’s an ongoing process and an opportunity for developers – embrace it! • Flow = great for orchestration (with caution, even for complex, customized workloads) • Azure Functions = code-first integrations and so much more! • Demos: • 1: Filling ML-powered taxonomy automatically for documents uploaded to SharePoint = not a problem! • 2: Content mirroring, even between classic publishing sites = not a problem! • 3: Getting push notifications (instead of emails) = easy @koskila | https://www.koskila.net
  • 57. Caveats • The stack’s evolving – no telling how long this will be valid or required • You could replace text extraction with Azure OCR – but last time I tried, the custom library worked better. • TextAnalysis is interesting – sometimes it works better, sometimes it’s not that accurate! • For shorter documents, it often doesn’t work well @koskila | https://www.koskila.net
  • 58. What’s next? • Microsoft Flow is getting more Managed Metadata capabilities • Maybe we won’t need the OfficeDev PnP / CSOM library to write to the document library soon? • (Currently, can’t add new items via PowerApps / Flow: https://techcommunity.microsoft.com/t5/PowerApps-Flow/Set-values-for-Managed- Metadata-aka-Taxonomy-columns-in/td-p/129888) • Azure Functions can now be ran in user context • With Flow this is quite finicky!Couldn’t get it to work here – passing cookies between HTTP actions is forbidden. • See: https://powerusers.microsoft.com/t5/General-Flow-Discussion/Passing-Cookies- Between-HTTP-Actions/td-p/69761/page/2 • See if you can figure it out?: https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web- parts/guidance/connect-to-api-secured-with-aad @koskila | https://www.koskila.net
  • 59. Resources & Further reading • Documentation: • https://azure.microsoft.com/en-gb/campaigns/developer-guide/ • Slides available: • Somewhere under https://www.slideshare.net/AnttiKoskela/ • Code available: • https://github.com/koskila/KeyphraseExtraction • https://github.com/koskila/CitizenDeveloperToolsDemos • Descriptions of the cases: • Case 1: https://www.koskila.net/2018/03/20/resolving-managed-metadata- madness-good-enough-to-win-a-hackathon/ @koskila | https://www.koskila.net
  • 60. Feedback, Ideas, Questions? Let’s connect! • antti@valointranet.com • @koskila • www.koskila.net • https://github.com/koskila • https://www.linkedin.com/in/ koskila/ @koskila | https://www.koskila.net