SlideShare una empresa de Scribd logo
1 de 63
Citizen developer tools are not just for citizen developers!
Level: 200 ||Track: Developer (The rest of my slides will have less text, I promise!)
So, the citizen developers have all the cool tools, and those that actually code for a living are left
with legacy stuff? Not so fast!The same tools that Microsoft is targeting for citizen developers
make development easier, faster and cheaper for everyone!
This session combines tools such as Flow, Azure Cognitive Services and Azure Functions with
some actual simple development work to provide highly customized, Machine Learning
powered analysis workflow for the newly baked ModernTeam Sites in SharePoint Online.This
demo-heavy session will look at real business scenarios, and how we can solve them using
citizen developer tools and some code (Because we’re developers after all, right?)
After this session you'll know how to create rich and customized business automation processes
that use the latest tools offered to us by Microsoft.
@koskila | https://www.koskila.net
Citizen developer tools are not
just for citizen developers!
Antti K. Koskela | SPS Nashville 5/5/2018
@koskila | https://www.koskila.net
Who’s speaking?
• Antti K. Koskela, Escalation Engineer for
Valo Solutions
• A dev since 2004 (started with PHP)
• Bending and twisting SharePoint into
different shapes since MOSS.
• Background in Fintech + accounting
• From Finland, lived in USA in 2017, moved
to Montreal in 2018.
@koskila | https://www.koskila.net
Session: Structure
• 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 ServicesText Analytics 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 …
• A developer?
• … or a technical (non-developer) person?
• … or something else?
• Used Microsoft Flow before?
• Worked with Azure before?
• … or even 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…)
• While a developer still waits for
Visual Studio to start, a Citizen
Developer has already hacked
together an integration between 13
different systems using Flow.
@koskila | https://www.koskila.net
Citizen Developers == a mortal threat?
• “End of Software Development”
• “Citizen Developers are appearing at the workplaces”
• Tietoviikko (The KnowledgeWeekly), 2018
• “Software DevelopersWill BecomeObsolete”
• Brain Food, 2016
• “Software engineers will be obsolete by 2060”
• Dan Auerbach, 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 DevelopmentWithout Programmers”, James Martin, 1982
@koskila | https://www.koskila.net
Citizen Developers == a mortal threat?
• Death of programming and obsoleteness of programmers (by
automation, citizen developers, higher level languages, AI) has been
proposed at least from the 80s!
• Excel is the biggest software development environment (and the
most dangerous one) anyway.
@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 & Azure App 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 Microsoft Cognitive 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
• Using Azure 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
• 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
• Text API used to analyze text for Key Phrases
@koskila | https://www.koskila.net
How?
• A Flow attached to Document
Library will call the Azure
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
SharePoint Online
@koskila | https://www.koskila.net
Case 1: Considerations
• The whole stack is super cheap!
• SharePoint Online 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 (for storage)
• Flow free for personal, basic use
@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-box SharePoint 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:
1. Get the Azure Function URL
2. Hook it into a SharePoint list
3. Add an item to the list
4. 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 & Resources
@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.
• Text Analysis 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
THANKYOU SPONSORS!!!
SharePoint & Office 365 Users
Group
NashvilleSUG.com
Feedback, Ideas,
Questions? Let’s connect!
• antti@valointranet.com
• @koskila
• www.koskila.net
• https://github.com/koskila
• https://www.linkedin.com/in/koski
la/
@koskila | https://www.koskila.net

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

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
 
Asf icfoss-mentoring
Asf icfoss-mentoringAsf icfoss-mentoring
Asf icfoss-mentoring
 
Open source presentation to Cork County Council
Open source presentation to Cork County CouncilOpen source presentation to Cork County Council
Open source presentation to Cork County Council
 
MR + AI: Machine Learning for Language in HoloLens & VR Apps
MR + AI: Machine Learning for Language in HoloLens & VR AppsMR + AI: Machine Learning for Language in HoloLens & VR Apps
MR + AI: Machine Learning for Language in HoloLens & VR Apps
 
Why Do Mobile Projects Fail?
Why Do Mobile Projects Fail?Why Do Mobile Projects Fail?
Why Do Mobile Projects Fail?
 
