Microsoft announced mid-last year that all SharePoint Designer 2010 Workflows would no longer be operational in M365 effective November 1, 2020. For companies planning to upgrade their on-prem environments to M365 this announcement presented additional project risks and required a shift in the project priorities. This meant the current 2010 Workflows could not be migrated.
Instead, all 2010 Workflows would require a rebuild process if users are currently on M365 or migrating to M365. For some companies this is and will be a very daunting process and the first question we hear is “How do we even get started?”. This is a very valid question and one of the most important ones as you must have a plan for a project such as this.
Anytime, you have a project where you are recreating an already existing process the users and organizations at a whole will want to update and streamline the current process. Any process that is put into place and utilized regularly always has room for improvement and typically the users have expressed their desire for these improvements. So not only are you updating your workflows due to deprecation you are updating them and making them better.
In this session, we will go through how to plan, document your old & new and implementation of your new process based off a use case scenario.
About Speakers:
Richard Toland is a senior Architect and Developer whose experience spans numerous industries, technologies, and platform disciplines. Primarily focused on Microsoft’s technologies stack, he has amassed a wealth of knowledge in enterprise development, support, governance, systems architecture and business practices encompassing the SharePoint, Azure and Office365 platforms’ endless product offerings. As a community evangelist, Richard continues to share his expertise in SharePoint, Office365, PowerBI, HoloLens, Azure, etc. to educate his colleagues and peers, empowering them to thrive with the skills to implement and support environments of any size, in any industry.
Stacy Deere-Strole (MVP) is the Owner of Focal Point Solutions LLC, a Cincinnati, OH based company that provides SharePoint Solutions for the Enterprise in the mid-to-large market. Previously, Stacy led a rapidly growing SharePoint practice where she engaged in a wide range of consulting projects across various industries. With nearly 18 years of experience in the IT Industry, Stacy has mainly focused on Collaboration Solutions such as IBM’s Lotus Notes\Domino and Microsoft’s Messaging and Collaboration Solutions including deployments and SharePoint upgrades.
Within the SharePoint community, Stacy is a SharePoint MVP and is actively sharing her real world expertise through authoring in the blog http://www.spmindmelt.focalpointsolutions.co,; and speaking at various SharePoint Saturday's, Collab365, ITUnity, SPTechCon, SharePoint Fest, SharePoint Engage, and User Group events. She also co-authored two books called SharePoint 2013 and 2010 Using Managed Metadata.
Conference Website: https://www.2020twenty.net/power-platform-virtual-conference/
C# Corner - Community of Software and Data Developers
https://www.c-sharpcorner.com
Show More Show Less View Video Transcript
0:00
Hello, thanks everybody. Thanks for the intro. Stacey and I are here to talk to you today about
0:07
2010 workflow rebuilding. And with the shutdown of 2010, there's a pretty big gap that's out there
0:16
in the market today. Y'all are probably feeling it with SharePoint Online and then the upcoming
0:20
any upcoming migrations you may have in scope from your on-premise environment where 2010 was
0:25
prevalent and the migration of that's online now. There's a lot of remediation stuff that has to
0:30
happen. Stacey, do you want to kind of help ushers in too? Yeah. So I'm getting some major
0:38
so one of the things about 2010 workflows is not only where you are you forced to come off
0:50
of 2010 workflows, but how to do it in an efficient way. And, you know, also keep your
0:56
users attention so they don't, you know, another change type of thing. So a lot of planning and
1:01
stuff goes to it as well, on top of the actual development piece that needs to be done. So we're
1:06
going to kind of go through that. I'm actually going to cut some of my pieces short, but of
1:10
course it is in the slides, but I'm just going to kind of hit things high level so that you guys can
1:14
really get the ins and outs of the development side of it and how, you know, the process that
1:20
we followed and stuff like that there. So with that, Richard, I'm going to swap the slide. I
1:27
know that we had a great introduction, so we'll just quickly hit it. You know, our social media
1:35
information is all on our slide, so feel free to reach out and connect with us if you guys have
1:40
any questions or issues afterwards. So our agenda, we're going to talk about best practices and
1:45
governance, makers and champions, some strategies, lessons we've learned. So hopefully we can help you
1:51
not have to go through those. Pitfalls, obstacles, and risks, functionality of the Power Platform
1:58
We're going to have, Tolan's going to go through a bunch of demos for you and then we'll wrap it up
2:02
for you. All right. So again, I'm Stacey Deer. I am a Microsoft Office of NAPS MVP
2:11
owner of Focal Point Solutions, owner plus I get my hands dirty as a senior architect
2:17
Mr. Toland? Yeah, hopefully this is better with the echo. I'll switch my mics there. So Richard
2:26
Toland, I work with Catapult Systems, and I'm a principal architect or principal consultant there
2:32
Primarily, my focus is throughout the 365 service fabric and the substrate that crosses into Azure
2:38
So anything in that realm, that's where my architectural fingers are in the pie all the time
2:46
And I have a tendency to call him Colin because I work with another Richard, so that's how I keep them separated
2:52
So best practices and governance. One, make sure that before you get started, always secure your tenant
2:58
A lot of times with workflows and forms and all that stuff, you're working with data that you don't want other people to have
3:04
So make sure you're securing your tenant. The biggest best practice I can tell you is make sure you're setting up a service account for your Power Platform
3:13
Now, you can do it depending on the size of your development team. You can do one account called like Power Platform or something like that, or create one for each item inside of it, meaning Power Apps, Power BI, and Power Automate
3:26
Like I said, it's really going to depend on the size of your team and how you want to structure that. Establish a strategy team for the Power Platform
3:35
That strategy team should be identifying the governance that you're going to follow, the life cycle, what you're going to use, what you're not going to use
3:43
You know, kind of strategize. A lot of times a lot of strategy comes on how you're going to develop to make sure you don't need the extra license because that's when things get very expensive
3:54
So you definitely want to make sure that you're strategizing how you're utilizing the Power Platform
3:59
Set up data loss protection policies. Leverage out-of-the-box activity logs and ytics
4:05
Microsoft has put a lot of time and effort into that. And the information that you're getting back these days just straight out of the box is amazing
4:12
I would definitely go and use that. Build a center of excellence
4:17
It's either a center of excellence or a governance site. Whatever your company would rather call it to make sure that you're putting all your
4:23
information in one place and sharing it. There is also a starter kit out there that helps you
4:29
templatize a lot of the best practices already so you don't really have to recreate the wheel
4:36
And also make sure you establish an automated audit process. Auditing is very important if you
4:41
can't tell I'm a huge governance person. And of course, identify makers and champions within your
4:47
organization. Of course, champions are people who dive in, provide feedback, are very vocal about
4:54
what you're doing to make things better through the organization. Makers are those people that
4:59
you allow them to create a flow or a power app and they get all excited with the shiny new object
5:04
and they want to go out and they want to build things to make things easier. Those people are
5:08
going to be your makers. So how you're going to, what you're going to allow makers to do
5:12
setting the policies for them, what they can and can't do. And of course, then utilize those
5:17
champions to get the information out there. Yeah, great segue. The makers are your innovators
5:23
They're the ones with the ideas. Give them the tools. Give them the power. So Power Apps, right
5:28
So best practices throughout Power Apps comes into play where it's a data access question
5:33
it's a user access question, and then it's the repeatable process question. So once you're
5:39
implementing your app, new software development lifecycle process or classic software development
5:43
lifecycle process has changed through the Power Platform in order for your makers to now build in
5:50
one environment and promote to the next environment. So access between those environments on your
5:55
tenant is key. And you want to ensure that your users are able to, one, access the info, two
6:01
that they have licensure for the information, and that you're able to proceed between your
6:05
implementations of one environment to the next environment, all within the same tenant
6:09
And we talk about bottlenecks and data sources, which is a common thing, especially when you're talking to on-prem data services
6:16
So with the premium SKU in the E1, excuse me, from E5 or Power App and Power User Plans, excuse me, Power Apps, Power Automate, and Power BI per app or per user plans
6:35
alternatively an E5, G5 license structure will allow premium SKU to talk to an on-prem data source
6:42
to through the Azure Data Gateway or Power BI Data Gateway, whichever flavor you've chosen
6:48
Those can oftentimes cause bottlenecks for large data services. And what we typically recommend is
6:53
use the classic application development methodologies, right? So it's lean heavy on
6:58
model your view and then view your model so that you're pre-filtering down the list or data queries
7:03
that you're asking data for and not overwhelming the systems that are accessing it
7:08
That can also happen for online services too. So Azure's Cloud SQL databases or SharePoint lists
7:15
you can run across bottlenecks for data contingency and data throughput through to your app
7:21
which will end up causing performance issues or your users would maybe perceive a performance problem at the user end When we talk about usage patterns there a lot of ways to access Power Apps You can access it through the apps in the app store
7:35
So there's a Power App app in the Google Play Store or the Android iOS Apple Store
7:42
And within those, once you've authenticated, certain Power Apps inside of your tenant
7:48
can be published to your users. That's one way to leverage a Power App
7:51
Now with the exposure through Teams, Teams apps integrations is huge. So Power Platform promotion through the Teams application is also viable through the SharePoint application in the App Store
8:03
Or plain old browser. When you're accessing a Power App through your browser, you want to be aware that Power Apps, while built to be browser agnostic or platform agnostic
8:15
there are still some dependencies or some nuances in browser types. So the different rendering engines handle functions or features different ways
8:25
We also talk about geographical location. That's really pertinent for multi-geo tenants where you may have some users in one country trying to access data in another country
8:36
And you want to be sensitive there from a best practice perspective on how you're fetching data, what cloud service or what on-prem service you're talking to
8:43
And what's the fastest route path to get there through the data gateway and or through your route path to that cloud entry point
8:52
Throttling is a huge issue, right? So when you hit a big data set, let's say I have a company of 5,000 users and I tell everybody, hey, go pull up the open enrollment list and let's make sure that you get all your stuff done
9:03
Well, if that was a SharePoint list and I'm pulling back 1,000 items for 5,000 users, that could crush your throttling
9:09
So you want to be aware of what impacts you'll have on the service substrate in Office 365 as well
9:16
One Power App can go crazy and really take a big chunk out of that throttling for you
9:20
So be cognizant of that and be aware of what data you're pulling and how much of it, how big and how fast, how wide you're spreading out your app usage
9:32
So with your makers and champions. Sorry about that. So people you want to look for people with leadership qualities that are willing to share information and lead people
9:47
You know, it's almost kind of like that leading people to water, which can't make them drink
9:51
Well, you can lead them there. Right. Lead them there and then see what they do. You also want people that carry an influence. You want to, you know, the leaders that, you know, you don't want to be a follower all the time
10:02
Right. You want to be a leader, something you're excited about. You know, they get people engaged
10:07
You know, people who I know this really sounds bad to some people like there's too much water cooler talk
10:11
But in this instance, you want those people that, you know, contain that water cooler talk
10:16
They're the ones that started. A lot of times people learn from those discussions
10:20
So you want to key in on those types of people. People are also diligent in their work efforts
10:25
It doesn't mean they have to be OCD, but, you know, people who like to follow a process, they step one, step two, step three
10:33
They don't like to find those shortcuts around things or try to figure out ways to break things
10:40
You want people who are very specific about their job and making sure it's done accurately and in a time-end fashion
10:47
Understand your organization's vision for governance. Some companies, they don't put enough emphasis on governance
10:54
you know so you in a situation like that you have to make them aware of why you need it in certain
11:01
situations to get them to jump on the bandwagon essentially but organizations that have a very
11:07
structured governance you also have to find out how to take this information from the power platform
11:13
and how it fits in there it may not fit with how it's currently structured because it's new
11:20
technology and there's things you can and can't do based off of the old designer and the way you
11:25
used to develop. So you have to work through those types of things together to update your policies
11:31
or energize the fact that you need governance and you have to have those policies to be successful
11:38
with this. The last thing you want is to people doing all different things and then trying to
11:43
clean it up at a later point in time, like not using a service account right out of the gate
11:50
If you don't, whoever has assigned their name because they created it, it's under their name
11:55
They leave the company. Can you provide another owner and get it and still continue to use it
12:02
Absolutely. Is it easy? No, it's not an easy process, not something you want to have to go through
12:08
And especially if that person has built hundreds of these things within your organization and that they're used every single day
12:15
and you know find people who have an interest in building things you know power platform is
12:22
somewhere you're building something and at the end that you're very proud of it people who love
12:27
to be crafty and build things are going to be perfect people for a power platform yeah
12:34
um so here we're going to talk about some strategies and and those power platform people
12:42
I call them, I like to, we used to call them power users, right? I call them the power passionate now
12:48
because they are, they're users who really want to get going and they need the tools, they need
12:53
the methods. So let's talk about some strategies that we can employ for those folks to find their
12:59
best success rate. So we initially, when you're looking at SharePoint online, right, in 2010
13:05
workflow, it's kind of our topic here. We're talking about the retirement of 2010 workflow
13:09
which is officially shut off on SharePoint Online. And if you haven't already asked for it, you've probably felt that pain, right
13:18
2010 workflows just stopped working. So what you want to tackle is for most tenants
13:26
you can still leverage the SPMS, the SharePoint modernization scanner. And what it'll provide you is read through your tenant access
13:35
to find any instances where those workflow associations existed. and then you can tackle those. Aside from just the workflow associations, there's a lot of really
13:45
good information in there from application landscape as well, unsupported list templates
13:50
unsupported page views. Typically, when we're talking about 2010 workflows that found their way
13:56
into SharePoint Online, they were not usually created. I would say within the last three to
14:01
five years, the majority of those workflows that found their way to online came from a migration
14:06
Migrations pump in classic UI in most cases, and that's becoming less and less prevalent for sure
14:12
But of those tenants with lots of classic UI, the SPMS tool, the SharePoint Modernization Scanner, is a fantastic tool to use for discovery of those application landscape components
14:22
of your list views, of your workflows, 2013, 2010 workflow, and then present the opportunities for the Power Platform to come in and help out
14:32
where we're looking at Power Platform really in that SPMS landscape. It's targeted towards primarily Power Apps for application interface
14:41
That would be, you know, we migrated this thing in with JS link and it doesn't work anymore
14:44
Or we migrated a classic list view or we migrated some workflow, 2010 workflow
14:49
So Power Apps and Power Automate are the two components that SPMS really focuses on for application replacement When we want to talk through demos right so 365 features and functionality are vast There a lot in that service substrate and it a challenge to keep up with all this technology
15:05
because it's constantly changing. What really helps is standing up a demo environment
15:11
and making sure that your user community, those power users, the power passionate folks
15:15
and anybody interested in application customization can see, they can look and feel
15:19
they can tangibly dive into a 365 demo experience and really feel what those controls, the user controls
15:28
and the features and functionality can provide for them. So don't be shy
15:32
Spin up a DevTenant. They're free. You have up to 25 Dev users that you can get an E5 license
15:38
and discover the entire suite, the whole platform's available to you. So spin up a DevTenant and get crazy with your power-passionate people
15:45
Those power users are your deepest link to what your feature functionality landscape is going to look like
15:53
how many features you want to use, where you're going to use those features, what you want to do
15:58
We talked about using sessions and a breakdown session for a yesterday and a tomorrow in that demo environment is
16:05
great to show and tell either future functionality that you'd like to implement
16:10
and then maybe some of the where, it's also a very good communication tool for
16:15
your developers or those power users to say, this is where I'm coming up against challenges
16:19
You all in IT have implemented some control spaces for me that
16:22
I'm trying to navigate those waters and I'm expressing challenges here. I'm experiencing challenges
16:27
So it's a great place to show and tell bi-directionally in that conversation. Let's talk about new features
16:32
Let's talk about things where you've locked me out or I need your help. SMEs are an excellent resource too
16:39
So you have subject matter experts for the processes, the business process management
16:44
the doers in your organization, right? The folks that are living through those business processes
16:49
And those subject matter experts are key in making decisions on how your workflow could find process optimization as you're stepping out of what used to be there in 2010 actions
16:59
And moving now towards the Power Automate flows, there's a whole new landscape of options available to you
17:07
And talking to those SMEs, really getting a deep understanding of what their process looks like, will maybe find process improvement along the way with the new tool sets
17:16
So definitely work with those SMEs. Work with your business users. Your business users are key, right? So at the keyboard where they're inputting data or they're reading data out and understanding what their role is throughout that process is also another key factor where you'll find process improvement through a deeper understanding of what was yesterday's process and how do I lean on the Power Platform for tomorrow
17:38
These sessions are great in that, you know, it don't take a lot of time. You could sit down for an hour a week, a half an hour a week, and just rock through, you know, knock down processes and document the process flow as they stand today or as they stood yesterday and how you want to improve those processes with the new tools
17:57
Baby steps. Asking lots of questions and providing lots of time for testing
18:02
So ask lots of questions, yes, as you're building through or walking through these processes
18:06
but definitely provide them lots of time for new tooling and new process testing
18:11
So I want to build a new workflow, a new Power Automate flow to replace the 2010 thing from yesterday
18:19
It's new. It looks 100% new, right? It behaves differently. And some of that may be invisible in the background
18:25
It was just sending an email. I still get my email. Great. Maybe it's I need to input some more data, or maybe I need to have a totally different approval process
18:33
where I can click and approve right in my email. If you're changing their look or feel or their functionality, allow them lots of time
18:40
Change management is key. It's a really big issue. So train your users and give them lots of time for testing of new features or new functionality as you're changing their processes
18:54
All right. So some lessons learned. And, you know, use one of the thing, the biggest things is anytime that you have to rebuild something, use this time to make improvements to that
19:07
If you have to rebuild something just because, you know, the version no longer exists and you just rebuild the same exact thing, you're missing a great opportunity to make it up to the users that they have to go through a change
19:19
Right. Users hate change. But the thing that they hate, you know, dislike even more than that is for someone to rebuild something and then give them the same problems that they already had
19:30
So this is your opportunity to make improvements to this as well
19:34
I'm sure there's support tickets or you've heard people complain about various things in the process
19:40
Take this time to to fix those. Make it better. Streamline it
19:45
Make sure there's automate, you know, additional automation that they say it cuts off here and it could go a little further
19:51
Also, there could have been organizational changes from the time this was built till, you know, this time that you're getting ready to rebuild it
19:59
You know, look at those factors. Get some feedback on it. Yes, will it mean that, you know, you're having to make changes and it could be bigger
20:08
chances are when you go through for improvements in a process, typically actually your process
20:14
becomes smaller because you found ways to streamline it a little better or automate
20:18
certain pieces to make them easier. So some, yes, they may be a bigger process, but overall
20:25
typically it's more streamlining the same one you have and it becomes easier to manage
20:30
the overhead of it once you've rebuilt it. So keep those things in mind. The other thing that it
20:36
really does is it helps keep the users engaged when they're getting something new. I know most
20:42
of them say they hate change, but if it's something that's going to help them day to day
20:46
to make their jobs easier, then do it because that's what keeps them excited, keeps your user
20:51
engagement. You don't want user adoption to tank just because you change a process
20:58
especially if you change a process and leave it identically the same. Just look and feel is
21:03
different. So give them something to get excited about, hit those things that they've been
21:08
complaining about most in that process. The other thing, and I kind of put this in capital letters
21:14
is do not rush. You know, we know there was a deadline for the whole 2010 workflow thing
21:20
but you could get extensions. People could get extensions so that you could take time because
21:24
you know, some people have a lot of 2010 workflows out there. I can't remember the one list that
21:29
Tolan and I looked at one day, I was like, wow, you know, I mean, and you know, they spent a lot
21:34
of time on it, because in 2010, there's only so much you could do to make things efficient and
21:38
small, right? So they're rather large, you have time, you can extend it and stuff like that. But
21:44
just don't rush. If you rush, you're just recreating new issues and not correcting the
21:49
things that you need to be. And then you're going to, you know, not only have the users frustrated
21:53
you're going to be frustrated yourself and then management. And you can avoid that by
21:57
slowing down, plan it accordingly, talk to the right people, document it. If you're documenting
22:04
your design, guess what? You're creating your governance that goes along with it
22:08
So document it, sign off on it, make sure everybody's, you know, 100% on board
22:15
The other things, if you do all that and everybody is on board, it leaves a lot less
22:20
things that come up in your UAT that have to be changed So make sure you inviting the right people to the meetings explaining it document show them have them say yes that great sign off on that bad boy And then when you go through your AT you may have
22:37
some minor tweaks or whatnot that need to be done. But the thing you want to try to avoid is
22:42
you know, halfway through the process, they want to do a rewrite, right? Because they didn't have
22:46
the right people in there. We've all been there and done that. But you just want to make sure in
22:51
a situation like this where even though you have more time because of the extension, you still have
22:55
a time frame, right? So if you plan it accordingly, you can help eliminate some of those things
23:03
Yeah. All good points. All good points. Last couple. I have some more. Yeah. So document. Oh, so we're going to show you some examples of some of them
23:13
that we did. But in that when you're designing, don't always just document what your new process
23:18
is, especially if no one really knows what the old one was. A lot of times we find that out and
23:23
they're like, I don't really know. I just hand it to this person or whatever, right? Document
23:27
literally document what the current process is. And then you knew so that you have a comparison
23:34
you have your improvement plan visually in front of you. They can see it. They can see where the
23:39
process took 50 steps here, but in the revision, you see like 15, right? Let them see that impact
23:45
of what you're doing by the planning and the meetings that you're having
23:49
Also, I'm a huge proponent. I never walk into a client and they're like, well, I don't know how to see my data in here
23:57
you know, what they use. Dev tenants are great. You can spin them out for any type of industry
24:01
That's all great. But clients like to see how does my data fit into that
24:06
I see how that, you know, that company's data fits. But what about mine
24:11
Never hesitate to provide mock-ups of potential look and feels of, you know, the information that they've provided
24:18
Do a quick little demo of, you know, have them give you like an example, small form or fields or something like that
24:25
And build a little small demo so they can see it. If they can't see or envision their content or their process in there, it's going to be harder for them to accept it, agree to it, and think that it's actually going to work for them
24:39
So let them see it, right? So show them demos, especially if you're working internal to your company
24:45
you probably got all kinds of quick little demos you create or mock-ups. For consultants, you know
24:51
you work with some industries over and over and over again. But one thing that we've all learned
24:56
is no two companies are ever alike. No two companies have the same exact processes
25:00
call the things the same exact names. So doing a demo, mocking it up
25:06
however is most visual for them, make sure you do that. It actually goes a long way
25:13
It certainly does. So talking about process documentation, right? So what we did was for
25:21
this demo, we went ahead and Stacey and I worked together and we went through that kind of process
25:27
that lifecycle of take a 2010 workflow of what it used to be today, right? So on the left-hand
25:31
side here, I've got something says existing class registration process flow. In our use case
25:37
example, what we did was we worked through this use case where, you know, participants of a class
25:46
online learning or in-person training, what the supposed client here wants to do is build like a
25:54
class catalog, a course catalog, and then provide an interface for students to come and register
26:00
participants to come and register for the class so that their instructors are maintaining the
26:05
the registration process, or excuse me, the class information process and what's in the curriculum
26:10
for each of the courses in one place. And then the class registration is maintained in another place
26:16
where the participants can go and see which classes they've registered for. They can track
26:22
those, show some LMS history for their organization. And so the current process, as it was documented
26:29
you can see it's a very linear flow. We've got some dotted lines here where maybe somebody was
26:34
injecting either a conversation or an email that was sent out. And then on our new process
26:43
to speak to Stacey's point, we really took the time to dig deeper in this process eval and
26:48
understand maybe there's some areas where we can do some process improvement, maybe put an approval
26:53
loop in place where we are sending in or gathering information at a different stage. So what happens
27:00
is our class is defined. And then down here during the registration process, there's some additional
27:06
information on hotel registration, do you need a hotel? There's some additional information that's
27:12
captured on the number of seats that are available in the class. And those two forms connect together
27:17
So whenever a participant registers for a class, it deducts that number of registrations from the
27:23
master list of how many seats were available for that instructor at that location. So definitely
27:29
finding process improvement rather than bouncing a bunch of emails back and forth on the source
27:33
process. We now built a lot of that stuff into the Power Automate stream and in Power Apps
27:39
interface. So without further ado, let's take a look at some of the pieces for the forms here
27:46
So we're source form in this use case started with an HTML form and then evolved eventually
27:54
into SharePoint list form or infopath, right? So that's our classic use case and everybody goes
27:58
through that. As we're stepping into Power Apps, we breeze right on into the easy button where I
28:03
make a SharePoint list and I click customize this form and I choose my vertical Power App, right
28:09
That's neat. It sits in a blade on the SharePoint list. That's fine. It sits right on your SharePoint
28:14
overlay blade. What tends to be a problem there is I can't access it on my mobile. I can't present
28:21
that to my, I can't publish that to my user community. I can't migrate that between environments
28:25
And my software development lifecycle there is null and void because it's forever bound to that list at that location
28:31
I can't. If I make iterative changes, they are forever linear and serial changes
28:37
They cannot promote in between environments, and I can't have co-development happening for true lifecycle
28:44
So, you know, enter the custom apps where you're leaning into Power Apps for campus apps or model-driven apps and leveraging the environments inside your tenant so your makers can actually start in one place
28:57
Make tweaks, make changes, co-develop, and then promote through a formal promotion process and step up into published apps that you're able to share out through your enterprise
29:07
is you can publish them out so that users can leverage them in the PowerApps app
29:12
or a formal browser interface or through Teams apps. Now you can promote those off to Teams apps
29:17
and really use the power of the Teams Dataverse for Teams and or your actual Teams landscape
29:24
So it's threaded directly in the Teams app interface. So what we've done is we, through this use case for our demo example
29:32
we did exactly that, right? So we built ourselves a Canvas app here
29:37
that would take on the brunt of that form interface and replace the raw HTML and or infopath from the source
29:45
Behind this Power App, we went through and threaded the workflow right behind it
29:51
So workflow piece is Power Automate form. Again, we started with SharePoint Designer workflow, right
29:57
That's everybody's classic workflow. 2010 or 2013 SharePoint Designer Workflow. We took a look at the actions
30:04
And again, this is a conversation that you need to have with your organization. Yesterday, we had actions
30:09
and they were of a certain flavor. In tomorrow world, we have totally new actions
30:14
of a totally different flavor. And some of them are way more powerful
30:19
in the things that we can do. It's no longer just send an email. Maybe it's send a notification to my cell phone
30:24
Maybe it's, or to my user's cell phone. Maybe it's, you know, prompt for an approval
30:30
or an authorization or a reach out to another cloud system and toggle another bit
30:35
So there's a whole lot more power than you've ever had before
30:39
And those can really help you find process optimization, really streamlining that
30:44
Right. So when we take a look at that vertical, the top down, the vertical workflow, business process flow, as we documented the original
30:53
and then we look at what we can do with process automation, or we can look at approvals
30:58
or we can look at looping logic or branching logic throughout Power Automate Flow
31:03
you really find that process optimization in the Power Automate process. So rather than having a whole bunch of scattered actions and steps in your SharePoint designer
31:14
you now have that linear Power Automate structure that you can drill through
31:18
where if we use SharePoint as our data source here, obviously, and talking to within the license structure, SharePoint's all included in your SKU
31:28
So we use that as our data source. When an item was created or modified, we go and we gather up some variables
31:33
Maybe that was making logical choices, or maybe it was gathering data from totally other places
31:38
In our example, we read it right in, gather those variables, and then we make some decisions, conditional decisions
31:44
and we make some logical choices based on those. And that was all per the documented, optimized process that we documented and fanned out to move more horizontally for parallel threads rather than a single serial vertical on the process
32:04
All right. Some risk and obstacles that we ran into, it was overlooking and eliminating conversations with business users
32:14
in a process, there are certain processes that you can have a lot of feedback
32:20
And you may miss that one little thing that someone said that has a huge impact and you're
32:26
not aware of it. So some of the things that we've done is to make sure that we're getting all the information
32:34
is we also supplied things like a form or survey type thing of key things that, you
32:40
You know, they want to make sure are resolved or corrected or resolved or added to the new features of the process
32:50
So we let them write it in a form. So one, you know, if it's important to them, why it's important, what the priority is, you know, have them give us some feedback more than just in a discussion manner
33:01
Because sometimes when you go into a meeting and someone asks a question, it may not instantly click
33:08
So we kind of follow up to make sure that we're getting that information from the business users and also making sure if you have a question on something like you don't exactly understand what they're asking or what they're stating, please make sure you follow up
33:23
We've had an instance where someone says it's just because they didn't understand the terminology. It didn't seem relevant or like it even connected into the actual meeting that we were having on the process
33:36
and it wasn't followed up on and here it had a rather large impact to the process
33:44
So, you know, find ways that where you can make sure that you're getting all the information
33:48
And if you don't understand, ask questions. Resistance from the users. The more you don't listen to the things that they say or the feedback they provide
33:58
the more resistance you're going to get. So one of the things is we always make sure we let them know that we're reading their information
34:06
we are taking in their feedback in one way or another. It doesn't matter if you actually use
34:12
what they suggested. It's all about acknowledging the fact that they did supply the information and
34:18
that you really took it into consideration. The more you do that, not only will it help the
34:23
process that you're working on, but it will help all future things as well. Risks, everybody gets
34:31
a little excited as they start working on something new. But just remember, just because
34:36
you think you know, you may not. So rushing the process, you're like, oh, I can knock out this
34:42
next phase because it just works this way. Remember, hold up. Don't rush that. Make sure
34:47
you're having the proper conversations and it's documented and signed off before you hit that next
34:51
you know, next level of the development. Otherwise, you've got a lot of rework you're
34:55
going to have to do. And that's back on you, right? But it's back on you, but it causes issues
35:01
with the project and with keeping, you know, keeping that relationship with your users
35:07
Lack of requirements gathering. I'm a huge requirements type person, but there are times
35:13
where you get busy or you've just done it so much and you try to shortcut it, right? When you're
35:20
working on a process of, you know, to improve something, to replace it, especially replacing
35:24
a current process, you know, that's just an area you can't, you can't cut back on. The more you
35:30
cut back, the more rework you have to do, the more angry that your users and management gets
35:36
So make sure you have your requirements. Make sure they're documented somewhere
35:41
And because if you don't, when something new is asked as well, you don't have something to go back
35:46
and say, well, this is kind of, this is scope creep to this process. You know, maybe let's put
35:50
that on the backlog for another phase, right? Because especially depending on the timeframe
35:55
that would take to meet that requirement in slash rework because of it. Be able to identify what you
36:02
need to do now to cause the least amount of rework for anything future. But also don't always
36:09
you know, once you have your requirements, don't let things continually being added. That's what
36:14
backlog is for. That's what the next phase, version 2.0, right? So you have to make sure you have a
36:20
nice balance there Collaboration you have to I mean I think I been stressing this from my very first my slide till now is working with each other talking communicating When you working
36:34
through a process like this, I'm sure Richard can, you know, he will second this, set up a Teams for
36:40
it, have that communication, have that discussion, share the information in there. Because the great
36:45
thing is, is when you're using Teams to have that collaboration, and if one, any meetings you have
36:50
you're recording them. They can find them in there. You can upload your documentation, the task lists that are associated, but you're having discussions in there and it's all held in
36:58
one place. So if you need to go back and find something to, oh, what did that one person say
37:04
Or exactly how did they say it? What those options? It's in one place. It's going to be easy for you
37:08
to find. So use something like that to keep the collaboration going. Collaboration doesn't mean
37:14
you have to have a meeting or a phone call. It could just literally be a chat and posting stuff
37:18
in there, right? And I think the most important one is make sure there are feasible and attainable
37:28
timelines. Many times we have projects and a client goes, I want to go live on this date
37:35
And they're like, okay, as long as we're getting all our information and, you know, the feedback
37:40
that we need, that date should be fine. But then as things go through the project, you start
37:46
realizing the other things that you needed by certain dates are not coming in on those dates
37:52
which means that your go live is no longer feasible. Richard's laughing at me because
37:56
we're dealing with this right now, but we just had that conversation. You have to make sure
38:03
you're staying on top of that. Always communicate either to your client or to the department
38:09
Say, hey, I'm not going to be able to meet the deadline unless I have this by this date. Make
38:13
sure you're documenting it too. Documentation is your friend, right? And let me put it back on them
38:19
If you meet, if you give me this information by this date, I can still meet your go live. If you
38:24
can't, then the go live is going to have to be pushed back. You know, there has to be give and
38:27
take. You know, client can't wait or user can't wait until the day before hand you over everything
38:32
and still expect you to go live the next day. Right. So you have to be able to manage that
38:37
accordingly. But as long as you're communicating throughout the process, it shouldn't be a big
38:43
issue. The problem comes when you're not communicating and not reminding them. And then
38:48
at the last minute, say we can't go live. That's when the problem is going to be. So communication
38:52
is key. Yeah. I think I would echo that the Power Apps is power process, right? So if I'm doing
39:05
data intake, I'm doing data automation, I'm doing data ysis. Largely, especially internally
39:13
when you're without a formal process or a project where you're doing formal stuff
39:19
it's invisible, right? It's intangible. You didn't have to open or document or do anything
39:27
for your power user community. And it gets run away and runs to a level of complexity, I think
39:32
that is often invisible to that process. So make sure that you're documenting along the way
39:37
and yeah, working with your business for those tangible timelines. They're really important for your safety
39:44
as a developer in the Power Platform as well as for the business's safety
39:48
or the customer's safety, right? And ensuring that they do meet their deadlines on time
39:53
So we're gonna switch over and do a little bit of demo here for that application. I wanted to show you the app that we did build
39:59
and some of the workflow pieces. So again, we're taking in some data into a SharePoint list
40:06
And in the background, we do some automation here. For that class registration process, when a class is created and a class is registered for
40:17
we've done some automation behind the scenes with Power Automate Flow. In the class information list where we gather the curriculum or the class details about location
40:29
instructor, et cetera. We actually, we take in one field where in the process flow, you saw a loop
40:36
that kind of looped around for us to say, hey, when an instructor makes an edit to the class
40:42
right? They start with the source curriculum. This is what we want to teach. And then they come back
40:46
and say, oh, I have a spelling error. I need to send out a new course information. Or maybe I ran
40:52
out of time. My curriculum ran too long. I need to shave 15 minutes off of it. And they make an
40:57
update to that. Well, in the class information, this, the process loop where they, on that very
41:02
serial one, you saw the wings that were coming out from a dotted line. Those were a lot of email
41:06
chatter back and forth in business to say, oh my gosh, everybody, I just updated the curriculum
41:11
Hey, thanks students. I want you to know, you know, don't forget, I need to shave off 15 minutes
41:16
from the course and we're going to lose this bullet point. To loop that into the process
41:20
what we've done is we've used Power Automate then to take on that, the brunt of that chatter back
41:26
and forth. So it does some logical look inside of the application for a checkbox. It says
41:31
do you want to update the users, the attendees on class information update? And if the variable
41:41
was flagged here to gather yes or no on a Boolean, did they check the box in that form to say
41:47
yes, please update my users? It goes through a switch logic to read from the variable
41:52
and say yes or no, right? Do a case for yes and otherwise no
41:57
That's a Boolean check. And if I did say yes, it gathers up from the item
42:03
it gathers up any comments that they've injected into the form. So they've added some comments
42:07
They want those comments to go out to the user community or to their registered users
42:13
So then it checks for the conditions to say, did they say yes
42:17
What are their comments? Did they add the comments? And if so, then I'm going to go ahead and send that off to each of the registered users
42:23
So we take an email in here and say, hey, guess what? We gathered up some information from the instructor who added an update to the class information
42:33
They want you to be aware of it. If they didn't add any comments to their updates, they said, yes, I want to let everybody know, but I didn't add any further information
42:42
It just sends them a logical email saying, hey, guess what? Your trainer, I'm sorry, I was talking left and right boxes backwards
42:51
Over here on the right hand side I got yes they added some comments And here the updates that they added for you from the form Over on the left side it no they didn add any comments but they wanted you to know
43:03
They did check the box to let you know. So my participant email, and for each of the participants that are registered for the course, it goes through and looks them up based on their registration
43:13
if they're still registered for the course or not, and then emails those users
43:18
So that was one of the loops that you saw in that process automation where we talked through with the business and said, hey, you used to do this with 25,000 emails all the time
43:27
Are you sure you really want to do that in an email anymore? Can we kind of help loop that in for you to make the lookup for the who are the registered users and send out the emails and let them know the comments
43:37
Do you want to automate that? And so we did. We pulled that into definitely looking for process automation there to show that
43:44
So this is our class information form. And if I take this on down here into the new form, so what we've done here is created a power app with multiple pages
43:57
This will come in and on the initial setup of the classroom information, it gathers up, you know, things like class title
44:06
gathers up the information for the trainer name, and then the class description, and they can attach any items that they want to for courseware
44:14
And then over here on the next page, as I move into my edit screen
44:18
so suppose that an instructor wants to come back, and in the next page they want to make a change
44:24
So this is where they would enter in their notification text in this notification field
44:28
pop on some notification tests, and then text them and say, yes, I'd like to notify my users of the changes
44:34
This yes will trigger off that workflow process to then send out the email notification to everybody that's registered
44:41
Well, that begs the question, right, of, well, where's the registration actually happening
44:46
If in this list we are on, we're looking at the courseware catalog
44:51
we also set up a button that says in here the display screen
44:57
We have a button in here that says register for the class. This register for class button, when users go to the list or the course catalog list
45:06
where they can actually see these Power Apps rendered with the course information
45:11
The display screen is going to show them, hey, there's a maximum number of seats. There's some remaining seats
45:15
Here's the link to all the curriculum information. Here's the details about this course. And then we present for them a button that says register for this class
45:23
This registration kicks the user with a deep linking out to the class registration application
45:30
and includes with it the class title so that that class registration form will pick up on
45:36
what class are they wanting to register for and default all those fields for them as they step in
45:43
So deep linking is really handy here where I can take source information of instructor or we took
45:50
source information for what class item or what class information we wanted to carry forward into
45:56
registration. So the users come through, they click this, this form is the class registration
46:02
Now our class registration process tracks to a different SharePoint list also to keep within the
46:06
SKU. So it's reading and writing from SharePoint lists for all the data structure. And on on start
46:12
this one reads in certain parameters as it's going through and setting up a bunch of variables
46:16
for us to use as global variables on the app on start action. So we read in from the query
46:23
string parameters, I'm going to read in what's the ID of the current item. If I'm new, I come
46:29
through as a zero. If I'm editing an existing registration, I would come through and gather
46:33
that up from the URL. And then I gather my class info into another variable that I key off of when
46:39
I'm setting. Oops, sorry, shrink this up. When I actually set the class name. So this is a lookup
46:45
back to that other SharePoint list with the class information in it for the courseware catalog
46:50
and it sets the ID of that from the URL query string
46:54
It sets that class up for me. So I've already got that defaulted
46:58
when I click the enter for registration button. They can change it if they'd like to
47:02
but it's a nice thing for them in that process automation or optimization
47:07
We're talking about, gosh, what are the niceties that you could do with this new tool rather than
47:11
hey, HTML form for registering for a class needs to go and type it in every time
47:16
or InfoPath even go and figure it out and filter it. They wanted the option to default it for which class they came into
47:23
So it's a nice conversation to have for process automation. We set that default value based on the query string value that was passed in
47:30
Another option that we do here that was nice for them was, hey, I'd love this form to default to the user that's actually filling it out
47:37
but then provide them the ability they could change it. So if on my app on start, what we do here, I'm going to go back to that
47:44
On the app on start, we read in the current user. We do that through the Graph API hookups here where we're talking to the connector for SharePoint list expansion and we gather up the current user
47:56
And then we also, I'm sorry, not SharePoint list expander. It's the person Office 365
48:02
There we go. So we're gathering this up from a user attribution
48:08
And then likewise with the user's email, we can determine. So this is a people picker
48:13
People picker works similar to Lookup-ish, right? It's a special field that requires the data construct for the record in that field to be set for people pickers
48:24
It's what's your claim? What's your name? How does it display, et cetera
48:30
So when I'm looking at that, this form gathers by default, calls up to graph and says, hey, who am I
48:36
Go look at my information in graph. Go get that through the connector, Azure Connectors
48:41
and then I pull back that information and set that as a record into my participant field for
48:48
the default user. Now, again, they can change it if they'd like to. That was the business
48:52
requirement. Maybe it should default to them registering themselves, but maybe they want to
48:57
register for somebody else, so they can change that field if they needed to. And then a supervisor
49:03
is another field that's similar, where for the supervisor, once the participant is set and the
49:09
value is determined for the people picker of who's participating, who's the students, this business requirement said
49:17
hey can you also go and fetch my supervisor We changed that up a little bit This is actually using the Office 365 connector through Graph And then on the Office 365 connector if you read this a little bit backwards right
49:32
So I say, what's my current user's email? We set that with a variable
49:36
When we've looked them up as the current person or the person in the participant field
49:41
we set that value to be what into another field. and then we read from that one to gather the text of that so this manager says hey listen i want you
49:53
to look up the manager of the user that was selected as the participant look up the manager
50:00
and then gather their attribution so i can gather their mail directly so this office 365 users
50:06
manager of user is really the object that i'm looking for and the attribute about that object
50:14
is their mail and or their display name and or their mail again. So we build another record
50:21
here for people picker and we inject that directly into this supervisor field. Come on
50:28
shrink up for me, click the buttons. So then that goes in here into the supervisor people picker also
50:35
So real handy, you know, just some nuanced tricks. Again, having the conversation with them for
50:41
process optimization was key because we didn't have to again go back and forth with email we
50:46
didn't have to have a telephone conversation anymore a lot of this is built directly into
50:51
the application now you did hear me say earlier okay so so we create a class information that's
50:56
set up in a course catalog list where my course information lives the users can go off and create
51:02
a registration when they create this when they click the submit button here it registers them
51:07
for the class and you can see they have the option it defaults to enroll because they came into the
51:13
form from enrollment but once it's created they could come back and edit later to say hey i need
51:18
to withdraw from this class all right so this record is going to write into another sharepoint
51:23
list where we're tracking all the course registrations for all of our our students
51:28
what uh which we track which are enrolled and which are withdrawn when they enroll i need that
51:33
to reach back to my course information and update how many seats are remaining on this class how
51:39
many how many seats are still available so we do that with flow as well uh power automate flows as
51:45
well so when a class registration is created we do a couple of different checks here so on a
51:52
creation the assumption is that i'm creating a brand new one i usually would not create
51:57
and during process discussions with the organization, we said, no, no, it wouldn't be
52:03
it wouldn't ever come in and say, I'm going to create a brand new one and start with a withdrawal
52:08
That wouldn't make any sense. They want to come and create a brand new registration that's going to come in to enroll
52:12
So it's an assumed, right, that through our documented process with the business
52:16
the assumption is there, it's valid, in that the class course registration creation
52:23
would by default assume it's new and I'm going to enroll. So with that assumption, we go in and we take a look at the property for the enrollment
52:38
We look up the course, the class information. We pull up the class information for that specific class that they're registering for
52:46
And then we do a little bit of math here to increment or decrement
52:51
So on course registration, we are incrementing the number of registered users
52:57
And then when I'm pulling this into my remaining seats, this is a calculated column on the SharePoint list to let SharePoint do some of the hard math for us, right
53:05
Let it do all the hard work. SharePoint calculated columns are fantastic for take the details, take the hard work, do the hard stuff for me
53:12
And then I can render that stuff in the records when I'm showing my Power App in the display mode
53:18
So as we edit this one here, I'm incrementing a column. I simply pull up the current number of registered users
53:24
and then I increment that by one, and then I save that right back to that record. So I update my class information
53:30
with the number of currently registered users. Calculated column does the hard math for me to say
53:35
hey, how many seats are left? Which isn't really all that hard, but, you know, it's calculated column
53:39
Let it do the work. So then the seats remaining gets decremented by one
53:45
So the calculation takes the number of seats total minus the number of seats registered and shows me the remaining
53:52
Conversely, yeah, go ahead. Just because the other one ran a little long, I dropped for a meeting
54:00
I know that I think I have more slides. You probably got that. Thank you guys for inviting me
54:07
And Richard, great job as always. I'll talk to you guys soon. Thanks. See you
54:11
See ya. So conversely, we have this similar process where we actually decrement that variable
54:18
So when they come in and they are edited a workflow now, so our action on this one is edit, not create
54:24
So when an item is created or modified, excuse me, when an item or file is modified, I come in, I assume that this is being modified now, and I can make some logical decisions on the modification
54:33
this is expansive on on our dev environment here we kept it pretty simple but now you're in the
54:41
modification mode and you can pick out any of the data that's in that field or in any of the fields
54:46
on that record and get crazy on making logical decisions we're simply leaving this down to I
54:53
need to decrement the value for the registered users so go look it up again what's my class id
54:57
go grab the class id then I'm going to edit I want to reach in and touch the field that says
55:03
the number of decremented seat count for registered users, and I'm going to decrement that value
55:13
by one again and then write that back into the column for that class. So I do an update back to
55:19
that one. All right, so that's the forms and flows behind this one on our class registration
55:27
Are there any questions? I think I don't see anything in the in the chats here, but I think
55:32
where if you do have questions, feel free to toss them through or reach out to Stacey and I
55:37
I'm going to pop back, I think, in the interest of time. And let's switch back over to our slides