Exploring a simpler, more portable, less overhead solution to deploy Elastics...
Exploring a simpler, more portable, less overhead solution to deploy Elastics...Exploring a simpler, more portable, less overhead solution to deploy Elastics...
Exploring a simpler, more portable, less overhead solution to deploy Elastics...
 
STC Design
STC DesignSTC Design
STC Design
 
Towards a common app platform #SPUGfi
Towards a common app platform #SPUGfiTowards a common app platform #SPUGfi
Towards a common app platform #SPUGfi
 
Internet (Intelligence) of Things (IOT) with Drupal
Internet (Intelligence) of Things (IOT) with DrupalInternet (Intelligence) of Things (IOT) with Drupal
Internet (Intelligence) of Things (IOT) with Drupal
 
How To Leverage Cloud Computing for Business & Operational Benefit - CAMP IT
How To Leverage Cloud Computing for Business & Operational Benefit - CAMP ITHow To Leverage Cloud Computing for Business & Operational Benefit - CAMP IT
How To Leverage Cloud Computing for Business & Operational Benefit - CAMP IT
 
Engage: A Break Up Story
Engage: A Break Up StoryEngage: A Break Up Story
Engage: A Break Up Story
 
SharePoint Saturday Belgium 2018 A 21st century lunch bell
SharePoint Saturday Belgium 2018 A 21st century lunch bellSharePoint Saturday Belgium 2018 A 21st century lunch bell
SharePoint Saturday Belgium 2018 A 21st century lunch bell
 
The Slippery Slope of Migrating to SharePoint Online or On-Premise
The Slippery Slope of Migrating to SharePoint Online or On-PremiseThe Slippery Slope of Migrating to SharePoint Online or On-Premise
The Slippery Slope of Migrating to SharePoint Online or On-Premise
 
From Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical DebtFrom Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical Debt
 
Touchpoint and Userinvite
Touchpoint and UserinviteTouchpoint and Userinvite
Touchpoint and Userinvite
 
History of Connections
History of Connections History of Connections
History of Connections
 
Made for Each Other: Microservices + PaaS
Made for Each Other: Microservices + PaaSMade for Each Other: Microservices + PaaS
Made for Each Other: Microservices + PaaS
 
Evolving to Cloud-Native - Nate Schutta (1/2)
Evolving to Cloud-Native - Nate Schutta (1/2)Evolving to Cloud-Native - Nate Schutta (1/2)
Evolving to Cloud-Native - Nate Schutta (1/2)
 
App dev and partner ecosystem for pink social connections 2017
App dev and partner ecosystem for pink   social connections 2017App dev and partner ecosystem for pink   social connections 2017
App dev and partner ecosystem for pink social connections 2017
 
IBM Connections vs. Office 365 – Episode III
IBM Connections vs. Office 365 – Episode IIIIBM Connections vs. Office 365 – Episode III
IBM Connections vs. Office 365 – Episode III
 

Similar a Citizen Developer Tools are not just for Citizen Developers (session at SharePoint Saturday Nashville 5/5/2018) by Antti K. Koskela

Introducción al Machine Learning Automático
Introducción al Machine Learning AutomáticoIntroducción al Machine Learning Automático
Introducción al Machine Learning Automático
Sri Ambati
 

Similar a Citizen Developer Tools are not just for Citizen Developers (session at SharePoint Saturday Nashville 5/5/2018) by Antti K. Koskela (20)

LUIS and Bots
LUIS and BotsLUIS and Bots
LUIS and Bots
 
Choosing the right Technologies for your next unicorn.
Choosing the right Technologies for your next unicorn.Choosing the right Technologies for your next unicorn.
Choosing the right Technologies for your next unicorn.
 
Flow: A living full-stack framework for the web
Flow: A living full-stack framework for the webFlow: A living full-stack framework for the web
Flow: A living full-stack framework for the web
 
Full stack conference talk slides
Full stack conference talk slidesFull stack conference talk slides
Full stack conference talk slides
 
Maintainable Machine Learning Products
Maintainable Machine Learning ProductsMaintainable Machine Learning Products
Maintainable Machine Learning Products
 
Introducción al Machine Learning Automático
Introducción al Machine Learning AutomáticoIntroducción al Machine Learning Automático
Introducción al Machine Learning Automático
 
Integroi oikein BizTalkilla ja Azurella
Integroi oikein BizTalkilla ja AzurellaIntegroi oikein BizTalkilla ja Azurella
Integroi oikein BizTalkilla ja Azurella
 
SPSNYC2019 - What is Common Data Model and how to use it?
SPSNYC2019 - What is Common Data Model and how to use it?SPSNYC2019 - What is Common Data Model and how to use it?
SPSNYC2019 - What is Common Data Model and how to use it?
 
QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewbox
 
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...
 
Service as-a-software
Service as-a-softwareService as-a-software
Service as-a-software
 
NET !!! A must have tool under your belt
NET !!! A must have tool under your beltNET !!! A must have tool under your belt
NET !!! A must have tool under your belt
 
Bahrain ch9 introduction to docker 5th birthday
Bahrain ch9 introduction to docker 5th birthday Bahrain ch9 introduction to docker 5th birthday
Bahrain ch9 introduction to docker 5th birthday
 
The Case for Low-code Development
The Case for Low-code DevelopmentThe Case for Low-code Development
The Case for Low-code Development
 
Continuum Analytics and Python
Continuum Analytics and PythonContinuum Analytics and Python
Continuum Analytics and Python
 
Using the Crowd to Understand and Adapt User Interfaces
Using the Crowd to Understand and Adapt User InterfacesUsing the Crowd to Understand and Adapt User Interfaces
Using the Crowd to Understand and Adapt User Interfaces
 
Microservices - How Microservices Have Changed and Why They Matter
Microservices - How Microservices Have Changed and Why They MatterMicroservices - How Microservices Have Changed and Why They Matter
Microservices - How Microservices Have Changed and Why They Matter
 
Everything XControls
Everything XControlsEverything XControls
Everything XControls
 
Deep Dive into the Idea of Software Architecture
Deep Dive into the Idea of Software ArchitectureDeep Dive into the Idea of Software Architecture
Deep Dive into the Idea of Software Architecture
 

Último

call girls in Dakshinpuri (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Dakshinpuri  (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️call girls in Dakshinpuri  (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Dakshinpuri (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...
👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...
👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...
karishmasinghjnh
 
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman MuscatAbortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion pills in Kuwait Cytotec pills in Kuwait
 
Jigani Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bangal...
Jigani Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bangal...Jigani Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bangal...
Jigani Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bangal...
amitlee9823
 
Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)
amitlee9823
 
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
eeanqy
 
Escorts Service Basapura ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Basapura ☎ 7737669865☎ Book Your One night Stand (Bangalore)Escorts Service Basapura ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Basapura ☎ 7737669865☎ Book Your One night Stand (Bangalore)
amitlee9823
 
ab-initio-training basics and architecture
ab-initio-training basics and architectureab-initio-training basics and architecture
ab-initio-training basics and architecture
saipriyacoool
 

Último (20)

Q4-W4-SCIENCE-5 power point presentation
Q4-W4-SCIENCE-5 power point presentationQ4-W4-SCIENCE-5 power point presentation
Q4-W4-SCIENCE-5 power point presentation
 
call girls in Dakshinpuri (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Dakshinpuri  (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️call girls in Dakshinpuri  (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
call girls in Dakshinpuri (DELHI) 🔝 >༒9953056974 🔝 genuine Escort Service 🔝✔️✔️
 
call girls in Vasundhra (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
call girls in Vasundhra (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...call girls in Vasundhra (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
call girls in Vasundhra (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
 
👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...
👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...
👉 Call Girls Service Amritsar 👉📞 6367187148 👉📞 Just📲 Call Ruhi Call Girl Agen...
 
Sweety Planet Packaging Design Process Book.pptx
Sweety Planet Packaging Design Process Book.pptxSweety Planet Packaging Design Process Book.pptx
Sweety Planet Packaging Design Process Book.pptx
 
Top Rated Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated  Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...Top Rated  Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated Pune Call Girls Saswad ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
 
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
8377087607, Door Step Call Girls In Kalkaji (Locanto) 24/7 Available
 
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
UI:UX Design and Empowerment Strategies for Underprivileged Transgender Indiv...
 
call girls in Kaushambi (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
call girls in Kaushambi (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...call girls in Kaushambi (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
call girls in Kaushambi (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝...
 
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman MuscatAbortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
Abortion Pills in Oman (+918133066128) Cytotec clinic buy Oman Muscat
 
Jigani Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bangal...
Jigani Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bangal...Jigani Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bangal...
Jigani Call Girls Service: 🍓 7737669865 🍓 High Profile Model Escorts | Bangal...
 
Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Nagavara ☎ 7737669865☎ Book Your One night Stand (Bangalore)
 
Booking open Available Pune Call Girls Nanded City 6297143586 Call Hot India...
Booking open Available Pune Call Girls Nanded City  6297143586 Call Hot India...Booking open Available Pune Call Girls Nanded City  6297143586 Call Hot India...
Booking open Available Pune Call Girls Nanded City 6297143586 Call Hot India...
 
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
怎样办理伯明翰大学学院毕业证(Birmingham毕业证书)成绩单留信认证
 
Hingoli ❤CALL GIRL 8617370543 ❤CALL GIRLS IN Hingoli ESCORT SERVICE❤CALL GIRL
Hingoli ❤CALL GIRL 8617370543 ❤CALL GIRLS IN Hingoli ESCORT SERVICE❤CALL GIRLHingoli ❤CALL GIRL 8617370543 ❤CALL GIRLS IN Hingoli ESCORT SERVICE❤CALL GIRL
Hingoli ❤CALL GIRL 8617370543 ❤CALL GIRLS IN Hingoli ESCORT SERVICE❤CALL GIRL
 
Escorts Service Basapura ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Basapura ☎ 7737669865☎ Book Your One night Stand (Bangalore)Escorts Service Basapura ☎ 7737669865☎ Book Your One night Stand (Bangalore)
Escorts Service Basapura ☎ 7737669865☎ Book Your One night Stand (Bangalore)
 
ab-initio-training basics and architecture
ab-initio-training basics and architectureab-initio-training basics and architecture
ab-initio-training basics and architecture
 
Hire 💕 8617697112 Meerut Call Girls Service Call Girls Agency
Hire 💕 8617697112 Meerut Call Girls Service Call Girls AgencyHire 💕 8617697112 Meerut Call Girls Service Call Girls Agency
Hire 💕 8617697112 Meerut Call Girls Service Call Girls Agency
 
WhatsApp Chat: 📞 8617697112 Call Girl Baran is experienced
WhatsApp Chat: 📞 8617697112 Call Girl Baran is experiencedWhatsApp Chat: 📞 8617697112 Call Girl Baran is experienced
WhatsApp Chat: 📞 8617697112 Call Girl Baran is experienced
 
AMBER GRAIN EMBROIDERY | Growing folklore elements | Root-based materials, w...
AMBER GRAIN EMBROIDERY | Growing folklore elements |  Root-based materials, w...AMBER GRAIN EMBROIDERY | Growing folklore elements |  Root-based materials, w...
AMBER GRAIN EMBROIDERY | Growing folklore elements | Root-based materials, w...
 

Citizen Developer Tools are not just for Citizen Developers (session at SharePoint Saturday Nashville 5/5/2018) by Antti K. Koskela

  • 1. Citizen developer tools are not just for citizen developers! Level: 200 ||Track: Developer (The rest of my slides will have less text, I promise!) So, the citizen developers have all the cool tools, and those that actually code for a living are left with legacy stuff? Not so fast!The same tools that Microsoft is targeting for citizen developers make development easier, faster and cheaper for everyone! This session combines tools such as Flow, Azure Cognitive Services and Azure Functions with some actual simple development work to provide highly customized, Machine Learning powered analysis workflow for the newly baked ModernTeam Sites in SharePoint Online.This demo-heavy session will look at real business scenarios, and how we can solve them using citizen developer tools and some code (Because we’re developers after all, right?) After this session you'll know how to create rich and customized business automation processes that use the latest tools offered to us by Microsoft. @koskila | https://www.koskila.net
  • 2. Citizen developer tools are not just for citizen developers! Antti K. Koskela | SPS Nashville 5/5/2018 @koskila | https://www.koskila.net
  • 3. Who’s speaking? • Antti K. Koskela, Escalation Engineer for Valo Solutions • A dev since 2004 (started with PHP) • Bending and twisting SharePoint into different shapes since MOSS. • Background in Fintech + accounting • From Finland, lived in USA in 2017, moved to Montreal in 2018. @koskila | https://www.koskila.net
  • 4. Session: Structure • 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 ServicesText Analytics 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 … • A developer? • … or a technical (non-developer) person? • … or something else? • Used Microsoft Flow before? • Worked with Azure before? • … or even 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…) • While a developer still waits for Visual Studio to start, a Citizen Developer has already hacked together an integration between 13 different systems using Flow. @koskila | https://www.koskila.net
  • 12. Citizen Developers == a mortal threat? • “End of Software Development” • “Citizen Developers are appearing at the workplaces” • Tietoviikko (The KnowledgeWeekly), 2018 • “Software DevelopersWill BecomeObsolete” • Brain Food, 2016 • “Software engineers will be obsolete by 2060” • Dan Auerbach, 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 DevelopmentWithout Programmers”, James Martin, 1982 @koskila | https://www.koskila.net
  • 13. Citizen Developers == a mortal threat? • Death of programming and obsoleteness of programmers (by automation, citizen developers, higher level languages, AI) has been proposed at least from the 80s! • Excel is the biggest software development environment (and the most dangerous one) anyway. @koskila | https://www.koskila.net
  • 14. 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
  • 15. Citizen Developer tools for “actual developers” @koskila | https://www.koskila.net
  • 16. 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 & Azure App 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
  • 17. 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
  • 18. 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
  • 19. Microsoft Cognitive Services -Text Analytics API • Detect sentiment, key phrases, and language from your text • Powered by Microsoft Cognitive 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
  • 20. 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
  • 21. 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
  • 22. How does this relate to real-life business problems? Case studies and demos @koskila | https://www.koskila.net
  • 23. 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
  • 24. Case 1: “The Fancy” Automatic MetadataTagging Using Azure Cognitive Services @koskila | https://www.koskila.net
  • 25. 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
  • 26. 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 • Using Azure 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
  • 27. Our StackToday • 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 • Text API used to analyze text for Key Phrases @koskila | https://www.koskila.net
  • 28. How? • A Flow attached to Document Library will call the Azure 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 SharePoint Online @koskila | https://www.koskila.net
  • 30. Case 1: Considerations • The whole stack is super cheap! • SharePoint Online 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 (for storage) • Flow free for personal, basic use @koskila | https://www.koskila.net
  • 31. 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
  • 32. Case 2: “The Practical” Mirroring content between Classic SharePoint sites @koskila | https://www.koskila.net
  • 33. 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-box SharePoint 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
  • 34. 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
  • 36. 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
  • 37. 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
  • 38. Case 2: Resources • Code: https://github.com/koskila/CitizenDeveloperToolsDemos • Video: https://youtu.be/fe_NiTjmL58 @koskila | https://www.koskila.net
  • 39. Case 3: “The Hacky” The easy but geeky way to subscribe to any push notifications @koskila | https://www.koskila.net
  • 40. 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
  • 41. 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
  • 42. 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
  • 43. Case 3, Demo 1: 1. Get the Azure Function URL 2. Hook it into a SharePoint list 3. Add an item to the list 4. Check out the notification  @koskila | https://www.koskila.net
  • 44. Case 3: Resources • Code: https://github.com/koskila/CitizenDeveloperToolsDemos • Video: https://youtu.be/DaX6V_fFqy8 @koskila | https://www.koskila.net
  • 45. Further Considerations @koskila | https://www.koskila.net
  • 46. 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
  • 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. Flow Custom Connectors @koskila | https://www.koskila.net
  • 56. Conclusions, Final words & Resources @koskila | https://www.koskila.net
  • 57. 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
  • 58. 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. • Text Analysis 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
  • 59. 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
  • 60. 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
  • 62. SharePoint & Office 365 Users Group NashvilleSUG.com
  • 63. Feedback, Ideas, Questions? Let’s connect! • antti@valointranet.com • @koskila • www.koskila.net • https://github.com/koskila • https://www.linkedin.com/in/koski la/ @koskila | https://www.koskila.net

Notas del editor

  1. http://www.bluestemprairie.com/.a/6a00d834516a0869e201bb0920c37d970d-popup
  2. https://www.gartner.com/it-glossary/citizen-developer/
  3. http://static1.1.sqspcdn.com/static/f/702523/24818487/1398966115397/201405-Mellinger.pdf?token=QDQS39XXWFEMbaks1IseZfP9ff4%3D https://medium.com/@dtauerbach/software-engineers-will-be-obsolete-by-2060-2a214fdf9737 http://brianchang.info/2016/03/06/software-developers-will-become-obsolete.html The name 4GL stands for 4th generation (programming) language. It refers to the concept that programming languages have evolved from low-level and detailed (1st generation, machine code) to a higher abstraction level with more power (3rd generation, most of the programming languages that we still know today). The 4GL name thus suggested more abstraction and more power. There were countless 4GL vendors, including Oracle (Forms), Progress, Clipper and Informix. Like Low Code today, 4GL was supposed to make it possible for non-programmers to create application. In a 1982 book called Applications Development Without Programmers, James Martin argues that certain end users are perfectly capable of creating applications themselves and advocates the use of early 4GL technologies (such as RAMIS and FOCUS) for that. Such claims quickly helped 4GLs become popular, even if in practice very few applications ended up being created, let alone maintained, by non-programmers. Although 4GL applications are still in use at many companies around the world, their popularity has waned since their introduction. The technologies are mostly used for existing applications, with very little new development going on. The reasons for this disappearance are closely related to three common risks for 4GL that I wrote about in 2014. Do these risks also apply to Low Code platforms? And are there any new risks? https://medium.com/softwareimprovementgroup/low-code-wave-of-the-future-or-blast-from-the-past-7fcd618371b2 https://www.tivi.fi/Kaikki_uutiset/nyt-loppuu-ohjelmointi-6704716 https://books.google.fi/books?id=MdBP83DW6g4C&pg=RA1-PA27&lpg=RA1-PA27#v=onepage&q&f=false
  4. Excel has been making software (logic) developers unemployed since 1985. 750 million people worldwide use it “With spreadsheets, people who are typically directly involved in a work process can create applications that they need, quickly and normally without IT involvement.” -Mike Nieburg, VP of Business Development, EASA, 2018 https://irishtechnews.ie/seven-reasons-why-excel-is-still-used-by-half-a-billion-people-worldwide/ https://www.forbes.com/sites/timworstall/2013/02/13/microsofts-excel-might-be-the-most-dangerous-software-on-the-planet/#1e935b94633d http://easasoftware.com/understanding-low-code-development-platforms-becoming-critical-businesses/ (EASA is a low-code solution provider)
  5. Point and click + drag and drop, and it’s ready! Hooks on to SharePoint nicely via a webhook (but you won’t even have to worry about it!)
  6. https://techcommunity.microsoft.com/t5/SharePoint-Blog/What-is-Modern-SharePoint-and-Why-Should-I-care/ba-p/161941
  7. Classic SharePoint’s publishing infrastructure, as powerful as it is, seems to be incompatible with a lot of things Even Flow supports it only partially We can use a Flow to copy a list item from a list to another list (across site collections, if need be!) A Flow can be used to copy most of the properties of the page It won’t copy page content though It’ll break the page layout link in cross –site collection scenarios An Azure Function can be used to copy the rest Using OfficeDev.PnP, it’s fairly simple to open 2 contexts and update properties between them
  8. Azure Function url: https://portal.azure.com/#@postikoskila.onmicrosoft.com/blade/HubsExtension/Resources/resourceType/Microsoft.Resources%2Fresources
  9. Notification emails look SPAMMY
  10. https://citizendevelopertoolsdemos.azurewebsites.net/api/SharePointWebhook?code=adygXb7iuzf76cazqHsaPkIeUo7M22W9HbFxbNsOOT1epBazv1YqoQ== Configured here: https://simedev.sharepoint.com/sites/valo1.14-a/about-us/strategy/_layouts/15/viewlsts.aspx
  11. Azure Function url: https://portal.azure.com/#@postikoskila.onmicrosoft.com/blade/HubsExtension/Resources/resourceType/Microsoft.Resources%2Fresources