Architecting Scalable SharePoint Automation

Mirko PetersPodcasts2 weeks ago94 Views


1
00:00:00,000 –> 00:00:02,400
Most organizations assume SharePoint automation scales

2
00:00:02,400 –> 00:00:04,040
because it’s in the platform.

3
00:00:04,040 –> 00:00:06,240
They are wrong, the UI makes it feel small,

4
00:00:06,240 –> 00:00:08,160
one library, one button, one approval,

5
00:00:08,160 –> 00:00:09,440
but the moment you automate,

6
00:00:09,440 –> 00:00:11,360
you’ve built an enterprise control plane

7
00:00:11,360 –> 00:00:14,240
that executes decisions, changes permissions,

8
00:00:14,240 –> 00:00:16,880
and moves data across compliance boundaries.

9
00:00:16,880 –> 00:00:20,080
In the next hour, this becomes obvious.

10
00:00:20,080 –> 00:00:22,120
How quick steps, workflows, and agents

11
00:00:22,120 –> 00:00:23,600
actually behave at scale,

12
00:00:23,600 –> 00:00:27,240
and how identity, labels, DLP and observability,

13
00:00:27,240 –> 00:00:30,080
either enforced intent, or let entropy win.

14
00:00:30,080 –> 00:00:32,880
Stop thinking features, start thinking systems.

15
00:00:32,880 –> 00:00:34,520
The foundational misunderstanding,

16
00:00:34,520 –> 00:00:37,360
SharePoint is a workflow surface, not a repository.

17
00:00:37,360 –> 00:00:39,520
The foundational mistake is treating SharePoint

18
00:00:39,520 –> 00:00:41,520
like a place where files live.

19
00:00:41,520 –> 00:00:44,560
Architecturally, SharePoint is a workflow surface.

20
00:00:44,560 –> 00:00:47,840
Content plus metadata plus permissions plus policy,

21
00:00:47,840 –> 00:00:50,520
all sitting in front of a distributed execution engine.

22
00:00:50,520 –> 00:00:53,160
That sounds abstract, but it explains almost every,

23
00:00:53,160 –> 00:00:54,720
we didn’t expect that incident

24
00:00:54,720 –> 00:00:56,400
an enterprise has with automation.

25
00:00:56,400 –> 00:00:59,240
Document library is not a folder tree with version history.

26
00:00:59,240 –> 00:01:00,320
It’s an event source.

27
00:01:00,320 –> 00:01:03,880
Every upload, edit, metadata update, approval change,

28
00:01:03,880 –> 00:01:06,120
sharing link and access request is a signal

29
00:01:06,120 –> 00:01:08,080
you can wire into power automate,

30
00:01:08,080 –> 00:01:10,840
graph subscriptions, logic apps, functions,

31
00:01:10,840 –> 00:01:12,480
or an agent experience.

32
00:01:12,480 –> 00:01:15,240
The second you do that, the blast radius changes.

33
00:01:15,240 –> 00:01:17,360
A simple flow isn’t just sending an email,

34
00:01:17,360 –> 00:01:19,640
it’s now an integration between identity policy

35
00:01:19,640 –> 00:01:21,480
and data movement running at machine speed

36
00:01:21,480 –> 00:01:24,640
without the human friction that used to slow mistakes down.

37
00:01:24,640 –> 00:01:26,800
This is why automation sprawl is inevitable

38
00:01:26,800 –> 00:01:28,280
if you don’t design for it.

39
00:01:28,280 –> 00:01:30,440
SharePoint makes it easy to add triggers.

40
00:01:30,440 –> 00:01:32,520
Teams makes it easy to add notifications.

41
00:01:32,520 –> 00:01:34,720
Power automate makes it easy to glue it together.

42
00:01:34,720 –> 00:01:37,120
And then the organization wakes up six months later

43
00:01:37,120 –> 00:01:39,080
with three versions of the same approval,

44
00:01:39,080 –> 00:01:41,320
seven different notify the channel workflows

45
00:01:41,320 –> 00:01:44,200
and an unspoken rule that nobody touches the flows

46
00:01:44,200 –> 00:01:46,400
because nobody knows which business process will break.

47
00:01:46,400 –> 00:01:47,520
That’s not a tooling failure.

48
00:01:47,520 –> 00:01:49,960
That’s what happens when execution grows faster than intent.

49
00:01:49,960 –> 00:01:51,400
Now layer in the new reality,

50
00:01:51,400 –> 00:01:54,480
deterministic automation versus probabilistic automation.

51
00:01:54,480 –> 00:01:56,320
Deterministic automation is the old model.

52
00:01:56,320 –> 00:01:58,400
The system follows explicit rules.

53
00:01:58,400 –> 00:02:01,280
If a file enters this library, set metadata,

54
00:02:01,280 –> 00:02:03,720
if status becomes approved, move it.

55
00:02:03,720 –> 00:02:07,160
If label equals confidential, block external sharing,

56
00:02:07,160 –> 00:02:10,280
boring, predictable, auditable.

57
00:02:10,280 –> 00:02:12,840
The kind of automation you can defend in an incident review

58
00:02:12,840 –> 00:02:15,880
because you can point to inputs, outputs, and logs.

59
00:02:15,880 –> 00:02:18,360
Probabilistic automation is the agent model.

60
00:02:18,360 –> 00:02:21,760
An agent reads context in first meaning chooses a next action

61
00:02:21,760 –> 00:02:23,560
and may do different things for two files

62
00:02:23,560 –> 00:02:25,120
that look similar to a human.

63
00:02:25,120 –> 00:02:26,240
The system becomes helpful,

64
00:02:26,240 –> 00:02:28,880
but you’ve traded a rules engine for a reasoning engine.

65
00:02:28,880 –> 00:02:31,200
That distinction matters because governance mechanisms

66
00:02:31,200 –> 00:02:32,880
designed for deterministic flows

67
00:02:32,880 –> 00:02:35,640
don’t automatically constrain probabilistic decisioning.

68
00:02:35,640 –> 00:02:37,320
They just make you feel like they do.

69
00:02:37,320 –> 00:02:39,920
So SharePoint isn’t becoming smarter automation.

70
00:02:39,920 –> 00:02:43,120
It’s becoming a place where decisions happen closer to the data.

71
00:02:43,120 –> 00:02:44,040
That’s powerful.

72
00:02:44,040 –> 00:02:46,440
It’s also how organizations accidentally build

73
00:02:46,440 –> 00:02:48,320
a parallel IT estate.

74
00:02:48,320 –> 00:02:50,600
Thousands of micro workflows embedded in sites,

75
00:02:50,600 –> 00:02:53,360
lists, libraries, chats, and personal environments,

76
00:02:53,360 –> 00:02:54,560
each one seems harmless.

77
00:02:54,560 –> 00:02:57,160
Collectively, they form an authorization graph

78
00:02:57,160 –> 00:02:59,680
and an execution graph you didn’t model, didn’t test,

79
00:02:59,680 –> 00:03:01,120
and can’t explain to an auditor.

80
00:03:01,120 –> 00:03:03,520
This is where the workflow surface idea clicks.

81
00:03:03,520 –> 00:03:05,320
SharePoint is the user-facing layer

82
00:03:05,320 –> 00:03:08,280
where business intent gets translated into machine action.

83
00:03:08,280 –> 00:03:10,040
Quick steps turn a column into a button,

84
00:03:10,040 –> 00:03:12,600
approvals turn a pill-shaped status into a gate.

85
00:03:12,600 –> 00:03:14,440
Integrated workflow UX turns,

86
00:03:14,440 –> 00:03:17,280
I’m in this library, into pre-wired connectors and templates.

87
00:03:17,280 –> 00:03:19,360
And because it’s in context, people use it more.

88
00:03:19,360 –> 00:03:22,480
Usage goes up, volume goes up, variance goes up,

89
00:03:22,480 –> 00:03:24,480
and variance is where scale dies.

90
00:03:24,480 –> 00:03:26,200
Because what scales isn’t a flow?

91
00:03:26,200 –> 00:03:27,360
What scales is a pattern?

92
00:03:27,360 –> 00:03:29,920
Consistent eventing, consistent identity boundaries,

93
00:03:29,920 –> 00:03:31,560
consistent data classification,

94
00:03:31,560 –> 00:03:34,120
consistent enforcement, and consistent observability.

95
00:03:34,120 –> 00:03:35,720
Without that, you don’t have automation,

96
00:03:35,720 –> 00:03:37,040
you have conditional chaos.

97
00:03:37,040 –> 00:03:38,680
Here’s the uncomfortable truth.

98
00:03:38,680 –> 00:03:41,720
If you let SharePoint automation evolve organically,

99
00:03:41,720 –> 00:03:43,360
you will eventually lose the ability

100
00:03:43,360 –> 00:03:44,920
to answer basic questions.

101
00:03:44,920 –> 00:03:46,280
Who can trigger this action?

102
00:03:46,280 –> 00:03:47,960
Which identity performs the right?

103
00:03:47,960 –> 00:03:49,480
Where does the data go next?

104
00:03:49,480 –> 00:03:50,800
What policy was evaluated?

105
00:03:50,800 –> 00:03:52,800
What evidence exists that it happened correctly?

106
00:03:52,800 –> 00:03:54,920
If you can’t answer those, you are not operating

107
00:03:54,920 –> 00:03:56,120
a workflow platform.

108
00:03:56,120 –> 00:03:57,400
You are operating a rumor.

109
00:03:57,400 –> 00:03:59,520
So the goal of this blueprint is not to teach buttons

110
00:03:59,520 –> 00:04:00,520
or templates.

111
00:04:00,520 –> 00:04:03,360
It’s to define the building blocks before you choose tools.

112
00:04:03,360 –> 00:04:06,840
What SharePoint emits as events, how decisions should be made,

113
00:04:06,840 –> 00:04:08,120
where orchestration should live,

114
00:04:08,120 –> 00:04:11,120
and how enforcement survives human creativity.

115
00:04:11,120 –> 00:04:12,520
Once that model is clear,

116
00:04:12,520 –> 00:04:15,360
Quick steps and agents stop being cool features.

117
00:04:15,360 –> 00:04:17,320
They become controlled interfaces to a system

118
00:04:17,320 –> 00:04:18,600
you can actually run.

119
00:04:18,600 –> 00:04:22,080
The modern automation stack Quick steps approvals flows agents.

120
00:04:22,080 –> 00:04:24,680
SharePoint’s modern automation stack looks simple

121
00:04:24,680 –> 00:04:27,160
because Microsoft intentionally hit the wiring.

122
00:04:27,160 –> 00:04:28,200
That’s the selling point.

123
00:04:28,200 –> 00:04:29,080
It’s also the risk.

124
00:04:29,080 –> 00:04:31,480
So the only sane way to talk about Quick steps,

125
00:04:31,480 –> 00:04:35,040
approvals workflows and agents is this layers of the same system.

126
00:04:35,040 –> 00:04:37,640
An action surface, a gate, an orchestration engine,

127
00:04:37,640 –> 00:04:40,520
and an interface that pretends it isn’t an interface.

128
00:04:40,520 –> 00:04:43,080
Start with Quick steps.

129
00:04:43,080 –> 00:04:45,000
Quick steps are the Ingrid action layer.

130
00:04:45,000 –> 00:04:47,800
Repeatable actions exposed where the work happens.

131
00:04:47,800 –> 00:04:50,000
Directly on list items and files.

132
00:04:50,000 –> 00:04:52,520
People used to do this with custom column formatting

133
00:04:52,520 –> 00:04:53,520
and JSON buttons.

134
00:04:53,520 –> 00:04:55,560
Now it’s a first class column type.

135
00:04:55,560 –> 00:04:57,840
And it matters because the grid is where users live.

136
00:04:57,840 –> 00:05:00,240
If an action sits in the ribbon, it’s optional.

137
00:05:00,240 –> 00:05:03,560
If it sits next to the file, it becomes the way we do things.

138
00:05:03,560 –> 00:05:06,280
The simple version is Quick steps remove friction.

139
00:05:06,280 –> 00:05:07,880
They also remove deliberation.

140
00:05:07,880 –> 00:05:10,040
A Quick step can set a value, move a file,

141
00:05:10,040 –> 00:05:11,880
draft an email, start a team’s chat,

142
00:05:11,880 –> 00:05:14,960
and this is the one that changes the game, execute a flow.

143
00:05:14,960 –> 00:05:17,840
And Microsoft explicitly called out that execute flow quick steps

144
00:05:17,840 –> 00:05:20,160
don’t have to be constrained to the default environment.

145
00:05:20,160 –> 00:05:22,920
That means the button in the library can trigger automation.

146
00:05:22,920 –> 00:05:25,200
You’re not even mentally associating with that site.

147
00:05:25,200 –> 00:05:28,480
That distinction matters because you’re no longer governing flows.

148
00:05:28,480 –> 00:05:30,160
You’re governing invocation points.

149
00:05:30,160 –> 00:05:32,360
Next layer, lightweight approvals.

150
00:05:32,360 –> 00:05:34,600
These approvals live in the list or library

151
00:05:34,600 –> 00:05:36,800
presented as a pill-shaped status column.

152
00:05:36,800 –> 00:05:39,080
Admin’s or owners can enable them with a toggle

153
00:05:39,080 –> 00:05:40,800
and then define default approvals.

154
00:05:40,800 –> 00:05:42,760
They can even stage and sequence those approvals.

155
00:05:42,760 –> 00:05:45,200
So the approval happens in an assigned order.

156
00:05:45,200 –> 00:05:46,600
The UX feels harmless.

157
00:05:46,600 –> 00:05:47,440
Click Submit.

158
00:05:47,440 –> 00:05:50,240
A team’s notification goes out and the status updates.

159
00:05:50,240 –> 00:05:52,560
But architecturally, you’ve just created a state machine

160
00:05:52,560 –> 00:05:53,760
embedded in metadata.

161
00:05:53,760 –> 00:05:54,600
And that’s the value.

162
00:05:54,600 –> 00:05:56,760
It keeps the workflow state with the item,

163
00:05:56,760 –> 00:05:58,960
instead of scattering it across email threads,

164
00:05:58,960 –> 00:06:01,080
teams chats, and personal spreadsheets.

165
00:06:01,080 –> 00:06:03,840
It also creates a consistent governance surface.

166
00:06:03,840 –> 00:06:06,680
Approval requested, pending, approved, rejected.

167
00:06:06,680 –> 00:06:09,280
That’s something you can audit, something you can query,

168
00:06:09,280 –> 00:06:10,920
something you can enforce downstream.

169
00:06:10,920 –> 00:06:14,240
But don’t confuse, built in with enterprise grade by default.

170
00:06:14,240 –> 00:06:17,320
Approval routing still depends on identity and permissions.

171
00:06:17,320 –> 00:06:20,080
Approval selection still creates an implicit authorization

172
00:06:20,080 –> 00:06:20,680
model.

173
00:06:20,680 –> 00:06:22,760
And the moment someone asks for exceptions,

174
00:06:22,760 –> 00:06:25,560
this library needs a different approver for this client,

175
00:06:25,560 –> 00:06:28,680
or skip step two if it’s under $5,000.

176
00:06:28,680 –> 00:06:31,320
You’re back to the same question, where does branching logic

177
00:06:31,320 –> 00:06:32,800
live and who owns it?

178
00:06:32,800 –> 00:06:35,040
Now the workflows, UX-spont Microsoft

179
00:06:35,040 –> 00:06:37,040
is bringing the workflows app-style experience

180
00:06:37,040 –> 00:06:40,040
into SharePoint, templates, and a build from scratch path,

181
00:06:40,040 –> 00:06:42,680
directly in the context of a list or library.

182
00:06:42,680 –> 00:06:45,120
The selling point is that connections are pre-configured.

183
00:06:45,120 –> 00:06:47,760
It already knows where you are, what the list is,

184
00:06:47,760 –> 00:06:48,920
what the trigger should be.

185
00:06:48,920 –> 00:06:51,640
So makers don’t have to do the sign-in, pick-side,

186
00:06:51,640 –> 00:06:54,320
pick-library dance that convenience is not cosmetic.

187
00:06:54,320 –> 00:06:55,840
It’s an acceleration mechanism.

188
00:06:55,840 –> 00:06:57,440
More people can build automations.

189
00:06:57,440 –> 00:06:58,800
More automations will exist.

190
00:06:58,800 –> 00:07:01,000
And more of them will be created by the people

191
00:07:01,000 –> 00:07:03,880
least equipped to think about blast radius, error handling,

192
00:07:03,880 –> 00:07:04,880
and long-term ownership.

193
00:07:04,880 –> 00:07:06,400
That’s not a criticism of makers.

194
00:07:06,400 –> 00:07:09,080
That’s the predictable outcome of lowering the barrier.

195
00:07:09,080 –> 00:07:11,000
Also, the templates are Microsoft provided,

196
00:07:11,000 –> 00:07:13,280
and you can’t necessarily modify the internal structure

197
00:07:13,280 –> 00:07:13,880
of a template.

198
00:07:13,880 –> 00:07:14,520
So what happens?

199
00:07:14,520 –> 00:07:16,920
People start from scratch when the template doesn’t fit.

200
00:07:16,920 –> 00:07:19,560
And start from scratch is where abstraction ends

201
00:07:19,560 –> 00:07:21,720
and flow complexity begins.

202
00:07:21,720 –> 00:07:25,600
Loops, parallel branches, throttling, connector limits,

203
00:07:25,600 –> 00:07:27,920
and those quiet failures nobody notices

204
00:07:27,920 –> 00:07:31,320
until finance asks why invoices didn’t move for three days.

205
00:07:31,320 –> 00:07:32,720
Now, the agent layer.

206
00:07:32,720 –> 00:07:35,840
Every SharePoint site effectively gains

207
00:07:35,840 –> 00:07:37,640
an agent-shaped interface,

208
00:07:37,640 –> 00:07:39,360
a site-specific knowledge surface

209
00:07:39,360 –> 00:07:43,040
that can answer questions grounded in what the user can access.

210
00:07:43,040 –> 00:07:44,440
Then you get higher-order patterns,

211
00:07:44,440 –> 00:07:47,000
a knowledge agent that helps curate, tag, and structure

212
00:07:47,000 –> 00:07:49,760
content, and an admin agent that watches for oversharing

213
00:07:49,760 –> 00:07:51,720
inactive sites and permissions brawl.

214
00:07:51,720 –> 00:07:53,600
Agents are not the automation engine.

215
00:07:53,600 –> 00:07:55,560
They are the front door to the automation engine.

216
00:07:55,560 –> 00:07:58,200
They turn, “I need to do a thing into a guided action

217
00:07:58,200 –> 00:08:00,560
or a triggered workflow or a routed approval,”

218
00:08:00,560 –> 00:08:03,000
which is great until you treat them as the back end.

219
00:08:03,000 –> 00:08:03,520
Don’t.

220
00:08:03,520 –> 00:08:04,880
The agent is where humans ask.

221
00:08:04,880 –> 00:08:07,720
Deterministic orchestration is where the enterprise executes.

222
00:08:07,720 –> 00:08:11,040
So the modern stack is coherent if you see it as one pipeline.

223
00:08:11,040 –> 00:08:13,680
Quick steps and workflows provide the user’s handholds,

224
00:08:13,680 –> 00:08:16,480
approvals provide lightweight state, power automate,

225
00:08:16,480 –> 00:08:18,400
and as you provide execution,

226
00:08:18,400 –> 00:08:20,800
and agents provide the conversational wrapper.

227
00:08:20,800 –> 00:08:22,160
And when you standardize that model,

228
00:08:22,160 –> 00:08:24,000
the feature list stops being exciting.

229
00:08:24,000 –> 00:08:25,200
It becomes governable.

230
00:08:25,200 –> 00:08:27,520
Conceptual flow for scale, event, reasoning,

231
00:08:27,520 –> 00:08:28,880
orchestration, enforcement.

232
00:08:28,880 –> 00:08:30,840
Scale starts with a boring question.

233
00:08:30,840 –> 00:08:32,280
What exactly happened?

234
00:08:32,280 –> 00:08:33,960
Not what did the user want?

235
00:08:33,960 –> 00:08:36,320
Not what does the business process say?

236
00:08:36,320 –> 00:08:37,880
What happened in the system that you can point

237
00:08:37,880 –> 00:08:39,400
to, subscribe to, and replay?

238
00:08:39,400 –> 00:08:41,560
That’s the event.

239
00:08:41,560 –> 00:08:45,200
In SharePoint land, events come from a few predictable places.

240
00:08:45,200 –> 00:08:49,000
A file was created, updated, moved, or deleted.

241
00:08:49,000 –> 00:08:52,080
Metadata changed, an approval state changed,

242
00:08:52,080 –> 00:08:55,040
a sharing link was created, permissions changed,

243
00:08:55,040 –> 00:08:58,080
a page was published, a list item changed.

244
00:08:58,080 –> 00:09:00,360
The UI hides that these are all distinct signals

245
00:09:00,360 –> 00:09:02,520
with different reliability characteristics.

246
00:09:02,520 –> 00:09:05,360
Some are clean and transactional, some are noisy.

247
00:09:05,360 –> 00:09:07,080
Some fire more often than you think

248
00:09:07,080 –> 00:09:09,320
because auto-save and metadata normalization

249
00:09:09,320 –> 00:09:10,320
count as updates.

250
00:09:10,320 –> 00:09:12,800
But if you treat every update as the business event,

251
00:09:12,800 –> 00:09:15,680
you build a denial of service attack against your own automation.

252
00:09:15,680 –> 00:09:19,280
So the first scaling law is decide what event you actually care about,

253
00:09:19,280 –> 00:09:21,040
then make it stable, for example.

254
00:09:21,040 –> 00:09:23,120
File created is usually stable.

255
00:09:23,120 –> 00:09:25,960
File modified is chaos, unless you constrain it

256
00:09:25,960 –> 00:09:28,880
with conditions like status change from draft to submitted

257
00:09:28,880 –> 00:09:30,840
or approval status changed.

258
00:09:30,840 –> 00:09:32,680
Metadata transitions are your friend

259
00:09:32,680 –> 00:09:35,360
because they represent intent, not activity.

260
00:09:35,360 –> 00:09:36,880
The event is the edge of your system.

261
00:09:36,880 –> 00:09:40,320
If the edge is fuzzy, everything behind it becomes expensive.

262
00:09:40,320 –> 00:09:41,920
Next comes reasoning.

263
00:09:41,920 –> 00:09:44,120
Re reasoning is where most flows quietly rot

264
00:09:44,120 –> 00:09:46,920
because makers mix decisions and actions into one blob.

265
00:09:46,920 –> 00:09:48,880
They check metadata, look up a user,

266
00:09:48,880 –> 00:09:52,080
branch three times, send two approvals, and then move content.

267
00:09:52,080 –> 00:09:53,480
It works until it doesn’t.

268
00:09:53,480 –> 00:09:56,280
And then nobody can tell whether the failure came from bad input,

269
00:09:56,280 –> 00:09:58,680
bad policy, or a transient connector issue.

270
00:09:58,680 –> 00:10:01,560
Re reasoning should be treated like a policy evaluation step.

271
00:10:01,560 –> 00:10:04,600
Interpret metadata, validate required fields,

272
00:10:04,600 –> 00:10:07,720
map the item to a classification, decide routing,

273
00:10:07,720 –> 00:10:09,960
and decide whether the action is allowed.

274
00:10:09,960 –> 00:10:12,920
This can be simple rules like if department equals finance,

275
00:10:12,920 –> 00:10:15,800
root to finance approvals, or more advanced checks

276
00:10:15,800 –> 00:10:19,800
like if label is confidential block external share requests.

277
00:10:19,800 –> 00:10:22,400
If you’re using agents, this is also where you cage them.

278
00:10:22,400 –> 00:10:25,160
The agent can suggest but the reasoning layer decides.

279
00:10:25,160 –> 00:10:26,080
Here’s the weird part.

280
00:10:26,080 –> 00:10:28,360
Re reasoning doesn’t have to run where execution runs.

281
00:10:28,360 –> 00:10:30,320
Re reasoning can run in a controlled service

282
00:10:30,320 –> 00:10:31,880
with a version rule set.

283
00:10:31,880 –> 00:10:33,040
It can run in a function.

284
00:10:33,040 –> 00:10:34,520
It can even run in a flow.

285
00:10:34,520 –> 00:10:35,640
But it has to be separable.

286
00:10:35,640 –> 00:10:37,480
You want to be able to test it, change it,

287
00:10:37,480 –> 00:10:39,520
and audit it without rewriting the whole workflow.

288
00:10:39,520 –> 00:10:42,200
In other words, separate decision from execution.

289
00:10:42,200 –> 00:10:43,200
Then comes orchestration.

290
00:10:43,200 –> 00:10:45,440
Orchestration is not run these steps.

291
00:10:45,440 –> 00:10:48,040
Orchestration is coordinate work that might fail,

292
00:10:48,040 –> 00:10:50,760
might take time, and might run more than once.

293
00:10:50,760 –> 00:10:52,640
At enterprise volume, every workflow

294
00:10:52,640 –> 00:10:56,120
becomes distributed systems work, whether you admit it or not.

295
00:10:56,120 –> 00:10:58,320
You need fan-out because one event can trigger

296
00:10:58,320 –> 00:10:59,760
multiple downstream actions.

297
00:10:59,760 –> 00:11:03,480
Notify teams, update a list, set a label, create a task,

298
00:11:03,480 –> 00:11:04,480
call an API.

299
00:11:04,480 –> 00:11:06,520
You need async because long-running approvals

300
00:11:06,520 –> 00:11:08,600
and content conversions don’t fit neatly

301
00:11:08,600 –> 00:11:10,440
into a single synchronous run.

302
00:11:10,440 –> 00:11:13,200
You need queues because SharePoint and Graph will throttle you,

303
00:11:13,200 –> 00:11:15,680
and Power Automate will hit concurrency reality.

304
00:11:15,680 –> 00:11:17,520
You need retreatries because transient failures

305
00:11:17,520 –> 00:11:18,920
are not bugs, they’re physics.

306
00:11:18,920 –> 00:11:21,520
And you need identity because duplicates will happen.

307
00:11:21,520 –> 00:11:25,080
Users re-upload, events refire, flows get retried,

308
00:11:25,080 –> 00:11:26,760
subscriptions get revalidated.

309
00:11:26,760 –> 00:11:29,320
Ident potency is the difference between we retried

310
00:11:29,320 –> 00:11:31,040
and we duplicated the project site

311
00:11:31,040 –> 00:11:32,720
and nobody noticed until billing.

312
00:11:32,720 –> 00:11:35,520
So orchestration at scale looks like this.

313
00:11:35,520 –> 00:11:38,440
Receive the event, stamp it with an identity key,

314
00:11:38,440 –> 00:11:40,440
in queue work, process it with workers

315
00:11:40,440 –> 00:11:43,200
that can retry safely, and record state transitions

316
00:11:43,200 –> 00:11:45,240
somewhere that isn’t someone’s memory.

317
00:11:45,240 –> 00:11:46,680
Power Automate can do some of that.

318
00:11:46,680 –> 00:11:48,680
Logic apps and functions do it more predictably.

319
00:11:48,680 –> 00:11:50,520
Either way, the architecture has to acknowledge

320
00:11:50,520 –> 00:11:52,480
that the happy path is not the common path.

321
00:11:52,480 –> 00:11:54,600
Finally, enforcement.

322
00:11:54,600 –> 00:11:57,320
Enforcement is where governance stops being a PDF

323
00:11:57,320 –> 00:11:58,920
and becomes runtime behavior.

324
00:11:58,920 –> 00:12:02,120
Set or validate permissions, apply sensitivity labels,

325
00:12:02,120 –> 00:12:05,280
enforce retention, evaluate DLP, log actions,

326
00:12:05,280 –> 00:12:06,640
and emit audit evidence.

327
00:12:06,640 –> 00:12:07,960
This is where you close the loop

328
00:12:07,960 –> 00:12:10,360
between we decided and the system did.

329
00:12:10,360 –> 00:12:12,560
Enforcement also means writing back to SharePoint

330
00:12:12,560 –> 00:12:15,000
in a way that keeps the item as the source of truth.

331
00:12:15,000 –> 00:12:17,240
Update metadata to reflect the outcome.

332
00:12:17,240 –> 00:12:19,240
Store the approval state with the document,

333
00:12:19,240 –> 00:12:21,320
record who approved, and ensure the label

334
00:12:21,320 –> 00:12:23,480
and sharing posture match the policy.

335
00:12:23,480 –> 00:12:25,480
If your enforcement happens only in email

336
00:12:25,480 –> 00:12:27,880
or team’s notifications, you’ve built theater.

337
00:12:27,880 –> 00:12:29,320
Auditors don’t accept theater,

338
00:12:29,320 –> 00:12:32,720
so the scalable model is deterministic, event triggers.

339
00:12:32,720 –> 00:12:34,840
Reasoning decides orchestration coordinates

340
00:12:34,840 –> 00:12:36,040
enforcement makes it real,

341
00:12:36,040 –> 00:12:37,280
and if any one of those is missing,

342
00:12:37,280 –> 00:12:39,640
you don’t get a slightly weaker automation.

343
00:12:39,640 –> 00:12:40,960
You get drift.

344
00:12:40,960 –> 00:12:43,240
And drift always wins until you design the system,

345
00:12:43,240 –> 00:12:44,640
so it can’t.

346
00:12:44,640 –> 00:12:47,320
Tooling decision matrix, what to standardize,

347
00:12:47,320 –> 00:12:48,440
what to forbid.

348
00:12:48,440 –> 00:12:50,760
Now you pick tools, and this is where most enterprises

349
00:12:50,760 –> 00:12:52,880
sabotage themselves, because they turn a platform

350
00:12:52,880 –> 00:12:55,160
into a personal preference contest.

351
00:12:55,160 –> 00:12:56,200
What do you like more?

352
00:12:56,200 –> 00:12:58,000
Power Automate or Logic Apps?

353
00:12:58,000 –> 00:12:58,960
Is the wrong question?

354
00:12:58,960 –> 00:13:01,360
The right question is, what class of work is this

355
00:13:01,360 –> 00:13:03,400
and what failure modes are acceptable?

356
00:13:03,400 –> 00:13:06,080
Because every automation tool is a bundle of trade-offs.

357
00:13:06,080 –> 00:13:10,040
Throughput, latency, auditability, deployment control,

358
00:13:10,040 –> 00:13:11,360
and who’s allowed to touch it.

359
00:13:11,360 –> 00:13:13,680
Start with Power Automate Cloud Flows.

360
00:13:13,680 –> 00:13:16,440
Power Automate is the default for business automation

361
00:13:16,440 –> 00:13:19,760
because it’s close to the user and rich in connectors.

362
00:13:19,760 –> 00:13:22,000
It’s also where simple becomes fragile.

363
00:13:22,000 –> 00:13:23,760
The moment you cross from a team’s workload

364
00:13:23,760 –> 00:13:26,480
into an enterprise workload, concurrency limits,

365
00:13:26,480 –> 00:13:29,400
connector throttling, long-running approval behavior,

366
00:13:29,400 –> 00:13:31,000
and run history retention realities

367
00:13:31,000 –> 00:13:32,040
don’t show up in the demo.

368
00:13:32,040 –> 00:13:33,800
They show up when you have 10,000 items

369
00:13:33,800 –> 00:13:35,320
in a Monday morning spike.

370
00:13:35,320 –> 00:13:37,240
So the standardization rule is strict.

371
00:13:37,240 –> 00:13:39,680
Use Power Automate for human-centric workflows

372
00:13:39,680 –> 00:13:41,720
with bounded volume and clear ownership.

373
00:13:41,720 –> 00:13:45,120
Notifications, approvals, basic metadata updates,

374
00:13:45,120 –> 00:13:48,160
small fan-out, anything that benefits from being maintained

375
00:13:48,160 –> 00:13:50,320
by a maker community under governance.

376
00:13:50,320 –> 00:13:52,120
And the forbid list is equally strict.

377
00:13:52,120 –> 00:13:54,080
Don’t use Power Automate as the backbone

378
00:13:54,080 –> 00:13:57,720
for high-volume event processing, bulk content transformations,

379
00:13:57,720 –> 00:14:01,440
or anything that must run like a service with predictable throughput.

380
00:14:01,440 –> 00:14:04,640
Also, forbid personal flows as production dependencies.

381
00:14:04,640 –> 00:14:08,000
A workflow that matters can’t be owned by whoever built it first.

382
00:14:08,000 –> 00:14:10,280
Next, Webhooks Plus Microsoft Graph.

383
00:14:10,280 –> 00:14:11,680
This is the event-driven backbone

384
00:14:11,680 –> 00:14:13,680
when you care about scale and latency.

385
00:14:13,680 –> 00:14:15,960
Graph subscriptions and change notifications

386
00:14:15,960 –> 00:14:18,760
give you a clean, something change signal without polling,

387
00:14:18,760 –> 00:14:21,280
and you can root those signals into real compute.

388
00:14:21,280 –> 00:14:23,960
The upside is obvious, low latency, high volume,

389
00:14:23,960 –> 00:14:26,280
and architecture that looks like an actual system

390
00:14:26,280 –> 00:14:28,160
instead of a collection of runs.

391
00:14:28,160 –> 00:14:29,320
The downside is also obvious.

392
00:14:29,320 –> 00:14:32,560
You now own code, hosting, authentication, and life cycle,

393
00:14:32,560 –> 00:14:33,360
which is fine.

394
00:14:33,360 –> 00:14:34,600
Enterprises already own code.

395
00:14:34,600 –> 00:14:37,160
They just pretend they don’t when they call it low code.

396
00:14:37,160 –> 00:14:40,320
So the standard here is use Webhooks and Graph

397
00:14:40,320 –> 00:14:42,840
when the event rate is high, when seconds matter,

398
00:14:42,840 –> 00:14:46,000
or when you need central control over triggering behavior.

399
00:14:46,000 –> 00:14:47,880
And forbid the anti-pattern where each department

400
00:14:47,880 –> 00:14:51,080
builds their own Graph listener, one listener per class of event,

401
00:14:51,080 –> 00:14:53,240
one pipeline, central ownership.

402
00:14:53,240 –> 00:14:54,880
Otherwise, you’re back to sprawl,

403
00:14:54,880 –> 00:14:56,520
just with prettier engineering.

404
00:14:56,520 –> 00:14:58,600
Then, as your functions versus logic apps,

405
00:14:58,600 –> 00:15:01,480
this is the compute first versus workflow first divide.

406
00:15:01,480 –> 00:15:04,200
Functions are for code that needs to execute fast,

407
00:15:04,200 –> 00:15:06,920
scale out aggressively, and be tested like software.

408
00:15:06,920 –> 00:15:08,480
Logic apps are for orchestration

409
00:15:08,480 –> 00:15:11,040
that needs connectors, durable state, built in retries,

410
00:15:11,040 –> 00:15:13,560
and operational visibility with less custom plumbing.

411
00:15:13,560 –> 00:15:16,120
In enterprise terms, functions are the sharp tool.

412
00:15:16,120 –> 00:15:17,800
Logic apps are the safer tool.

413
00:15:17,800 –> 00:15:20,120
Use functions for custom provisioning logic,

414
00:15:20,120 –> 00:15:22,360
transformations, complex validation,

415
00:15:22,360 –> 00:15:24,440
and anything where you want versioned code,

416
00:15:24,440 –> 00:15:26,720
unit tests, and predictable performance.

417
00:15:26,720 –> 00:15:29,160
Use logic apps when you need durable orchestration

418
00:15:29,160 –> 00:15:30,240
across systems.

419
00:15:30,240 –> 00:15:33,320
Cues, retries, exception handling, long running processes,

420
00:15:33,320 –> 00:15:36,880
and integrations that benefit from a designed workflow graph.

421
00:15:36,880 –> 00:15:38,200
And here’s what you forbid.

422
00:15:38,200 –> 00:15:41,600
Don’t let functions versus logic apps become a religion.

423
00:15:41,600 –> 00:15:43,440
Standardize by workload.

424
00:15:43,440 –> 00:15:46,280
If you need a durable workflow with multiple systems,

425
00:15:46,280 –> 00:15:47,680
logic apps is the default.

426
00:15:47,680 –> 00:15:49,960
If you need custom compute that’s not a workflow,

427
00:15:49,960 –> 00:15:51,160
functions is the default.

428
00:15:51,160 –> 00:15:54,240
Mixing them is allowed only when the architecture forces it,

429
00:15:54,240 –> 00:15:56,120
not because someone likes writing JSON

430
00:15:56,120 –> 00:15:57,480
less than writing cperts.

431
00:15:57,480 –> 00:15:59,440
Now, co-pilot studio and agents, agents

432
00:15:59,440 –> 00:16:01,040
are the conversational entry points.

433
00:16:01,040 –> 00:16:02,760
They are not the execution substrate.

434
00:16:02,760 –> 00:16:05,000
They’re great at intake, triage, summarization,

435
00:16:05,000 –> 00:16:06,240
and guided actions.

436
00:16:06,240 –> 00:16:07,560
They can trigger workflows.

437
00:16:07,560 –> 00:16:09,360
They can help users find the right process.

438
00:16:09,360 –> 00:16:10,800
They can even generate drafts,

439
00:16:10,800 –> 00:16:12,760
but they cannot be your compliance pipeline

440
00:16:12,760 –> 00:16:14,040
because probabilistic reasoning

441
00:16:14,040 –> 00:16:15,560
can’t be your last line of defense.

442
00:16:15,560 –> 00:16:18,560
So the standard is agents for interface and assistance,

443
00:16:18,560 –> 00:16:20,320
deterministic services for enforcement

444
00:16:20,320 –> 00:16:21,960
and high throughput execution.

445
00:16:21,960 –> 00:16:23,400
And the forbid list is simple.

446
00:16:23,400 –> 00:16:25,480
Don’t let agents write to authoritative systems

447
00:16:25,480 –> 00:16:27,120
without a governed orchestration layer

448
00:16:27,120 –> 00:16:28,480
and a hard permission model.

449
00:16:28,480 –> 00:16:30,120
Agents should request actions.

450
00:16:30,120 –> 00:16:31,640
Orchestration should perform actions.

451
00:16:31,640 –> 00:16:33,400
Enforcement should validate outcomes.

452
00:16:33,400 –> 00:16:36,240
Now put it all into one rule that leaders can actually enforce,

453
00:16:36,240 –> 00:16:37,960
one path for each class of work.

454
00:16:37,960 –> 00:16:40,480
Simple team automation goes through power automate,

455
00:16:40,480 –> 00:16:42,720
governed by environments and ownership rules.

456
00:16:42,720 –> 00:16:44,600
High volume eventing goes through graph

457
00:16:44,600 –> 00:16:46,400
and a centralized event pipeline.

458
00:16:46,400 –> 00:16:49,760
Cross system and long running orchestration goes through logic apps,

459
00:16:49,760 –> 00:16:51,680
custom compute goes through functions.

460
00:16:51,680 –> 00:16:54,600
Agents sit on top as the intake and guidance layer.

461
00:16:54,600 –> 00:16:57,040
No choose your own stack because at scale,

462
00:16:57,040 –> 00:17:00,120
choice is just a polite word for architectural erosion.

463
00:17:00,120 –> 00:17:01,440
And once that matrix is clear,

464
00:17:01,440 –> 00:17:03,480
you can finally talk about governance.

465
00:17:03,480 –> 00:17:04,760
Not as documentation,

466
00:17:04,760 –> 00:17:07,160
but as mechanisms that make the matrix real.

467
00:17:07,160 –> 00:17:08,840
Governance isn’t policy docs.

468
00:17:08,840 –> 00:17:10,560
It’s enforcement mechanisms.

469
00:17:10,560 –> 00:17:13,120
Most organizations think governance is a document,

470
00:17:13,120 –> 00:17:15,760
a site creation policy, a naming standard,

471
00:17:15,760 –> 00:17:17,720
a don’t share PII slide deck,

472
00:17:17,720 –> 00:17:19,560
and a monthly meeting where everyone agrees

473
00:17:19,560 –> 00:17:20,920
the situation is bad.

474
00:17:20,920 –> 00:17:22,440
That is not governance.

475
00:17:22,440 –> 00:17:24,920
Governance is what remains true after a smart,

476
00:17:24,920 –> 00:17:26,640
busy person finds a shortcut.

477
00:17:26,640 –> 00:17:27,880
So the definition has to change.

478
00:17:27,880 –> 00:17:30,000
Governance is the set of enforcement mechanisms

479
00:17:30,000 –> 00:17:32,200
that survive human creativity at scale.

480
00:17:32,200 –> 00:17:34,320
If a control can be bypassed by convenience,

481
00:17:34,320 –> 00:17:35,320
it’s not a control.

482
00:17:35,320 –> 00:17:36,440
It’s a suggestion.

483
00:17:36,440 –> 00:17:38,840
And suggestions don’t withstand share point automation

484
00:17:38,840 –> 00:17:41,640
because automation amplifies whatever behavior already exists.

485
00:17:41,640 –> 00:17:43,400
It takes the informal workaround

486
00:17:43,400 –> 00:17:45,440
and turns it into a repeatable button.

487
00:17:45,440 –> 00:17:46,960
This is the uncomfortable truth.

488
00:17:46,960 –> 00:17:48,640
Makers don’t break governance.

489
00:17:48,640 –> 00:17:50,880
Systems without enforcement never had governance.

490
00:17:50,880 –> 00:17:52,520
So what does enforcement look like

491
00:17:52,520 –> 00:17:54,240
in modern share point automation?

492
00:17:54,240 –> 00:17:57,360
It starts with control surfaces, not best practices.

493
00:17:57,360 –> 00:18:00,200
Actual levers that change what the platform allows.

494
00:18:00,200 –> 00:18:02,960
Microsoft purview for labels, retention and DLP,

495
00:18:02,960 –> 00:18:04,360
entrafore identity boundaries,

496
00:18:04,360 –> 00:18:07,240
guest policy, conditional access and role separation.

497
00:18:07,240 –> 00:18:09,480
Share point admin controls for sharing defaults,

498
00:18:09,480 –> 00:18:12,160
site creation constraints and lifecycle settings,

499
00:18:12,160 –> 00:18:14,960
power platform admin controls for environments,

500
00:18:14,960 –> 00:18:18,840
DLP across connectors and who can create what?

501
00:18:18,840 –> 00:18:21,040
Each of those is a different plane of control.

502
00:18:21,040 –> 00:18:22,480
And if you don’t connect them,

503
00:18:22,480 –> 00:18:25,360
you create gaps that automation happily drives through.

504
00:18:25,360 –> 00:18:27,880
For example, you can have a beautiful DLP policy,

505
00:18:27,880 –> 00:18:29,920
but if anyone can build a flow

506
00:18:29,920 –> 00:18:32,080
in an unmanaged environment that moves content

507
00:18:32,080 –> 00:18:35,000
from a labeled library to an ungoverned connector,

508
00:18:35,000 –> 00:18:37,320
you’ve built a compliance bypass with a UI.

509
00:18:37,320 –> 00:18:39,920
Or you can lock down external sharing at the tenant level,

510
00:18:39,920 –> 00:18:41,840
but if you don’t control guest lifecycle

511
00:18:41,840 –> 00:18:43,320
and sponsorship in entra,

512
00:18:43,320 –> 00:18:45,440
you just turned external collaboration

513
00:18:45,440 –> 00:18:47,640
into permanent external presence.

514
00:18:47,640 –> 00:18:48,880
Or you can define retention,

515
00:18:48,880 –> 00:18:51,920
but if nobody enforces labels at creation time,

516
00:18:51,920 –> 00:18:54,800
you’ve outsourced compliance to user attention span,

517
00:18:54,800 –> 00:18:57,800
then comes the drift model because drift is not a risk,

518
00:18:57,800 –> 00:18:59,760
drift is the default operating mode.

519
00:18:59,760 –> 00:19:02,880
Every exception you approve becomes an entropy generator.

520
00:19:02,880 –> 00:19:05,000
This site needs external sharing.

521
00:19:05,000 –> 00:19:07,160
That flow needs a premium connector.

522
00:19:07,160 –> 00:19:09,440
This library needs unique permissions.

523
00:19:09,440 –> 00:19:12,120
This department needs a custom approval path.

524
00:19:12,120 –> 00:19:13,280
Each one sounds reasonable.

525
00:19:13,280 –> 00:19:15,120
Over time, they accumulate into a system

526
00:19:15,120 –> 00:19:16,520
nobody can reason about.

527
00:19:16,520 –> 00:19:18,400
Missing policies create obvious gaps.

528
00:19:18,400 –> 00:19:20,280
Drifting policies create ambiguity.

529
00:19:20,280 –> 00:19:22,000
Ambiguity creates incident time.

530
00:19:22,000 –> 00:19:25,000
So the governance job is not to eliminate exceptions.

531
00:19:25,000 –> 00:19:27,840
It’s to make exceptions expensive, visible, time-bound,

532
00:19:27,840 –> 00:19:28,880
and reviewable.

533
00:19:28,880 –> 00:19:30,680
That means time-limited access,

534
00:19:30,680 –> 00:19:33,120
expiring sharing links, scheduled access reviews,

535
00:19:33,120 –> 00:19:35,720
environment-based restrictions, mandatory ownership

536
00:19:35,720 –> 00:19:38,280
metadata, automated lifecycle policies.

537
00:19:38,280 –> 00:19:40,200
Telemetry that proves what changed,

538
00:19:40,200 –> 00:19:42,000
when and under which identity.

539
00:19:42,000 –> 00:19:42,960
That last part matters.

540
00:19:42,960 –> 00:19:45,040
Identity is the enforcement perimeter,

541
00:19:45,040 –> 00:19:47,200
but telemetry is the governance perimeter.

542
00:19:47,200 –> 00:19:49,400
Because if you can’t see sprawl, you can’t manage it.

543
00:19:49,400 –> 00:19:52,760
So governance needs KPIs that measure entropy, not vanity.

544
00:19:52,760 –> 00:19:54,920
The KPI view is brutal and simple.

545
00:19:54,920 –> 00:19:58,040
sprawl rate, how fast sites, teams, and flows appear

546
00:19:58,040 –> 00:20:00,680
compared to the organization’s ability to govern them.

547
00:20:00,680 –> 00:20:03,800
Permission drift, how often inheritance breaks,

548
00:20:03,800 –> 00:20:07,760
direct assignments appear, or guests accumulate without a sponsor.

549
00:20:07,760 –> 00:20:10,800
DLP incidents, not just counts, but where they concentrate

550
00:20:10,800 –> 00:20:13,280
and which labels or locations correlate.

551
00:20:13,280 –> 00:20:16,760
Automation failure rate, retries, time-outs, runs that fail

552
00:20:16,760 –> 00:20:20,840
silently, and workflows with no owner who receives failure alerts.

553
00:20:20,840 –> 00:20:22,920
Those are the signals that tell you whether the control

554
00:20:22,920 –> 00:20:26,040
plane is working or whether you’re running a distributed accident.

555
00:20:26,040 –> 00:20:27,160
Now notice what’s missing.

556
00:20:27,160 –> 00:20:28,320
Number of policies.

557
00:20:28,320 –> 00:20:30,480
Number of pages in the governance guide.

558
00:20:30,480 –> 00:20:31,760
Number of training sessions.

559
00:20:31,760 –> 00:20:34,080
Those measure activity, not enforcement.

560
00:20:34,080 –> 00:20:37,120
So the practical architecture principle here is governance

561
00:20:37,120 –> 00:20:40,160
must be deployable and testable, like any other system.

562
00:20:40,160 –> 00:20:42,960
Controls need versioning, exceptions need life cycle,

563
00:20:42,960 –> 00:20:45,040
environments need boundaries, and workflows

564
00:20:45,040 –> 00:20:46,440
need operational ownership.

565
00:20:46,440 –> 00:20:48,040
This is also why governance committees

566
00:20:48,040 –> 00:20:50,080
fail when they try to approve everything.

567
00:20:50,080 –> 00:20:53,000
They become a human bottleneck for machine speed change.

568
00:20:53,000 –> 00:20:54,760
The system learns to route around them

569
00:20:54,760 –> 00:20:56,560
because business pressure doesn’t stop.

570
00:20:56,560 –> 00:20:59,080
So governance has to move from approval of everything

571
00:20:59,080 –> 00:21:00,600
to standardization of the paths.

572
00:21:00,600 –> 00:21:03,400
And the only way that works is start with identity,

573
00:21:03,400 –> 00:21:05,960
because identity is where automation gets its permissions,

574
00:21:05,960 –> 00:21:09,640
where agents inherit access, where service principles do the writing,

575
00:21:09,640 –> 00:21:12,600
and where guests become either controlled collaborators

576
00:21:12,600 –> 00:21:14,720
or an ongoing liability.

577
00:21:14,720 –> 00:21:17,960
If you get identity wrong, every other governance layer becomes cleanup.

578
00:21:17,960 –> 00:21:21,520
So the next section goes where most organizations avoid going

579
00:21:21,520 –> 00:21:23,760
until after their first major incident.

580
00:21:23,760 –> 00:21:27,920
EntraFirst Design, the group model that prevents permission fanfiction.

581
00:21:27,920 –> 00:21:29,880
EntraFirst Design, the group model that

582
00:21:29,880 –> 00:21:31,560
prevents permission fanfiction.

583
00:21:31,560 –> 00:21:34,560
EntraFirst Design is not identity hygiene.

584
00:21:34,560 –> 00:21:36,440
It’s the only way SharePoint automation stays

585
00:21:36,440 –> 00:21:38,840
governable once it spreads beyond one team.

586
00:21:38,840 –> 00:21:40,120
The core law is simple.

587
00:21:40,120 –> 00:21:42,000
Every permission that isn’t expressed as a group

588
00:21:42,000 –> 00:21:44,440
becomes a story someone tells themselves later.

589
00:21:44,440 –> 00:21:44,960
It’s fine.

590
00:21:44,960 –> 00:21:46,440
I just added Sarah directly.

591
00:21:46,440 –> 00:21:47,000
It’s fine.

592
00:21:47,000 –> 00:21:49,160
I just broke inheritance on this folder.

593
00:21:49,160 –> 00:21:49,640
It’s fine.

594
00:21:49,640 –> 00:21:50,720
It’s only a guest.

595
00:21:50,720 –> 00:21:52,360
Those decisions don’t stay small.

596
00:21:52,360 –> 00:21:54,600
Automation reads them as truth and amplifies them.

597
00:21:54,600 –> 00:21:56,880
So the scaling model is group first access.

598
00:21:56,880 –> 00:22:00,080
No direct user assignment as a rule, not a preference.

599
00:22:00,080 –> 00:22:02,160
Owners and members map to Entra groups.

600
00:22:02,160 –> 00:22:04,120
Special roles map to separate groups.

601
00:22:04,120 –> 00:22:05,760
Exceptions map to time bound groups.

602
00:22:05,760 –> 00:22:09,480
That’s it because a SharePoint permission set is not a security model.

603
00:22:09,480 –> 00:22:12,520
It’s an implementation detail of an authorization graph.

604
00:22:12,520 –> 00:22:14,280
Entra is where you define the graph.

605
00:22:14,280 –> 00:22:16,480
SharePoint is where you attach it to content.

606
00:22:16,480 –> 00:22:17,800
Here’s what most people miss.

607
00:22:17,800 –> 00:22:21,400
Automation identities need the same discipline as human identities.

608
00:22:21,400 –> 00:22:24,040
If a flow runs as the owner because it was built

609
00:22:24,040 –> 00:22:26,560
by an enthusiastic site owner six months ago,

610
00:22:26,560 –> 00:22:28,800
then the organization has created a ghost admin

611
00:22:28,800 –> 00:22:30,840
that never rotates, never goes on leave,

612
00:22:30,840 –> 00:22:32,320
and never gets reviewed.

613
00:22:32,320 –> 00:22:36,440
The workflow becomes a permanent privilege escalation path disguised as productivity.

614
00:22:36,440 –> 00:22:38,720
So you formalize automation identities.

615
00:22:38,720 –> 00:22:42,280
Service principles and managed identities are first class citizens.

616
00:22:42,280 –> 00:22:43,400
They get explicit scopes.

617
00:22:43,400 –> 00:22:44,520
They get named ownership.

618
00:22:44,520 –> 00:22:45,440
They get life cycle.

619
00:22:45,440 –> 00:22:46,960
They don’t inherit random permissions

620
00:22:46,960 –> 00:22:49,360
because someone clicked use my connection.

621
00:22:49,360 –> 00:22:52,040
And they do not sit in the same groups as humans.

622
00:22:52,040 –> 00:22:56,040
Mixing human access and automation access is how incident reports get written.

623
00:22:56,040 –> 00:22:59,880
Now add role separation SharePoint admins, power platform admins

624
00:22:59,880 –> 00:23:01,840
and automation builders are not interchangeable

625
00:23:01,840 –> 00:23:04,480
just because one person can technically do all three.

626
00:23:04,480 –> 00:23:06,680
In Entra terms, you use role separation

627
00:23:06,680 –> 00:23:08,360
and privilege identity management.

628
00:23:08,360 –> 00:23:10,760
So that privileged access is just in time,

629
00:23:10,760 –> 00:23:12,320
time limited and auditable.

630
00:23:12,320 –> 00:23:15,000
Permanent privilege is not an operational convenience.

631
00:23:15,000 –> 00:23:16,640
It is security debt.

632
00:23:16,640 –> 00:23:20,480
PIM is how you keep admin rights from becoming the default state

633
00:23:20,480 –> 00:23:22,440
and it matters more with automation

634
00:23:22,440 –> 00:23:25,000
because the people who can create automations

635
00:23:25,000 –> 00:23:28,040
often become the people who can bypass controls.

636
00:23:28,040 –> 00:23:30,240
If the builder can also grant themselves access,

637
00:23:30,240 –> 00:23:32,640
you don’t have governance, you have self-service escalation.

638
00:23:32,640 –> 00:23:34,680
Now the group model itself, a practical pattern

639
00:23:34,680 –> 00:23:37,000
that doesn’t collapse under pressure looks like this.

640
00:23:37,000 –> 00:23:38,880
One group for owners, one group for members,

641
00:23:38,880 –> 00:23:41,000
one group for visitors and then additional groups

642
00:23:41,000 –> 00:23:45,040
for specific entitlements that are independent of site membership.

643
00:23:45,040 –> 00:23:46,520
Approvers should be a group.

644
00:23:46,520 –> 00:23:48,640
External collaborators should be a group.

645
00:23:48,640 –> 00:23:50,440
Workflow runners should be a group.

646
00:23:50,440 –> 00:23:53,080
And if a library has a unique permission boundary,

647
00:23:53,080 –> 00:23:55,760
that boundary is expressed as separate groups,

648
00:23:55,760 –> 00:23:57,200
not a list of named people.

649
00:23:57,200 –> 00:23:59,600
This is how you prevent permission fan fiction.

650
00:23:59,600 –> 00:24:01,360
Permissions stop being bespoke narratives

651
00:24:01,360 –> 00:24:02,840
and become reusable components.

652
00:24:02,840 –> 00:24:04,360
It also makes life cycle possible.

653
00:24:04,360 –> 00:24:06,440
You can run access reviews on groups,

654
00:24:06,440 –> 00:24:07,920
you can expire group membership,

655
00:24:07,920 –> 00:24:09,480
you can enforce naming conventions

656
00:24:09,480 –> 00:24:10,880
and ownership requirements,

657
00:24:10,880 –> 00:24:12,720
you can detect orphaned groups.

658
00:24:12,720 –> 00:24:14,520
None of that works when the permission model

659
00:24:14,520 –> 00:24:17,720
lives as direct assignments scattered across 10,000 sites.

660
00:24:17,720 –> 00:24:18,960
Then comes guests.

661
00:24:18,960 –> 00:24:21,440
External collaboration is not a toggle in SharePoint.

662
00:24:21,440 –> 00:24:23,560
It’s an identity life cycle problem in Entra.

663
00:24:23,560 –> 00:24:24,840
Guests must have sponsorship,

664
00:24:24,840 –> 00:24:27,000
guests must have expiration or review.

665
00:24:27,000 –> 00:24:29,160
Guests must be subject to conditional access

666
00:24:29,160 –> 00:24:30,840
and MFA expectations.

667
00:24:30,840 –> 00:24:32,920
And the invitation flow must be consistent

668
00:24:32,920 –> 00:24:35,720
because anyone can invite anyone is how you end up

669
00:24:35,720 –> 00:24:37,960
with external identities nobody can explain.

670
00:24:37,960 –> 00:24:40,560
This is also where cross tenant collaboration gets dangerous

671
00:24:40,560 –> 00:24:42,200
if the org treats it casually.

672
00:24:42,200 –> 00:24:44,880
If the enterprise allows multiple invitation patterns,

673
00:24:44,880 –> 00:24:46,680
multiple tenant relationships

674
00:24:46,680 –> 00:24:48,320
and inconsistent guest policies,

675
00:24:48,320 –> 00:24:49,840
the system doesn’t become flexible,

676
00:24:49,840 –> 00:24:52,200
it becomes untraceable.

677
00:24:52,200 –> 00:24:54,480
So the Entra first blueprint is strict.

678
00:24:54,480 –> 00:24:57,200
Define collaboration zones and map them to guest policies.

679
00:24:57,200 –> 00:24:59,240
If a site is external by design,

680
00:24:59,240 –> 00:25:01,640
its access model is external by design.

681
00:25:01,640 –> 00:25:03,640
If it isn’t, guests don’t appear there

682
00:25:03,640 –> 00:25:05,280
because it was urgent.

683
00:25:05,280 –> 00:25:07,560
Now connect identity back to automation.

684
00:25:07,560 –> 00:25:09,120
When quick steps can execute a flow,

685
00:25:09,120 –> 00:25:11,960
the question becomes which identity does that flow run as

686
00:25:11,960 –> 00:25:13,240
and what can it touch?

687
00:25:13,240 –> 00:25:15,360
When approvals change state inside a library

688
00:25:15,360 –> 00:25:17,640
who is allowed to submit, who is allowed to approve

689
00:25:17,640 –> 00:25:19,800
and what downstream rights occur on approval,

690
00:25:19,800 –> 00:25:22,760
when agents retrieve content, what do they inherit

691
00:25:22,760 –> 00:25:24,240
and what do they trigger?

692
00:25:24,240 –> 00:25:26,960
Entra answers those questions with one mechanism.

693
00:25:26,960 –> 00:25:29,240
Explicit assignment by our groups and roles,

694
00:25:29,240 –> 00:25:30,440
not ambient privilege.

695
00:25:30,440 –> 00:25:33,600
And once identity is stable, the next layer finally works.

696
00:25:33,600 –> 00:25:35,720
Labels and DLP stop being aspirational

697
00:25:35,720 –> 00:25:38,400
because the system can reliably tell who is acting

698
00:25:38,400 –> 00:25:40,560
what they’re allowed to do and what should be blocked.

699
00:25:40,560 –> 00:25:43,080
That’s where PerView stops being compliance tooling

700
00:25:43,080 –> 00:25:46,760
and becomes runtime enforcement for automation and AI readiness.

701
00:25:46,760 –> 00:25:49,200
PerView Foundation, label first governance

702
00:25:49,200 –> 00:25:51,080
for automation and AI readiness.

703
00:25:51,080 –> 00:25:54,080
PerView is where most organizations learn a painful lesson.

704
00:25:54,080 –> 00:25:56,200
Classification isn’t a compliance project.

705
00:25:56,200 –> 00:25:59,560
It’s an architecture dependency because once automation exists,

706
00:25:59,560 –> 00:26:02,120
the system needs a reliable way to answer one question

707
00:26:02,120 –> 00:26:03,200
on every action.

708
00:26:03,200 –> 00:26:05,800
What kind of data is this and what rules apply to it?

709
00:26:05,800 –> 00:26:07,360
If you can’t answer that deterministically,

710
00:26:07,360 –> 00:26:09,360
you’re back to humans making policy decisions

711
00:26:09,360 –> 00:26:11,040
in the middle of machine speed workflows

712
00:26:11,040 –> 00:26:12,560
that doesn’t scale, it never did.

713
00:26:12,560 –> 00:26:14,360
So label first governance is the foundation.

714
00:26:14,360 –> 00:26:15,840
Not because labels are trendy

715
00:26:15,840 –> 00:26:17,760
because labels are the only control primitive

716
00:26:17,760 –> 00:26:20,640
that can follow content across SharePoint teams one drive

717
00:26:20,640 –> 00:26:23,400
and the downstream systems your flows and agents touch.

718
00:26:23,400 –> 00:26:25,360
Start with sensitivity labels.

719
00:26:25,360 –> 00:26:29,040
Most people treat them like classification stickers,

720
00:26:29,040 –> 00:26:31,640
public, internal, confidential.

721
00:26:31,640 –> 00:26:32,840
That’s the marketing version.

722
00:26:32,840 –> 00:26:36,040
Architecturally, a sensitivity label is an enforcement package.

723
00:26:36,040 –> 00:26:38,840
It can carry encryption behaviors, access expectations

724
00:26:38,840 –> 00:26:41,560
and downstream restrictions that stay attached to the file.

725
00:26:41,560 –> 00:26:44,800
It’s a way to turn, we don’t want this shared externally

726
00:26:44,800 –> 00:26:47,720
into a setting, the platform can actually enforce.

727
00:26:47,840 –> 00:26:51,000
When someone tries to share it, download it, sink it

728
00:26:51,000 –> 00:26:52,880
or route it through automation.

729
00:26:52,880 –> 00:26:55,040
And the key point for automation is simple.

730
00:26:55,040 –> 00:26:57,760
If labels exist only as optional user selections,

731
00:26:57,760 –> 00:26:59,280
they won’t exist where you need them.

732
00:26:59,280 –> 00:27:00,920
Users won’t label consistently,

733
00:27:00,920 –> 00:27:03,200
makers won’t label at all unless forced.

734
00:27:03,200 –> 00:27:05,840
And agents will happily reason over whatever you gave them

735
00:27:05,840 –> 00:27:07,240
which often means the mess.

736
00:27:07,240 –> 00:27:10,120
So the blueprint is, labels must be part of the content

737
00:27:10,120 –> 00:27:12,040
life cycle, not an afterthought.

738
00:27:12,040 –> 00:27:13,600
Then retention labels.

739
00:27:13,600 –> 00:27:15,600
Retention gets misunderstood even faster

740
00:27:15,600 –> 00:27:18,280
because people wanted to be deletion scheduling.

741
00:27:18,280 –> 00:27:19,760
That’s not the architectural function.

742
00:27:19,760 –> 00:27:23,080
Retention is about immutable outcomes and audit defensibility.

743
00:27:23,080 –> 00:27:25,160
This content must be kept for X years,

744
00:27:25,160 –> 00:27:27,960
disposed after Y, preserved under legal hold

745
00:27:27,960 –> 00:27:29,720
and proven to have followed policy.

746
00:27:29,720 –> 00:27:31,360
The important thing is that retention

747
00:27:31,360 –> 00:27:33,840
doesn’t care whether your workflow was smart.

748
00:27:33,840 –> 00:27:36,440
It cares whether the organization can produce evidence,

749
00:27:36,440 –> 00:27:39,080
which means your automation must not circumvent retention

750
00:27:39,080 –> 00:27:42,400
by moving content into locations outside the policy scope,

751
00:27:42,400 –> 00:27:44,600
exporting it into ungoverned storage

752
00:27:44,600 –> 00:27:47,880
or generating duplicates that create legal ambiguity.

753
00:27:47,880 –> 00:27:50,040
Retention is where your workflow architecture

754
00:27:50,040 –> 00:27:51,320
meets legal reality.

755
00:27:51,320 –> 00:27:53,680
Now, auto labeling.

756
00:27:53,680 –> 00:27:56,520
Auto labeling sounds like salvation.

757
00:27:56,520 –> 00:27:58,760
Let the models find sensitive content,

758
00:27:58,760 –> 00:28:00,480
apply the right label and move on.

759
00:28:00,480 –> 00:28:02,000
And yes, Perv, you can do a lot here

760
00:28:02,000 –> 00:28:05,200
through sensitive information types and trainable classifiers.

761
00:28:05,200 –> 00:28:08,080
But this is where enterprises confuse automation capability

762
00:28:08,080 –> 00:28:10,160
with automation authority.

763
00:28:10,160 –> 00:28:12,880
Auto labeling works when the document patterns are consistent

764
00:28:12,880 –> 00:28:15,040
and the information architecture isn’t chaos.

765
00:28:15,040 –> 00:28:17,520
If the organization stores contracts, invoices,

766
00:28:17,520 –> 00:28:19,720
and HR documents with predictable structure

767
00:28:19,720 –> 00:28:22,080
and consistent metadata, models can help.

768
00:28:22,080 –> 00:28:23,640
If the organization stores everything

769
00:28:23,640 –> 00:28:27,080
as final final V7 docs in a library called shared,

770
00:28:27,080 –> 00:28:29,600
auto labeling becomes probabilistic theater.

771
00:28:29,600 –> 00:28:33,560
The rule stays strict, models assist, humans own exceptions.

772
00:28:33,560 –> 00:28:34,960
Auto labeling reduces toil.

773
00:28:34,960 –> 00:28:36,720
It does not eliminate accountability.

774
00:28:36,720 –> 00:28:38,320
Now connect this to AI readiness

775
00:28:38,320 –> 00:28:40,200
because that’s why this section exists.

776
00:28:40,200 –> 00:28:42,280
Copilot and agents don’t invent permissions.

777
00:28:42,280 –> 00:28:43,120
They inherit them.

778
00:28:43,120 –> 00:28:45,640
But what they do amplify is discoverability.

779
00:28:45,640 –> 00:28:47,400
If sensitive content is overshared,

780
00:28:47,400 –> 00:28:48,880
agents will surface it faster.

781
00:28:48,880 –> 00:28:51,080
If metadata is sloppy, agents will answer

782
00:28:51,080 –> 00:28:53,200
with the wrong latest document.

783
00:28:53,200 –> 00:28:55,640
If labels are missing, DLP and sharing controls

784
00:28:55,640 –> 00:28:57,360
can’t reliably gate action.

785
00:28:57,360 –> 00:29:00,160
So AI readiness is not turn on copilot.

786
00:29:00,160 –> 00:29:03,640
AI readiness is can the system reliably distinguish

787
00:29:03,640 –> 00:29:07,320
what is safe to summarize, safe to share, safe to root,

788
00:29:07,320 –> 00:29:08,680
and safe to ground answers on?

789
00:29:08,680 –> 00:29:10,480
Labels are how you teach the platform

790
00:29:10,480 –> 00:29:12,920
that distinction without hoping users remember.

791
00:29:12,920 –> 00:29:16,040
This is also why information architecture suddenly matters again.

792
00:29:16,040 –> 00:29:18,720
SharePoint has always needed content types, metadata,

793
00:29:18,720 –> 00:29:20,280
and clear library design.

794
00:29:20,280 –> 00:29:23,160
The difference now is that AI fails loudly on chaos.

795
00:29:23,160 –> 00:29:24,920
Search could limp along with poor metadata.

796
00:29:24,920 –> 00:29:25,840
Agents can’t.

797
00:29:25,840 –> 00:29:27,800
They will confidently synthesize nonsense

798
00:29:27,800 –> 00:29:29,160
from a messy corpus.

799
00:29:29,160 –> 00:29:31,520
And your users will treat it as authoritative

800
00:29:31,520 –> 00:29:32,880
because it speaks fluently.

801
00:29:32,880 –> 00:29:36,280
So you standardize the minimum viable information architecture,

802
00:29:36,280 –> 00:29:38,560
required metadata for high value libraries,

803
00:29:38,560 –> 00:29:40,880
consistent naming for sites and libraries,

804
00:29:40,880 –> 00:29:43,440
and a label taxonomy that maps to real enforcement.

805
00:29:43,440 –> 00:29:45,080
Not 20 labels nobody understands.

806
00:29:45,080 –> 00:29:47,600
A small number that represent real policy boundaries.

807
00:29:47,600 –> 00:29:50,280
And you wire those labels into automation pathways.

808
00:29:50,280 –> 00:29:52,960
Workflows should set labels when business context is known,

809
00:29:52,960 –> 00:29:54,600
not wait for users.

810
00:29:54,600 –> 00:29:56,280
Provisioning should apply default labels

811
00:29:56,280 –> 00:29:58,240
to sites and libraries based on purpose.

812
00:29:58,240 –> 00:30:01,600
Approval completion should trigger label validation

813
00:30:01,600 –> 00:30:04,680
before content moves to an externally shareable zone.

814
00:30:04,680 –> 00:30:07,120
Agents should operate in spaces where labeling discipline

815
00:30:07,120 –> 00:30:09,640
exists because otherwise they become a high speed interface

816
00:30:09,640 –> 00:30:11,440
to your ungoverned past.

817
00:30:11,440 –> 00:30:12,640
Here’s what most people miss.

818
00:30:12,640 –> 00:30:15,400
Label first is not about making compliance happy.

819
00:30:15,400 –> 00:30:16,880
It’s about giving your automation

820
00:30:16,880 –> 00:30:18,400
a deterministic control surface.

821
00:30:18,400 –> 00:30:20,800
When a flow runs, it should be able to check a label

822
00:30:20,800 –> 00:30:21,880
and know what to do.

823
00:30:21,880 –> 00:30:24,040
When a quick step executes, it should run

824
00:30:24,040 –> 00:30:26,840
into the same label-based boundary every time.

825
00:30:26,840 –> 00:30:28,280
When an agent suggests an action,

826
00:30:28,280 –> 00:30:31,040
the enforcement layer should be able to say yes or no

827
00:30:31,040 –> 00:30:33,280
based on label-driven policy, not on vibes.

828
00:30:33,280 –> 00:30:34,600
That’s the foundation.

829
00:30:34,600 –> 00:30:35,880
And once labels are real,

830
00:30:35,880 –> 00:30:39,400
DLP becomes something else entirely, not a compliance report.

831
00:30:39,400 –> 00:30:42,280
A runtime gate, DLP as a runtime gate,

832
00:30:42,280 –> 00:30:44,840
stop leakage, log intent, allow business.

833
00:30:44,840 –> 00:30:46,800
DLP is where the enterprise stops pretending

834
00:30:46,800 –> 00:30:49,280
it can train its way out of data leakage.

835
00:30:49,280 –> 00:30:52,240
Most organizations deploy DLP like a museum alarm.

836
00:30:52,240 –> 00:30:55,480
It exists, it’s loud, and everyone learns how to walk around it.

837
00:30:55,480 –> 00:30:58,520
The modern blueprint treats DLP as a runtime gate,

838
00:30:58,520 –> 00:31:00,880
a control that evaluates the moment of action,

839
00:31:00,880 –> 00:31:02,920
blocks the bad parts and records the intent

840
00:31:02,920 –> 00:31:04,280
when you allow an exception.

841
00:31:04,280 –> 00:31:06,480
That distinction matters because automation changes

842
00:31:06,480 –> 00:31:07,520
the leakage shape.

843
00:31:07,520 –> 00:31:10,520
Without automation, leakage usually happens through a person,

844
00:31:10,520 –> 00:31:13,600
copied to USB, forward an email, share a link.

845
00:31:13,600 –> 00:31:17,000
With automation, leakage happens through a workflow identity.

846
00:31:17,000 –> 00:31:19,040
Move this file, email this PDF,

847
00:31:19,040 –> 00:31:21,280
sync this data that posted to that connector,

848
00:31:21,280 –> 00:31:22,680
and because it’s machine speed,

849
00:31:22,680 –> 00:31:24,800
the volume can spike before anyone notices.

850
00:31:24,800 –> 00:31:26,400
So the DLP job isn’t to be perfect.

851
00:31:26,400 –> 00:31:28,080
It’s to be present at the exact moment

852
00:31:28,080 –> 00:31:30,480
your workflows move data across a boundary.

853
00:31:30,480 –> 00:31:32,760
The enterprise requirement is unified DLP,

854
00:31:32,760 –> 00:31:35,480
one policy language, many surfaces.

855
00:31:35,480 –> 00:31:38,280
SharePoint libraries, teams files, one drive endpoints,

856
00:31:38,280 –> 00:31:39,720
and the connectors your flows use

857
00:31:39,720 –> 00:31:41,960
all represent different X filtration parts.

858
00:31:41,960 –> 00:31:44,520
If DLP only exists in one of those layers,

859
00:31:44,520 –> 00:31:46,760
you’ve built a control that blocks the honest user

860
00:31:46,760 –> 00:31:47,920
and misses the real root.

861
00:31:47,920 –> 00:31:51,400
Pervuse value is that the same classification concepts,

862
00:31:51,400 –> 00:31:54,080
sensitive info types, labels, locations,

863
00:31:54,080 –> 00:31:56,400
can be expressed as a single enforcement strategy

864
00:31:56,400 –> 00:31:58,360
instead of five separate rulebooks maintained

865
00:31:58,360 –> 00:31:59,640
by five different teams.

866
00:31:59,640 –> 00:32:02,560
And then you stratify, this is where most DLP programs fail.

867
00:32:02,560 –> 00:32:05,400
They create one policy that tries to protect everything

868
00:32:05,400 –> 00:32:07,160
and it ends up either blocking the business

869
00:32:07,160 –> 00:32:08,280
or blocking nothing.

870
00:32:08,280 –> 00:32:10,760
The blueprint is explicit policy stratification,

871
00:32:10,760 –> 00:32:13,400
separate blast radii for separate data classes.

872
00:32:13,400 –> 00:32:14,680
PII is one blast radius.

873
00:32:14,680 –> 00:32:17,000
Financial data is another, source code is another,

874
00:32:17,000 –> 00:32:19,960
M&A documents are another, HR investigations are another.

875
00:32:19,960 –> 00:32:22,600
Why? Because what counts as acceptable friction

876
00:32:22,600 –> 00:32:24,520
is different for each class.

877
00:32:24,520 –> 00:32:27,040
An engineer moving code to a repo is not the same

878
00:32:27,040 –> 00:32:29,240
as a recruiter sharing candidate data.

879
00:32:29,240 –> 00:32:30,560
If you treat them the same,

880
00:32:30,560 –> 00:32:33,600
you either destroy productivity or normalize bypasses.

881
00:32:33,600 –> 00:32:35,360
Now, the runtime part.

882
00:32:35,360 –> 00:32:38,600
A good DLP gate doesn’t just block.

883
00:32:38,600 –> 00:32:40,720
It offers controlled outcomes, allow, block,

884
00:32:40,720 –> 00:32:42,280
or allow with justification.

885
00:32:42,280 –> 00:32:44,720
And allow with justification is not a feel good compromise.

886
00:32:44,720 –> 00:32:46,000
It’s a telemetry generator.

887
00:32:46,000 –> 00:32:47,920
If someone needs to share something sensitive

888
00:32:47,920 –> 00:32:50,640
for a legitimate reason, the system can allow it.

889
00:32:50,640 –> 00:32:52,760
But only if the user supplies a reason

890
00:32:52,760 –> 00:32:56,240
and only if that event is logged as a high signal audit trail.

891
00:32:56,240 –> 00:32:58,600
That creates two things you never get from blanket blocking,

892
00:32:58,600 –> 00:33:00,560
accountability and attuning loop.

893
00:33:00,560 –> 00:33:02,560
Because false positives are not a bug.

894
00:33:02,560 –> 00:33:04,160
They’re a feature of pattern-based detection

895
00:33:04,160 –> 00:33:05,800
meeting messy enterprise data.

896
00:33:05,800 –> 00:33:09,080
So you design an escalation path and attuning loop on purpose.

897
00:33:09,080 –> 00:33:11,400
When the system blocks a legitimate business action,

898
00:33:11,400 –> 00:33:13,280
there must be a known place to go.

899
00:33:13,280 –> 00:33:15,720
A request path, a review queue,

900
00:33:15,720 –> 00:33:18,600
a policy exception process that is time bound

901
00:33:18,600 –> 00:33:20,080
and tied to an owner.

902
00:33:20,080 –> 00:33:22,640
And when the system allows something with justification,

903
00:33:22,640 –> 00:33:26,760
that justification data becomes input into policy refinement.

904
00:33:26,760 –> 00:33:29,240
Over time, the policy stops being theoretical

905
00:33:29,240 –> 00:33:32,280
and starts reflecting how the business actually moves data.

906
00:33:32,280 –> 00:33:34,120
Here’s the part automation teams miss.

907
00:33:34,120 –> 00:33:37,000
DLP has to understand your automation identities.

908
00:33:37,000 –> 00:33:39,120
If a flow runs under a service principle

909
00:33:39,120 –> 00:33:42,280
or managed identity, the DLP posture needs to account for it.

910
00:33:42,280 –> 00:33:44,480
Otherwise, you end up with the worst outcome.

911
00:33:44,480 –> 00:33:45,760
Humans blocked.

912
00:33:45,760 –> 00:33:47,520
Automations free.

913
00:33:47,520 –> 00:33:50,560
That is how we lockdown sharing turns into the workflow

914
00:33:50,560 –> 00:33:52,600
emailed the file externally anyway.

915
00:33:52,600 –> 00:33:54,600
So the blueprint requires this.

916
00:33:54,600 –> 00:33:57,960
Every automation pathway that exports, shares, or transforms

917
00:33:57,960 –> 00:34:00,960
content gets treated as a data egress point.

918
00:34:00,960 –> 00:34:02,720
It’s evaluated, it’s locked, and it

919
00:34:02,720 –> 00:34:04,880
has an owner who can explain why it exists.

920
00:34:04,880 –> 00:34:07,480
Now connect DLP back to quick steps and approvals.

921
00:34:07,480 –> 00:34:10,600
Quick steps reduce friction, which means they increase usage,

922
00:34:10,600 –> 00:34:12,720
which means they increase risk surface.

923
00:34:12,720 –> 00:34:15,080
If execute flow is available on sensitive libraries,

924
00:34:15,080 –> 00:34:17,320
then DLP and labeling must sit behind it

925
00:34:17,320 –> 00:34:18,880
as a non-negotiable gate.

926
00:34:18,880 –> 00:34:22,000
Approvals create state, but they don’t enforce classification.

927
00:34:22,000 –> 00:34:23,720
So the enforcement must happen at the moment

928
00:34:23,720 –> 00:34:26,960
of sharing, moving, exporting, or posting to other systems.

929
00:34:26,960 –> 00:34:28,600
Especially when the action is triggered

930
00:34:28,600 –> 00:34:32,760
by approved status and nobody is watching the downstream step.

931
00:34:32,760 –> 00:34:34,680
So the DLP design goal is brutally simple.

932
00:34:34,680 –> 00:34:36,760
Stop leakage, log intent, allow business.

933
00:34:36,760 –> 00:34:39,160
And if you do it right, DLP becomes less

934
00:34:39,160 –> 00:34:42,040
about security theater and more about engineering reality,

935
00:34:42,040 –> 00:34:43,880
a runtime decision engine that reduces

936
00:34:43,880 –> 00:34:46,240
blast radius while producing evidence.

937
00:34:46,240 –> 00:34:47,520
Now none of this matters if you can’t

938
00:34:47,520 –> 00:34:48,640
see what the system is doing.

939
00:34:48,640 –> 00:34:51,440
A runtime gate without observability is just silent failure

940
00:34:51,440 –> 00:34:52,520
with better branding.

941
00:34:52,520 –> 00:34:55,600
Observability architecture, audit logs, diagnostics,

942
00:34:55,600 –> 00:34:57,520
Sentinel and real signals.

943
00:34:57,520 –> 00:35:00,600
If governance is enforcement, observability is proof.

944
00:35:00,600 –> 00:35:03,640
And enterprises don’t fail because they lacked policies.

945
00:35:03,640 –> 00:35:05,560
They fail because they couldn’t prove what happened

946
00:35:05,560 –> 00:35:08,360
when automation did something weird at 2.13 a.m.

947
00:35:08,360 –> 00:35:11,480
Observability is how a workflow platform stays a platform

948
00:35:11,480 –> 00:35:14,560
instead of becoming a haunted house of it usually works.

949
00:35:14,560 –> 00:35:16,040
Start with the unified audit log

950
00:35:16,040 –> 00:35:18,440
because it’s the thing everyone vaguely knows exists

951
00:35:18,440 –> 00:35:20,560
and almost nobody designs around.

952
00:35:20,560 –> 00:35:21,880
The audit log is good at answering

953
00:35:21,880 –> 00:35:24,160
who did what to which object and when.

954
00:35:24,160 –> 00:35:27,400
File access, file shared, permission changed,

955
00:35:27,400 –> 00:35:30,000
sensitivity label applied, guest invited,

956
00:35:30,000 –> 00:35:31,560
that’s the compliance great trail.

957
00:35:31,560 –> 00:35:33,320
It’s the ledger you pull when legal asks

958
00:35:33,320 –> 00:35:35,880
or when an incident responder needs attribution.

959
00:35:35,880 –> 00:35:37,440
But it’s not operational telemetry.

960
00:35:37,440 –> 00:35:39,520
It won’t tell you why you’re flow-run five times.

961
00:35:39,520 –> 00:35:41,320
It won’t show you latency distributions.

962
00:35:41,320 –> 00:35:43,160
It won’t give you an execution graph.

963
00:35:43,160 –> 00:35:45,240
And it definitely won’t explain failure modes

964
00:35:45,240 –> 00:35:48,160
inside power automate, Azure functions or logic apps.

965
00:35:48,160 –> 00:35:51,240
So treat the audit log as the what happened source.

966
00:35:51,240 –> 00:35:53,720
Not the how is it behaving source.

967
00:35:53,720 –> 00:35:55,240
That distinction matters.

968
00:35:55,240 –> 00:35:58,280
Next, diagnostic logs, SharePoint, Entra,

969
00:35:58,280 –> 00:36:01,040
and the automation runtime all generate diagnostics

970
00:36:01,040 –> 00:36:03,200
that are closer to engineering reality.

971
00:36:03,200 –> 00:36:05,560
Requests, throttles, API responses,

972
00:36:05,560 –> 00:36:08,640
connector errors, job durations, queue depth,

973
00:36:08,640 –> 00:36:09,960
retry counts.

974
00:36:09,960 –> 00:36:11,280
These belong in log analytics

975
00:36:11,280 –> 00:36:14,560
because you want one place where you can correlate identity signals,

976
00:36:14,560 –> 00:36:17,440
SharePoint activity and workflow execution.

977
00:36:17,440 –> 00:36:19,520
This is where most orgs quietly lose.

978
00:36:19,520 –> 00:36:20,960
They log in each silo.

979
00:36:20,960 –> 00:36:23,080
Power automate run history sits in one place,

980
00:36:23,080 –> 00:36:26,160
function logs sit in another SharePoint activity sits somewhere else.

981
00:36:26,160 –> 00:36:28,000
Sentinel has alerts but not context.

982
00:36:28,000 –> 00:36:31,120
And then during an incident, someone screenshots five portals

983
00:36:31,120 –> 00:36:33,080
and calls it root cause analysis.

984
00:36:33,080 –> 00:36:34,000
But that’s not analysis.

985
00:36:34,000 –> 00:36:34,960
That’s archaeology.

986
00:36:34,960 –> 00:36:37,280
So the observability architecture is explicit,

987
00:36:37,280 –> 00:36:39,680
centralized telemetry, normalized correlation,

988
00:36:39,680 –> 00:36:41,400
and make queries repeatable.

989
00:36:41,400 –> 00:36:43,440
A practical pattern is to stamp everything

990
00:36:43,440 –> 00:36:46,640
with correlation identifiers you can carry across the system.

991
00:36:46,640 –> 00:36:49,160
Event ID, site ID, item ID, flow run ID,

992
00:36:49,160 –> 00:36:51,920
function invocation ID, user ID, service principle ID.

993
00:36:51,920 –> 00:36:54,800
If you can’t join the data, you can’t reason about the system.

994
00:36:54,800 –> 00:36:57,120
And if you can’t reason about it, you can’t scale it.

995
00:36:57,120 –> 00:36:58,240
Now Sentinel.

996
00:36:58,240 –> 00:37:00,400
Sentinel is not the place you dump logs

997
00:37:00,400 –> 00:37:02,120
and hope intelligence happens.

998
00:37:02,120 –> 00:37:04,080
Sentinel is where you codify detections

999
00:37:04,080 –> 00:37:06,120
that matter for SharePoint automation.

1000
00:37:06,120 –> 00:37:08,320
Oversharing patterns, abnormal access

1001
00:37:08,320 –> 00:37:11,160
and automation identities, doing suspicious things.

1002
00:37:11,160 –> 00:37:13,120
Start with Oversharing detections.

1003
00:37:13,120 –> 00:37:16,640
New anonymous links created on a library that should never allow them.

1004
00:37:16,640 –> 00:37:19,480
A spike in shared with external user’s events.

1005
00:37:19,480 –> 00:37:21,160
A folder with broken inheritance

1006
00:37:21,160 –> 00:37:23,600
that suddenly starts receiving labeled content.

1007
00:37:23,600 –> 00:37:25,120
Those are high signal events

1008
00:37:25,120 –> 00:37:27,960
because they represent boundary failure, not just activity.

1009
00:37:27,960 –> 00:37:29,640
Then abnormal access patterns,

1010
00:37:29,640 –> 00:37:32,200
a guest account downloading hundreds of files.

1011
00:37:32,200 –> 00:37:34,680
A user accessing a site they never touched before

1012
00:37:34,680 –> 00:37:36,280
right after an invitation,

1013
00:37:36,280 –> 00:37:38,600
a service principle reading across many sites

1014
00:37:38,600 –> 00:37:40,320
outside its normal scope.

1015
00:37:40,320 –> 00:37:42,080
Those aren’t maybe incidences.

1016
00:37:42,080 –> 00:37:42,960
They’re the kinds of patterns

1017
00:37:42,960 –> 00:37:45,560
that if you ignore them, become breach narratives.

1018
00:37:45,560 –> 00:37:49,120
And now the part most org skip automation failure signals.

1019
00:37:49,120 –> 00:37:51,040
A flow failing is not an IT problem.

1020
00:37:51,040 –> 00:37:52,360
It’s a business process outage.

1021
00:37:52,360 –> 00:37:55,240
So your detections need to include sustained failure rates

1022
00:37:55,240 –> 00:37:57,240
above a threshold, dead letter growth,

1023
00:37:57,240 –> 00:37:59,840
retreats exceeding normal QAG exceeding SLA

1024
00:37:59,840 –> 00:38:02,840
and flows with no owners receiving failure notifications.

1025
00:38:02,840 –> 00:38:05,880
Failure without alerting is just deferred surprise.

1026
00:38:05,880 –> 00:38:07,320
That leads to the brutal question,

1027
00:38:07,320 –> 00:38:08,880
what metrics actually matter?

1028
00:38:08,880 –> 00:38:10,320
Most dashboards are vanity.

1029
00:38:10,320 –> 00:38:13,280
The real signals are latency, throughput, failure rate

1030
00:38:13,280 –> 00:38:15,480
and drift, latency.

1031
00:38:15,480 –> 00:38:17,840
How long from event to enforcement?

1032
00:38:17,840 –> 00:38:20,160
Not run duration and to end time.

1033
00:38:20,160 –> 00:38:22,160
Even approval takes two days fine.

1034
00:38:22,160 –> 00:38:25,120
But if label applied after upload takes 30 minutes,

1035
00:38:25,120 –> 00:38:26,960
you’ve just created an exposure window.

1036
00:38:26,960 –> 00:38:30,920
throughput, events processed per unit time

1037
00:38:30,920 –> 00:38:33,480
and how that changes during predictable spikes.

1038
00:38:33,480 –> 00:38:36,360
Month end, Monday morning, quarter close,

1039
00:38:36,360 –> 00:38:39,160
the system must survive reality, not average load.

1040
00:38:39,160 –> 00:38:41,240
Failure rate not did it fail once.

1041
00:38:41,240 –> 00:38:42,800
Failure distribution by connector,

1042
00:38:42,800 –> 00:38:46,120
by side, by label, by identity, by workflow version.

1043
00:38:46,120 –> 00:38:48,600
This is how you find systemic brittleness.

1044
00:38:48,600 –> 00:38:50,880
Drift trend lines.

1045
00:38:50,880 –> 00:38:52,920
Permissions inheritance breaks over time,

1046
00:38:52,920 –> 00:38:55,560
guest count per site, number of flows per site,

1047
00:38:55,560 –> 00:38:57,320
number of quick step invocation points,

1048
00:38:57,320 –> 00:38:58,720
number of exceptions.

1049
00:38:58,720 –> 00:39:00,280
Drift is your entropy meter.

1050
00:39:00,280 –> 00:39:01,800
And here’s the governance outcome.

1051
00:39:01,800 –> 00:39:04,640
Observability isn’t optional because you like monitoring.

1052
00:39:04,640 –> 00:39:06,120
And it’s required because automation

1053
00:39:06,120 –> 00:39:08,000
without observability is blind execution

1054
00:39:08,000 –> 00:39:10,320
and blind execution eventually hits the one library

1055
00:39:10,320 –> 00:39:13,080
that contained the one document that triggers the one audit.

1056
00:39:13,080 –> 00:39:15,240
So once you’ve built the control plane,

1057
00:39:15,240 –> 00:39:17,360
identity labels, DLP and telemetry,

1058
00:39:17,360 –> 00:39:19,200
you can finally talk about scale scenarios

1059
00:39:19,200 –> 00:39:20,520
without lying to yourself.

1060
00:39:20,520 –> 00:39:22,880
And the first one is the most common enterprise fantasy,

1061
00:39:22,880 –> 00:39:25,200
provisioning, scenario one framing.

1062
00:39:25,200 –> 00:39:27,960
Provisioning is a factory line, not a request form.

1063
00:39:27,960 –> 00:39:30,320
Provisioning is where SharePoint automation stops

1064
00:39:30,320 –> 00:39:32,080
being a convenience feature and becomes

1065
00:39:32,080 –> 00:39:34,160
an enterprise liability generator

1066
00:39:34,160 –> 00:39:36,120
because every organization starts the same way.

1067
00:39:36,120 –> 00:39:38,680
Someone creates a site for a project, then another.

1068
00:39:38,680 –> 00:39:40,360
Someone uses a template.

1069
00:39:40,360 –> 00:39:41,200
Someone doesn’t.

1070
00:39:41,200 –> 00:39:42,480
Someone adds owners directly.

1071
00:39:42,480 –> 00:39:44,240
Someone breaks inheritance on a folder

1072
00:39:44,240 –> 00:39:46,080
because finance needs privacy.

1073
00:39:46,080 –> 00:39:47,920
Guests get invited because it’s urgent.

1074
00:39:47,920 –> 00:39:51,280
A year later, nobody remembers why half of these sites exist,

1075
00:39:51,280 –> 00:39:54,520
who owns them or which ones contain regulated content.

1076
00:39:54,520 –> 00:39:56,120
That isn’t user failure.

1077
00:39:56,120 –> 00:39:57,520
That’s a missing factory.

1078
00:39:57,520 –> 00:40:00,600
Most enterprises treat provisioning

1079
00:40:00,600 –> 00:40:02,280
like a request form problem.

1080
00:40:02,280 –> 00:40:04,040
Let’s make a form, ask a few questions

1081
00:40:04,040 –> 00:40:05,480
and route it for approval.

1082
00:40:05,480 –> 00:40:06,280
They get the form.

1083
00:40:06,280 –> 00:40:07,640
They even get the approval.

1084
00:40:07,640 –> 00:40:10,160
What they never build is the assembly line behind it.

1085
00:40:10,160 –> 00:40:12,840
Deterministic creation, deterministic configuration,

1086
00:40:12,840 –> 00:40:15,400
deterministic access model and deterministic life cycle.

1087
00:40:15,400 –> 00:40:16,680
So the framing is strict.

1088
00:40:16,680 –> 00:40:18,040
Provisioning is manufacturing.

1089
00:40:18,040 –> 00:40:20,160
A request is just demand signal.

1090
00:40:20,160 –> 00:40:22,600
The product is a workspace with known properties

1091
00:40:22,600 –> 00:40:24,600
and if you don’t build it like manufacturing,

1092
00:40:24,600 –> 00:40:26,560
you don’t get some inconsistency.

1093
00:40:26,560 –> 00:40:28,280
Are you getting uncontrolled estate?

1094
00:40:28,280 –> 00:40:30,120
Thousands of workspaces that behave differently,

1095
00:40:30,120 –> 00:40:32,440
leak differently and fail audits differently.

1096
00:40:32,440 –> 00:40:35,080
The factory line model starts with a few non-negotiables.

1097
00:40:35,080 –> 00:40:38,920
First, every site is created from a template, not usually.

1098
00:40:38,920 –> 00:40:41,040
Always, the template isn’t only branding.

1099
00:40:41,040 –> 00:40:43,920
It’s baseline controls, default sharing posture,

1100
00:40:43,920 –> 00:40:46,280
default sensitivity label expectations,

1101
00:40:46,280 –> 00:40:48,920
default library structure, default navigation,

1102
00:40:48,920 –> 00:40:51,120
default owners and members mapping,

1103
00:40:51,120 –> 00:40:53,800
default retention configuration where applicable

1104
00:40:53,800 –> 00:40:56,040
and the metadata standards that make automation

1105
00:40:56,040 –> 00:40:57,520
reliable later.

1106
00:40:57,520 –> 00:41:01,080
Second, every site has a countable ownership at creation time.

1107
00:41:01,080 –> 00:41:03,760
Not a person’s name typed into a text field.

1108
00:41:03,760 –> 00:41:06,680
An Entra group as the owner with at least two human owners

1109
00:41:06,680 –> 00:41:09,400
inside it and an actual life cycle expectation.

1110
00:41:09,400 –> 00:41:11,360
If ownership is optional, the estate becomes

1111
00:41:11,360 –> 00:41:12,960
often on day one.

1112
00:41:12,960 –> 00:41:15,280
Then your life cycle policy becomes a clean up script

1113
00:41:15,280 –> 00:41:16,880
that no one wants to run because it will

1114
00:41:16,880 –> 00:41:18,480
delete something important.

1115
00:41:18,480 –> 00:41:20,680
Third, permissions come from the group model,

1116
00:41:20,680 –> 00:41:22,160
not from creativity.

1117
00:41:22,160 –> 00:41:24,680
The provisioning pipeline doesn’t ask who should have access.

1118
00:41:24,680 –> 00:41:26,960
And it asks which access model applies.

1119
00:41:26,960 –> 00:41:29,440
Internal project, external collaboration zone,

1120
00:41:29,440 –> 00:41:31,840
records repository, department hub,

1121
00:41:31,840 –> 00:41:35,240
each one maps to a predefined set of groups and site settings.

1122
00:41:35,240 –> 00:41:37,400
That’s how you stop every new workspace

1123
00:41:37,400 –> 00:41:41,200
from being a custom snowflake with a custom risk profile.

1124
00:41:41,200 –> 00:41:44,160
Now the part lead is always under estimate volume.

1125
00:41:44,160 –> 00:41:48,080
At enterprise scale, provisioning isn’t a few sites per week.

1126
00:41:48,080 –> 00:41:50,000
It’s constant background noise, new teams,

1127
00:41:50,000 –> 00:41:52,960
new initiatives, new partners, reorganizations, acquisitions,

1128
00:41:52,960 –> 00:41:54,960
divestitures and compliance requirements

1129
00:41:54,960 –> 00:41:56,720
that force new segregation.

1130
00:41:56,720 –> 00:41:59,480
The demand doesn’t slow down because governance is busy.

1131
00:41:59,480 –> 00:42:01,240
It speeds up because the business is busy.

1132
00:42:01,240 –> 00:42:02,600
That means the provisioning system

1133
00:42:02,600 –> 00:42:03,920
can’t be a human pipeline.

1134
00:42:03,920 –> 00:42:06,560
It has to be event driven and async

1135
00:42:06,560 –> 00:42:09,160
with predictable throughput and failure handling.

1136
00:42:09,160 –> 00:42:11,240
Because a manual synchronous provisioning flow

1137
00:42:11,240 –> 00:42:12,760
doesn’t just create delays.

1138
00:42:12,760 –> 00:42:14,120
It creates bypass behavior.

1139
00:42:14,120 –> 00:42:15,520
People will create sites directly

1140
00:42:15,520 –> 00:42:17,240
because it’s urgent and your factory

1141
00:42:17,240 –> 00:42:19,320
gets quietly replaced by shadow manufacturing.

1142
00:42:19,320 –> 00:42:21,600
So a scalable provisioning pattern looks like this.

1143
00:42:21,600 –> 00:42:25,920
Intake, validate, approve, provision, enforce and register.

1144
00:42:25,920 –> 00:42:29,160
Intake is your request portal form or agent-driven entry point.

1145
00:42:29,160 –> 00:42:30,920
That’s the only place you collect human intent.

1146
00:42:30,920 –> 00:42:33,720
Validation is where you enforce naming standards,

1147
00:42:33,720 –> 00:42:36,520
required fields and policy eligibility.

1148
00:42:36,520 –> 00:42:39,680
Can this user request an external collaboration site?

1149
00:42:39,680 –> 00:42:43,320
Is this business unit allowed to create a hub site association?

1150
00:42:43,320 –> 00:42:46,600
Does this workload require a retention label?

1151
00:42:46,600 –> 00:42:49,960
The validation step is where you reject bad requests quickly

1152
00:42:49,960 –> 00:42:52,480
before you create infrastructure you’ll regret.

1153
00:42:52,480 –> 00:42:54,560
Approval is not about gatekeeping creation.

1154
00:42:54,560 –> 00:42:56,280
Approval is about allocating risk.

1155
00:42:56,280 –> 00:42:57,960
Someone with actual authority signs

1156
00:42:57,960 –> 00:42:59,800
of that this workspace should exist

1157
00:42:59,800 –> 00:43:00,840
with these boundaries.

1158
00:43:00,840 –> 00:43:03,240
And the approval must be tied to the same identity model

1159
00:43:03,240 –> 00:43:04,600
you’ll enforce later.

1160
00:43:04,600 –> 00:43:06,640
If approvers are ad hoc, you’ve created a loophole

1161
00:43:06,640 –> 00:43:08,120
with a pretty UI.

1162
00:43:08,120 –> 00:43:10,640
Provisioning itself is pure execution.

1163
00:43:10,640 –> 00:43:13,800
Create the site using graph, apply the template,

1164
00:43:13,800 –> 00:43:17,040
associate to the correct hub, create libraries and lists,

1165
00:43:17,040 –> 00:43:20,320
apply baseline settings, create the owner member groups

1166
00:43:20,320 –> 00:43:21,720
and apply permissions.

1167
00:43:21,720 –> 00:43:24,760
No branching business logic scattered across 20 flow steps,

1168
00:43:24,760 –> 00:43:28,200
one provisioning service, versioned, testable and repeatable.

1169
00:43:28,200 –> 00:43:29,960
And then the thing everyone forgets.

1170
00:43:29,960 –> 00:43:30,880
Registration.

1171
00:43:30,880 –> 00:43:33,360
If a site exists but isn’t registered in an inventory

1172
00:43:33,360 –> 00:43:35,920
with purpose, owner group, classification expectations

1173
00:43:35,920 –> 00:43:37,560
and lifecycle policy, it’s invisible.

1174
00:43:37,560 –> 00:43:39,400
Invisible becomes ungovernable.

1175
00:43:39,400 –> 00:43:41,840
Ungovernable becomes, we didn’t know it was there

1176
00:43:41,840 –> 00:43:43,560
when co-pilot start surfacing it

1177
00:43:43,560 –> 00:43:46,320
or when an auditor asks why a partner still has access

1178
00:43:46,320 –> 00:43:48,080
two years after the contract ended.

1179
00:43:48,080 –> 00:43:49,680
Finally, lifecycle.

1180
00:43:49,680 –> 00:43:52,240
Provisioning without lifecycle is just automated sprawl.

1181
00:43:52,240 –> 00:43:54,560
So the factory must include in activity thresholds

1182
00:43:54,560 –> 00:43:56,160
renewal prompts for ownership,

1183
00:43:56,160 –> 00:43:59,160
enforced transfer of ownership when owners leave archival pathways

1184
00:43:59,160 –> 00:44:01,680
and retirement that’s policy driven instead of emotional.

1185
00:44:01,680 –> 00:44:03,720
The system doesn’t ask humans to remember.

1186
00:44:03,720 –> 00:44:06,680
It detects, notifies, escalates and then enforces.

1187
00:44:06,680 –> 00:44:07,440
That’s the frame.

1188
00:44:07,440 –> 00:44:10,360
Provisioning is a factory line, not a request form.

1189
00:44:10,360 –> 00:44:12,920
And once you accept that, the next section gets concrete.

1190
00:44:12,920 –> 00:44:15,160
The reference architecture that implements this factory

1191
00:44:15,160 –> 00:44:18,280
with graph provisioning and queue-based orchestration.

1192
00:44:18,280 –> 00:44:20,640
Scenario one reference architecture, graph provisioning

1193
00:44:20,640 –> 00:44:22,440
plus queue-based orchestration.

1194
00:44:22,440 –> 00:44:24,480
The reference architecture is deliberately boring

1195
00:44:24,480 –> 00:44:27,480
because boring is what survives enterprise scale.

1196
00:44:27,480 –> 00:44:30,120
It starts with an entry point that looks like a request

1197
00:44:30,120 –> 00:44:33,760
but behaves like a contract, a form, a portal, an agent.

1198
00:44:33,760 –> 00:44:34,680
It doesn’t matter.

1199
00:44:34,680 –> 00:44:36,280
What matters is the payload.

1200
00:44:36,280 –> 00:44:38,720
Purpose, data classification expectations,

1201
00:44:38,720 –> 00:44:41,440
internal versus external, requested owners group

1202
00:44:41,440 –> 00:44:43,440
and any required lifecycle dates.

1203
00:44:43,440 –> 00:44:45,160
And if the request can’t express intent

1204
00:44:45,160 –> 00:44:47,280
in a structured way, the provisioning pipeline

1205
00:44:47,280 –> 00:44:49,440
can’t enforce it later, you’ll be guessing.

1206
00:44:49,440 –> 00:44:51,600
Systems guess badly.

1207
00:44:51,600 –> 00:44:54,160
From there, the first component is validation.

1208
00:44:54,160 –> 00:44:57,040
Not does the form have values, policy validation,

1209
00:44:57,040 –> 00:45:01,000
naming conventions, allowed site types, allowed hubs,

1210
00:45:01,000 –> 00:45:02,640
allowed sharing posture.

1211
00:45:02,640 –> 00:45:05,840
If the request asks for an external collaboration site,

1212
00:45:05,840 –> 00:45:07,840
the validator checks whether the requester

1213
00:45:07,840 –> 00:45:10,160
is allowed to sponsor external access,

1214
00:45:10,160 –> 00:45:12,360
whether the tenant policy allows it

1215
00:45:12,360 –> 00:45:15,520
and whether the right collaboration zone exists.

1216
00:45:15,520 –> 00:45:18,080
If the request fails validation, it stops here,

1217
00:45:18,080 –> 00:45:19,600
cleanly, with a reason.

1218
00:45:19,600 –> 00:45:22,040
The goal is to fail fast before anything exists.

1219
00:45:22,040 –> 00:45:22,920
Then approval.

1220
00:45:22,920 –> 00:45:23,880
This is the risk gate.

1221
00:45:23,880 –> 00:45:26,480
The approver isn’t someone in IT.

1222
00:45:26,480 –> 00:45:28,880
It’s the authority that owns the risk, business owner

1223
00:45:28,880 –> 00:45:32,080
for the workspace plus, when required, compliance,

1224
00:45:32,080 –> 00:45:34,600
or security for specific data classes.

1225
00:45:34,600 –> 00:45:36,760
The approval object is stored as evidence,

1226
00:45:36,760 –> 00:45:38,600
who approved what they approved

1227
00:45:38,600 –> 00:45:40,560
and what policy profile was applied.

1228
00:45:40,560 –> 00:45:42,080
And if you can’t reconstruct that later,

1229
00:45:42,080 –> 00:45:44,520
you don’t have governance, you have folklore.

1230
00:45:44,520 –> 00:45:46,560
Now the actual provisioning path, Microsoft Graph,

1231
00:45:46,560 –> 00:45:49,160
Graph creates the site, but the provisioning service

1232
00:45:49,160 –> 00:45:50,800
owns the choreography.

1233
00:45:50,800 –> 00:45:54,360
Site creation, hub association, baseline site settings,

1234
00:45:54,360 –> 00:45:57,000
default sharing posture, feature toggles that matter,

1235
00:45:57,000 –> 00:45:59,600
library creation, list creation, navigation, homepage,

1236
00:45:59,600 –> 00:46:01,720
this is where teams get tempted to embed logic

1237
00:46:01,720 –> 00:46:04,440
into a 200 step flow, don’t.

1238
00:46:04,440 –> 00:46:06,440
The provisioning service should be one unit,

1239
00:46:06,440 –> 00:46:08,600
versioned, testable, and repeatable.

1240
00:46:08,600 –> 00:46:09,880
If you can’t redeploy it safely,

1241
00:46:09,880 –> 00:46:11,560
you’ll end up with old sites and new sites

1242
00:46:11,560 –> 00:46:13,520
that behave differently, and then your support team

1243
00:46:13,520 –> 00:46:16,440
lives in a split-brainer state, permissions are applied next,

1244
00:46:16,440 –> 00:46:18,080
and they are not optional.

1245
00:46:18,080 –> 00:46:20,200
Owners and members map to entra-groups,

1246
00:46:20,200 –> 00:46:22,600
nested groups where you need roll separation.

1247
00:46:22,600 –> 00:46:24,680
No direct assignments because direct assignments

1248
00:46:24,680 –> 00:46:27,680
don’t scale and they don’t survive staff turnover.

1249
00:46:27,680 –> 00:46:29,480
The provisioning service sets the groups,

1250
00:46:29,480 –> 00:46:32,480
assigns them to the site, and writes the group IDs

1251
00:46:32,480 –> 00:46:35,200
back into the site metadata or a central inventory,

1252
00:46:35,200 –> 00:46:37,000
so you can later prove which group

1253
00:46:37,000 –> 00:46:38,760
was supposed to control access.

1254
00:46:38,760 –> 00:46:40,720
Now the part that makes this actually scale,

1255
00:46:40,720 –> 00:46:42,360
queue-based orchestration.

1256
00:46:42,360 –> 00:46:44,760
The intake and approval pipeline should not do the work.

1257
00:46:44,760 –> 00:46:46,800
It should include the work, a queue message includes

1258
00:46:46,800 –> 00:46:48,760
the request ID, the target site profile,

1259
00:46:48,760 –> 00:46:51,400
the damp-potency key, and the desired state,

1260
00:46:51,400 –> 00:46:54,160
then workers pull from the queue and execute provisioning steps.

1261
00:46:54,160 –> 00:46:56,080
Why? Because you need retries, you need back-off,

1262
00:46:56,080 –> 00:46:57,760
and you need to survive graph throttling

1263
00:46:57,760 –> 00:47:00,240
without turning provisioning into a timeout festival.

1264
00:47:00,240 –> 00:47:02,080
IDem potency is the hard requirement.

1265
00:47:02,080 –> 00:47:04,160
If the same request gets processed twice,

1266
00:47:04,160 –> 00:47:07,160
the second run must detect this site already exists,

1267
00:47:07,160 –> 00:47:09,400
and converge it to the desired configuration,

1268
00:47:09,400 –> 00:47:10,600
not create a duplicate.

1269
00:47:10,600 –> 00:47:13,840
That means the system keeps a durable state record.

1270
00:47:13,840 –> 00:47:16,040
Request received approved site-created,

1271
00:47:16,040 –> 00:47:19,080
hub-joined permissions applied baseline configured registration

1272
00:47:19,080 –> 00:47:19,680
completed.

1273
00:47:19,680 –> 00:47:22,200
If a worker dies halfway, the next worker resumes.

1274
00:47:22,200 –> 00:47:23,200
No guesswork.

1275
00:47:23,200 –> 00:47:25,160
Retries are engineered, not hoped for.

1276
00:47:25,160 –> 00:47:26,960
Transient graph errors get retried

1277
00:47:26,960 –> 00:47:28,400
with exponential back-off.

1278
00:47:28,400 –> 00:47:30,760
Permanent errors get sent to a dead-letter queue

1279
00:47:30,760 –> 00:47:33,400
with the full context needed to replay safely,

1280
00:47:33,400 –> 00:47:35,080
and replay isn’t click-run again for it.

1281
00:47:35,080 –> 00:47:37,040
Replay is, re-inqueue the same request

1282
00:47:37,040 –> 00:47:39,840
with the same IDem potency key and let the system converge.

1283
00:47:39,840 –> 00:47:42,520
Finally, registration and reporting.

1284
00:47:42,520 –> 00:47:45,120
Every provisioned site is written to an inventory.

1285
00:47:45,120 –> 00:47:48,360
Purpose, owner group, sensitivity expectations,

1286
00:47:48,360 –> 00:47:51,920
external collaboration status, and life cycle policy.

1287
00:47:51,920 –> 00:47:54,160
This inventory feeds monitoring and governance.

1288
00:47:54,160 –> 00:47:56,240
It’s also how you answer the only question leaders

1289
00:47:56,240 –> 00:47:59,920
care about during audits, how many exist, who owns them,

1290
00:47:59,920 –> 00:48:01,120
and are they compliant?

1291
00:48:01,120 –> 00:48:03,360
That’s the reference architecture, contract intake,

1292
00:48:03,360 –> 00:48:05,960
policy validation, explicit approval evidence,

1293
00:48:05,960 –> 00:48:08,480
graph-based provisioning, group first permissions,

1294
00:48:08,480 –> 00:48:11,120
and queue-driven orchestration with IDem potency.

1295
00:48:11,120 –> 00:48:12,120
It’s not glamorous.

1296
00:48:12,120 –> 00:48:13,200
It’s operable.

1297
00:48:13,200 –> 00:48:15,440
Scenario one, SharePoint Native layer,

1298
00:48:15,440 –> 00:48:19,000
Quick steps and integrated workflows as front ends.

1299
00:48:19,000 –> 00:48:20,720
Now comes the part that confuses people

1300
00:48:20,720 –> 00:48:23,880
because they think provisioning ends when the site exists.

1301
00:48:23,880 –> 00:48:24,720
It doesn’t.

1302
00:48:24,720 –> 00:48:27,320
Provisioning ends when users can do the right thing by default.

1303
00:48:27,320 –> 00:48:30,520
This is where SharePoint Native automation features fit.

1304
00:48:30,520 –> 00:48:34,480
Quick steps, integrated workflows, and lightweight approvals,

1305
00:48:34,480 –> 00:48:35,840
not as the provisioning system,

1306
00:48:35,840 –> 00:48:37,880
but as the front ends that let humans interact

1307
00:48:37,880 –> 00:48:40,360
with the factory without having to understand the factory.

1308
00:48:40,360 –> 00:48:42,240
Start with Quick steps.

1309
00:48:42,240 –> 00:48:44,800
In this architecture, Quick steps are not random convenience

1310
00:48:44,800 –> 00:48:47,160
buttons created by whoever has edit rights.

1311
00:48:47,160 –> 00:48:49,960
Quick steps are standardized in vocation points.

1312
00:48:49,960 –> 00:48:53,120
The sanctioned set of actions uses can take on content

1313
00:48:53,120 –> 00:48:55,920
that will always root into the governed automation path.

1314
00:48:55,920 –> 00:48:58,880
That means you treat Quick steps like an API surface.

1315
00:48:58,880 –> 00:49:01,440
You decide which actions exist beside template.

1316
00:49:01,440 –> 00:49:04,320
You decide which libraries get which Quick steps,

1317
00:49:04,320 –> 00:49:06,760
and you decide what those Quick steps are allowed to trigger.

1318
00:49:06,760 –> 00:49:09,080
Because the biggest mistake is letting every library owner

1319
00:49:09,080 –> 00:49:12,800
invent their own buttons and accidentally create a shadow process landscape.

1320
00:49:12,800 –> 00:49:16,840
The simple pattern is, Quick steps give users consistent verbs,

1321
00:49:16,840 –> 00:49:18,040
submit for review.

1322
00:49:18,040 –> 00:49:19,320
Request external share.

1323
00:49:19,320 –> 00:49:20,280
Move to funded.

1324
00:49:20,280 –> 00:49:21,200
Create case.

1325
00:49:21,200 –> 00:49:23,800
Those verbs should map to explicit metadata transitions,

1326
00:49:23,800 –> 00:49:25,240
not direct side effects.

1327
00:49:25,240 –> 00:49:28,760
A Quick step that sets status from draft to submit it is predictable.

1328
00:49:28,760 –> 00:49:32,040
A Quick step that moves files between libraries, changes permissions,

1329
00:49:32,040 –> 00:49:34,280
and emails external recipients is not.

1330
00:49:34,280 –> 00:49:37,400
Side effects belong in orchestration, not in UI buttons.

1331
00:49:37,400 –> 00:49:40,840
So you design Quick steps to do one job, mark intent.

1332
00:49:40,840 –> 00:49:42,800
Then your pipeline listens for that intent

1333
00:49:42,800 –> 00:49:45,920
and executes the controlled steps behind it.

1334
00:49:45,920 –> 00:49:49,560
This also makes idempotency easier because status change to submitted

1335
00:49:49,560 –> 00:49:51,560
becomes your stable event rather than user

1336
00:49:51,560 –> 00:49:54,320
click the button five times because the UI lagged.

1337
00:49:54,320 –> 00:49:55,880
Now integrated workflows.

1338
00:49:55,880 –> 00:49:59,080
Microsoft is bringing a workflows UX into SharePoint

1339
00:49:59,080 –> 00:50:03,240
that looks like Teams workflows, templates, pre-configured connections,

1340
00:50:03,240 –> 00:50:06,840
simple edits, and a build from scratch path.

1341
00:50:06,840 –> 00:50:09,480
For enterprise automation, the value isn’t that it’s easier to build.

1342
00:50:09,480 –> 00:50:13,040
The value is that it’s easier to standardize if you treat it correctly.

1343
00:50:13,040 –> 00:50:15,520
Integrated workflows should exist as approved templates

1344
00:50:15,520 –> 00:50:19,360
that implement front and patterns, notifications, reminders, lightweight

1345
00:50:19,360 –> 00:50:21,320
routing, and simple post-approval steps

1346
00:50:21,320 –> 00:50:23,680
that don’t cross major governance boundaries.

1347
00:50:23,680 –> 00:50:26,760
They’re allowed to accelerate the last mile of team productivity

1348
00:50:26,760 –> 00:50:28,680
because they run inside the site context

1349
00:50:28,680 –> 00:50:30,360
and make the experience cohesive.

1350
00:50:30,360 –> 00:50:32,160
But the system law stays intact.

1351
00:50:32,160 –> 00:50:35,080
Anything that looks like a backend service does not live here.

1352
00:50:35,080 –> 00:50:37,520
Provisioning doesn’t live here, life cycle doesn’t live here,

1353
00:50:37,520 –> 00:50:41,280
compliance enforcement doesn’t live here, high volume event processing doesn’t live here.

1354
00:50:41,280 –> 00:50:44,160
Those belong in the central orchestration layer you already designed

1355
00:50:44,160 –> 00:50:46,680
because you need versioning, deployment control,

1356
00:50:46,680 –> 00:50:49,600
retries, and a single place to observe system behavior.

1357
00:50:49,600 –> 00:50:52,560
So the enterprise rule is SharePoint native workflows

1358
00:50:52,560 –> 00:50:54,720
are front ends, not foundations.

1359
00:50:54,720 –> 00:50:56,680
They handle the human facing edges.

1360
00:50:56,680 –> 00:51:00,640
The places where people start a process, get notified, provide input,

1361
00:51:00,640 –> 00:51:01,640
and see status.

1362
00:51:01,640 –> 00:51:04,240
The moment the workflow needs to do something irreversible

1363
00:51:04,240 –> 00:51:07,680
cross boundary or high risk, it hands off to the central pipeline

1364
00:51:07,680 –> 00:51:11,720
through a controlled mechanism, a queue message, a call to a function,

1365
00:51:11,720 –> 00:51:15,640
or a standardized connector action that hits your orchestration endpoint,

1366
00:51:15,640 –> 00:51:19,880
that handoff is the line between team automation and enterprise automation.

1367
00:51:19,880 –> 00:51:23,800
Now the ugly feature, execute flow inside quick steps.

1368
00:51:23,800 –> 00:51:27,760
It’s powerful because it turns any document library into a launch pad for process.

1369
00:51:27,760 –> 00:51:31,240
It’s dangerous because it turns any document library into a launch pad for process.

1370
00:51:31,240 –> 00:51:33,760
The governance issue isn’t that it can trigger a flow.

1371
00:51:33,760 –> 00:51:38,520
The issue is that it can trigger a flow that lives outside the mental model of the site.

1372
00:51:38,520 –> 00:51:41,400
And because it can target flows outside the default environment,

1373
00:51:41,400 –> 00:51:44,600
you can end up with a button in a library that invokes automation

1374
00:51:44,600 –> 00:51:49,120
in an environment your governance team doesn’t associate with that site’s risk profile.

1375
00:51:49,120 –> 00:51:52,880
So the control is simple, don’t govern flows, govern invocation.

1376
00:51:52,880 –> 00:51:55,040
Only approved quick steps can execute flows.

1377
00:51:55,040 –> 00:51:57,880
Only approved flows can be executed from quick steps.

1378
00:51:57,880 –> 00:52:01,440
And those approvals need to be enforced by environment strategy and ownership rules,

1379
00:52:01,440 –> 00:52:03,080
not by please don’t.

1380
00:52:03,080 –> 00:52:07,080
This is where power platform governance intersects with SharePoint design.

1381
00:52:07,080 –> 00:52:10,880
If your environment strategy is loose, quick steps become a convenient bypass.

1382
00:52:10,880 –> 00:52:15,080
If your environment strategy is strict, quick steps become a safe accelerator.

1383
00:52:15,080 –> 00:52:20,200
Now talk about accountability because enterprise workflows don’t fail gracefully when nobody owns them.

1384
00:52:20,200 –> 00:52:24,120
SharePoints workflows pay and exposes things like run history and owners.

1385
00:52:24,120 –> 00:52:27,840
That’s useful, but it’s not enough unless you standardize ownership as a requirement.

1386
00:52:27,840 –> 00:52:30,480
Every workflow must have an owner group, not a person.

1387
00:52:30,480 –> 00:52:35,160
Every workflow must emit failure signals to a monitored channel, not to someone’s inbox.

1388
00:52:35,160 –> 00:52:38,880
And every workflow must be tied to the site inventory so you can answer

1389
00:52:38,880 –> 00:52:42,280
what automations exist here, who owns them and what happens when they break.

1390
00:52:42,280 –> 00:52:47,880
This is also why the SharePoint native layer should be deployed through templates, not created ad hoc.

1391
00:52:47,880 –> 00:52:51,800
The template defines the quick steps, the allowed workflows, the approval settings,

1392
00:52:51,800 –> 00:52:54,000
and the metadata columns that represent state.

1393
00:52:54,000 –> 00:52:57,600
Users get a clean experience, the enterprise gets a predictable control surface.

1394
00:52:57,600 –> 00:53:00,600
And with that, the front end and the factory finally align.

1395
00:53:00,600 –> 00:53:05,320
People click a simple button, metadata moves to a new state, the event pipeline triggers,

1396
00:53:05,320 –> 00:53:10,080
the orchestration executes, and enforcement applies labels, permissions, and logging.

1397
00:53:10,080 –> 00:53:12,560
The UI stays simple, the architecture stays real.

1398
00:53:12,560 –> 00:53:16,800
Scenario one, lifecycle enforcement archive, log transfer ownership, retire.

1399
00:53:16,800 –> 00:53:20,760
Lifecycle enforcement is the part everyone agrees with in theory and then quietly avoids

1400
00:53:20,760 –> 00:53:24,080
because it forces the organization to admit something uncomfortable.

1401
00:53:24,080 –> 00:53:26,240
Workspaces are liabilities.

1402
00:53:26,240 –> 00:53:28,600
A SharePoint site is not a place to collaborate.

1403
00:53:28,600 –> 00:53:32,120
It’s a permission boundary, a data container, and a long-term obligation.

1404
00:53:32,120 –> 00:53:36,760
If the lifecycle is optional, your automation program doesn’t scale into productivity.

1405
00:53:36,760 –> 00:53:39,320
It scales into an estate, you can’t explain.

1406
00:53:39,320 –> 00:53:43,160
So the lifecycle pattern has to be designed like enforcement, not like reminders.

1407
00:53:43,160 –> 00:53:47,040
Start with inactivity handling because that’s the cleanest signal you’ll ever get.

1408
00:53:47,040 –> 00:53:52,280
A site stops being used, file stop changing, pages stop being edited, membership stops shifting.

1409
00:53:52,280 –> 00:53:55,520
And yes, there are edge cases, a site can be quiet and still important.

1410
00:53:55,520 –> 00:53:57,520
That’s why the system doesn’t delete first.

1411
00:53:57,520 –> 00:54:02,720
It detects, then it notifies, then it escalates, then it enforces.

1412
00:54:02,720 –> 00:54:04,720
A scalable policy looks like this.

1413
00:54:04,720 –> 00:54:08,880
After end days of inactivity, notify the owner group with a simple choice.

1414
00:54:08,880 –> 00:54:11,520
Extend, archive, or retire.

1415
00:54:11,520 –> 00:54:14,480
If they extend, they must supply a reason and an end date.

1416
00:54:14,480 –> 00:54:17,720
That reason becomes evidence, not because auditors love text fields,

1417
00:54:17,720 –> 00:54:21,240
but because future humans need to understand why the exception existed.

1418
00:54:21,240 –> 00:54:23,920
If nobody responds, the system does what humans always avoid.

1419
00:54:23,920 –> 00:54:24,920
It proceeds.

1420
00:54:24,920 –> 00:54:27,240
Archival is not a vibe, it’s a state transition.

1421
00:54:27,240 –> 00:54:31,400
Archived means membership is locked down, editing is restricted,

1422
00:54:31,400 –> 00:54:37,320
external sharing is disabled, and the site becomes read only, or near read only, depending on your policy.

1423
00:54:37,320 –> 00:54:41,800
If the business needs to reopen it, they can, but reopening is an explicit action

1424
00:54:41,800 –> 00:54:45,880
with an audit trail, not an accident caused by someone stumbling into ad member,

1425
00:54:45,880 –> 00:54:50,440
then you implement locking because some content should remain accessible but not mutable.

1426
00:54:50,440 –> 00:54:54,640
Locking is the difference between we kept it and we preserved evidence.

1427
00:54:54,640 –> 00:54:59,840
Now if a project is over, you don’t want someone to upload final documents six months later and rewrite history.

1428
00:54:59,840 –> 00:55:02,080
So the policy defines when the system locks.

1429
00:55:02,080 –> 00:55:07,320
Project end date, contract termination, regulatory trigger, or a status transition like closed.

1430
00:55:07,320 –> 00:55:12,080
The lock should be enforced by permission changes and sharing posture, not by telling users to behave.

1431
00:55:12,080 –> 00:55:15,760
Now ownership often sites are the default outcome of staff turnover.

1432
00:55:15,760 –> 00:55:19,360
People change roles, leave the company, or stop caring about the project.

1433
00:55:19,360 –> 00:55:24,560
If site ownership is tied to individuals, the system will inevitably lose its accountable humans

1434
00:55:24,560 –> 00:55:28,880
and your life cycle engine becomes a dead process, emailing an empty inbox.

1435
00:55:28,880 –> 00:55:31,440
So ownership enforcement is an identity workflow.

1436
00:55:31,440 –> 00:55:36,080
On a schedule, the system checks whether the owner group still has active human owners.

1437
00:55:36,080 –> 00:55:39,520
If not, it triggers a transfer policy, notify the business unit sponsor,

1438
00:55:39,520 –> 00:55:42,720
require reassignment within a time window, and if that doesn’t happen,

1439
00:55:42,720 –> 00:55:48,560
the site moves to a restricted state, not deleted, restricted, because unowned mutable collaboration zones

1440
00:55:48,560 –> 00:55:51,920
are how data leaks and governance collapses, and yes, this feels harsh.

1441
00:55:51,920 –> 00:55:52,720
Good.

1442
00:55:52,720 –> 00:55:54,800
Harsh is what prevents your future incident review.

1443
00:55:54,800 –> 00:55:59,520
The next step is content hygiene, which is where people want magic and the platform provides reality.

1444
00:55:59,520 –> 00:56:05,200
Stale pages, broken links, duplicate documents, and we have five versions of the same policy in five sites.

1445
00:56:05,200 –> 00:56:07,920
Some of this can be detected, some of it can’t.

1446
00:56:07,920 –> 00:56:09,840
The architecture principle stays simple.

1447
00:56:09,840 –> 00:56:13,120
Hygiene is a signal generator, not a cleanup promise.

1448
00:56:13,120 –> 00:56:15,920
So you run periodic scans where capabilities exist.

1449
00:56:15,920 –> 00:56:20,160
Detect orphaned pages, detect broken links, detect duplicate files by hash,

1450
00:56:20,160 –> 00:56:24,160
where your tooling supports it, flag libraries with extreme item counts,

1451
00:56:24,160 –> 00:56:27,120
and flag unlabeled content in high risk locations.

1452
00:56:27,120 –> 00:56:30,080
The outcome isn’t the system fixes everything.

1453
00:56:30,080 –> 00:56:34,240
The outcome is the system produces a prioritized backlog for the owner group,

1454
00:56:34,240 –> 00:56:38,400
and it can gait future automation on unresolved hygiene when risk requires it.

1455
00:56:38,400 –> 00:56:43,840
Now automation failure handling, because life cycle workflows are long running and long running workflows fail.

1456
00:56:43,840 –> 00:56:47,200
At scale, a life cycle engine needs dead letter patterns.

1457
00:56:47,200 –> 00:56:51,200
When an archive action fails, the message goes to a dead letter queue with context,

1458
00:56:51,200 –> 00:56:52,720
not to a buried run history.

1459
00:56:52,720 –> 00:56:54,080
It needs retreats with back off.

1460
00:56:54,080 –> 00:56:59,280
It needs idempotency, so you don’t lock and unlock repeatedly because of duplicate events.

1461
00:56:59,280 –> 00:57:01,920
And it needs a human override path that’s logged in time bound,

1462
00:57:01,920 –> 00:57:05,040
because someone fixed it manually is not an operational model.

1463
00:57:05,040 –> 00:57:07,760
The retirement step is the one everyone wants to skip.

1464
00:57:07,760 –> 00:57:11,520
Retire means content is disposed according to retention policy.

1465
00:57:11,520 –> 00:57:15,200
The site is deleted when it is legally allowed, and the inventory record is updated,

1466
00:57:15,200 –> 00:57:16,640
so you can prove it happened.

1467
00:57:16,640 –> 00:57:19,280
Retire is not a button, it’s a governed outcome.

1468
00:57:19,280 –> 00:57:21,360
And the whole life cycle model has one purpose.

1469
00:57:21,360 –> 00:57:25,360
Keep your share point automation estate converging toward policy over time,

1470
00:57:25,360 –> 00:57:26,880
instead of drifting away from it.

1471
00:57:26,880 –> 00:57:31,360
Because automation doesn’t create order, enforcement does, scenario two framing.

1472
00:57:31,360 –> 00:57:33,920
Compliance isn’t a project, it’s continuous evidence.

1473
00:57:33,920 –> 00:57:36,880
Compliance is where we’ll clean it up later, goes to die.

1474
00:57:36,880 –> 00:57:39,520
Because leaders keep treating compliance like a project,

1475
00:57:39,520 –> 00:57:42,160
hire someone right-of-policy runner-migration,

1476
00:57:42,160 –> 00:57:44,320
do an audit, celebrate, and move on.

1477
00:57:44,320 –> 00:57:46,400
That model works only if content stops changing.

1478
00:57:46,400 –> 00:57:47,920
SharePoint does not stop changing.

1479
00:57:47,920 –> 00:57:49,920
Automation makes it change faster.

1480
00:57:49,920 –> 00:57:51,760
AI makes it change in more places at once,

1481
00:57:51,760 –> 00:57:53,360
so compliance can’t be an initiative.

1482
00:57:53,360 –> 00:57:55,360
It has to be a continuous evidence system.

1483
00:57:55,360 –> 00:57:59,280
That distinction matters because regulators don’t ask whether you had good intentions.

1484
00:57:59,280 –> 00:58:01,040
They ask whether you can prove outcomes.

1485
00:58:01,040 –> 00:58:03,840
Retention happened, holes were honored, access was controlled,

1486
00:58:03,840 –> 00:58:05,760
and you can reconstruct who did what,

1487
00:58:05,760 –> 00:58:09,360
to which record, under which authority, at which time.

1488
00:58:09,360 –> 00:58:12,240
And proof means evidence you can generate on demand.

1489
00:58:12,240 –> 00:58:14,480
Not a spreadsheet someone updated manually,

1490
00:58:14,480 –> 00:58:15,920
not a screenshot from a portal,

1491
00:58:15,920 –> 00:58:18,960
not a story that begins with, normally, our process is.

1492
00:58:18,960 –> 00:58:21,520
The compliance reality is this.

1493
00:58:21,520 –> 00:58:25,760
Once automation exists, the blast radius of a failure becomes a legal event.

1494
00:58:25,760 –> 00:58:28,800
If a workflow mis-roots a document underhold,

1495
00:58:28,800 –> 00:58:31,520
or a label gets skipped, or a library becomes overshared,

1496
00:58:31,520 –> 00:58:34,080
and an agent surfaces it, the impact isn’t only technical,

1497
00:58:34,080 –> 00:58:35,280
it’s defensibility.

1498
00:58:35,280 –> 00:58:37,520
So scenario two is built around one idea.

1499
00:58:37,520 –> 00:58:41,280
Compliance is continuous because the system never stops producing new content,

1500
00:58:41,280 –> 00:58:43,840
new copies, new links, and new access parts.

1501
00:58:43,840 –> 00:58:46,400
Start with the regulatory requirements you actually face.

1502
00:58:46,400 –> 00:58:49,440
Retention and disposal, what must be kept,

1503
00:58:49,440 –> 00:58:51,920
for how long, and what must be deleted when allowed.

1504
00:58:51,920 –> 00:58:56,560
Legal hold, what must be preserved immediately and indefinitely when a case triggers it.

1505
00:58:56,560 –> 00:59:00,720
Immutability, where records must not be altered even by administrators.

1506
00:59:00,720 –> 00:59:05,120
Audit trail, the ability to show a chain of custody for content and decisions.

1507
00:59:05,120 –> 00:59:07,280
Those aren’t features, their system properties.

1508
00:59:07,280 –> 00:59:10,640
And this is where organizations make the foundational mistake,

1509
00:59:10,640 –> 00:59:13,280
they try to bolt these properties onto a chaotic estate.

1510
00:59:13,280 –> 00:59:16,880
They treat records management as a set of labels you apply after the fact.

1511
00:59:16,880 –> 00:59:19,680
But at scale, retroactive compliance is fantasy.

1512
00:59:19,680 –> 00:59:21,680
It always becomes a backlog that never ends,

1513
00:59:21,680 –> 00:59:24,880
because the platform produces content faster than you can classify it.

1514
00:59:24,880 –> 00:59:26,000
So the framing has to flip.

1515
00:59:26,000 –> 00:59:28,800
Compliance begins at creation, not at audit time.

1516
00:59:28,800 –> 00:59:31,280
That leads directly into the records model,

1517
00:59:31,280 –> 00:59:33,760
because compliance isn’t just keep everything.

1518
00:59:33,760 –> 00:59:35,920
You have to define what becomes a record,

1519
00:59:35,920 –> 00:59:38,960
when it becomes a record, and who has the authority to declare it.

1520
00:59:38,960 –> 00:59:42,240
A draft contract in negotiation is not the same as an executed contract.

1521
00:59:42,240 –> 00:59:45,360
A policy page in progress is not the same as an approved policy.

1522
00:59:45,360 –> 00:59:48,720
A project document under review is not the same as the final deliverable

1523
00:59:48,720 –> 00:59:50,320
that drives a regulated decision.

1524
00:59:50,320 –> 00:59:52,560
If you don’t encode that difference into the system,

1525
00:59:52,560 –> 00:59:55,600
you end up retaining everything forever because nobody trusts,

1526
00:59:55,600 –> 00:59:57,360
disposal, then storage explodes.

1527
00:59:57,360 –> 01:00:00,720
Discovery becomes impossible, and audits become painful.

1528
01:00:00,720 –> 01:00:04,560
So the records model has to be expressed as deterministic state transitions.

1529
01:00:04,560 –> 01:00:06,640
Approved becomes record.

1530
01:00:07,280 –> 01:00:08,880
Published becomes record.

1531
01:00:08,880 –> 01:00:11,040
Case opened, applies, hold.

1532
01:00:11,040 –> 01:00:13,440
That’s the only model that scales because it ties compliance

1533
01:00:13,440 –> 01:00:15,680
to workflow outcomes the platform can observe.

1534
01:00:15,680 –> 01:00:17,920
Now, here’s the part people try to negotiate.

1535
01:00:17,920 –> 01:00:18,880
Label first.

1536
01:00:18,880 –> 01:00:22,080
They want to treat labeling as optional because it slows users down.

1537
01:00:22,080 –> 01:00:25,280
But in compliance workloads, label first is not optional.

1538
01:00:25,280 –> 01:00:27,920
It’s the only scalable classifier under pressure.

1539
01:00:27,920 –> 01:00:30,480
Without labels, retention policies can’t target correctly,

1540
01:00:30,480 –> 01:00:32,400
DLP can’t reason consistently,

1541
01:00:32,400 –> 01:00:34,240
and audit evidence becomes ambiguous.

1542
01:00:34,240 –> 01:00:37,440
And ambiguities what gets organizations hurt in audits.

1543
01:00:37,440 –> 01:00:40,800
So the compliance blueprint forces label assignment into the system.

1544
01:00:40,800 –> 01:00:43,680
Templates apply default sensitivity expectations.

1545
01:00:43,680 –> 01:00:46,960
Workflows validate labeling before moving content across boundaries.

1546
01:00:46,960 –> 01:00:50,080
Approval completion triggers retention outcomes where required,

1547
01:00:50,080 –> 01:00:52,160
and exceptions are not allowed silently.

1548
01:00:52,160 –> 01:00:56,240
If something can’t be labeled, it goes into an exception lane with an owner and a timer.

1549
01:00:56,240 –> 01:00:57,600
That’s what leaders need to understand.

1550
01:00:57,600 –> 01:01:00,240
You don’t get compliance by asking people to care.

1551
01:01:00,240 –> 01:01:04,160
You get compliance by making the compliant path the path of least resistance.

1552
01:01:04,160 –> 01:01:06,640
Now, layer in the continuous evidence part.

1553
01:01:06,640 –> 01:01:09,200
Continuous evidence means the system continuously

1554
01:01:09,200 –> 01:01:10,720
emits proof artifacts.

1555
01:01:10,720 –> 01:01:13,840
Label applied events, retention policy evaluation,

1556
01:01:13,840 –> 01:01:17,200
sharing decisions, access changes, and workflow actions

1557
01:01:17,200 –> 01:01:18,800
that affect records state.

1558
01:01:18,800 –> 01:01:22,240
It also means the organization can answer hard questions quickly.

1559
01:01:22,240 –> 01:01:24,320
Show all records in this category.

1560
01:01:24,320 –> 01:01:25,920
Show all items under hold.

1561
01:01:25,920 –> 01:01:28,400
Show all external shares for labeled content.

1562
01:01:28,400 –> 01:01:32,560
Show all workflows that moved content out of a retention scope location.

1563
01:01:32,560 –> 01:01:35,520
If that query requires five teams in two weeks, you don’t have evidence.

1564
01:01:35,520 –> 01:01:37,200
You have organizational memory.

1565
01:01:37,200 –> 01:01:40,560
An organizational memory fails exactly when you need it most.

1566
01:01:40,560 –> 01:01:42,960
So scenario two isn’t how to do retention.

1567
01:01:42,960 –> 01:01:45,200
It’s how to design an enterprise compliance plane

1568
01:01:45,200 –> 01:01:48,080
that stays true as automation accelerates change.

1569
01:01:48,080 –> 01:01:49,840
Deterministic records state.

1570
01:01:49,840 –> 01:01:51,920
Label first classification, enforced holds,

1571
01:01:51,920 –> 01:01:54,800
and evidence you can stream into monitoring and investigations.

1572
01:01:54,800 –> 01:01:56,640
And once that framing is clear,

1573
01:01:56,640 –> 01:01:58,480
the next section becomes straightforward.

1574
01:01:58,480 –> 01:01:59,680
The actual architecture,

1575
01:01:59,680 –> 01:02:03,120
purview for retention and labels, DLP as runtime enforcement,

1576
01:02:03,120 –> 01:02:05,360
and audit streaming for defensibility.

1577
01:02:05,360 –> 01:02:08,400
Scenario two architecture retention, legal hold,

1578
01:02:08,400 –> 01:02:10,400
and audit defensibility by design.

1579
01:02:10,400 –> 01:02:13,680
So the architecture for compliance has to do three things at once.

1580
01:02:13,680 –> 01:02:15,440
Enforced retention outcomes,

1581
01:02:15,440 –> 01:02:17,920
freeze content instantly when legal says so,

1582
01:02:17,920 –> 01:02:21,040
and generate evidence without begging humans for screenshots.

1583
01:02:21,040 –> 01:02:24,640
Start with purview retention labels and retention policies

1584
01:02:24,640 –> 01:02:27,360
because that’s where you declare the immutable truth.

1585
01:02:27,360 –> 01:02:30,480
What gets kept for how long and what happens at the end.

1586
01:02:30,480 –> 01:02:32,400
Labels are the per-item truth.

1587
01:02:32,400 –> 01:02:35,040
Policies are the where does this truth apply?

1588
01:02:35,040 –> 01:02:36,480
And in enterprise terms,

1589
01:02:36,480 –> 01:02:39,920
the only design that survives scale is scope intentionally,

1590
01:02:39,920 –> 01:02:42,000
publish intentionally, improve intentionally.

1591
01:02:42,000 –> 01:02:44,480
Scope means you don’t spray retention across the tenant

1592
01:02:44,480 –> 01:02:45,440
and hope it works.

1593
01:02:45,440 –> 01:02:48,400
You define locations and categories that map to business purpose,

1594
01:02:48,400 –> 01:02:49,600
a contracts library,

1595
01:02:49,600 –> 01:02:52,080
an HRK site, a finance record center,

1596
01:02:52,080 –> 01:02:53,360
a regulated project hub.

1597
01:02:53,360 –> 01:02:56,160
Then you publish the label or policy into those places

1598
01:02:56,160 –> 01:02:58,160
so the system can defend the claim,

1599
01:02:58,160 –> 01:03:02,400
content of this type in this location follows this rule.

1600
01:03:02,400 –> 01:03:05,360
And yes, that means you need fewer clearer locations

1601
01:03:05,360 –> 01:03:07,280
because retention can’t fix architecture.

1602
01:03:07,280 –> 01:03:08,960
It can only enforce what you designed.

1603
01:03:08,960 –> 01:03:09,840
Now legal hold.

1604
01:03:09,840 –> 01:03:13,840
Legal hold is where automation usually embarrasses people

1605
01:03:13,840 –> 01:03:15,760
because the business thinks hold is a label

1606
01:03:15,760 –> 01:03:18,560
and IT thinks hold is an e-discovery case

1607
01:03:18,560 –> 01:03:21,360
and nobody designs the state transition in between.

1608
01:03:21,360 –> 01:03:23,920
Architecturally, a hold is a freeze order

1609
01:03:23,920 –> 01:03:26,640
that must override every convenience feature,

1610
01:03:26,640 –> 01:03:29,680
deletion overrides, clean up scripts,

1611
01:03:29,680 –> 01:03:31,120
life cycle retirement,

1612
01:03:31,120 –> 01:03:33,520
and will just move the files.

1613
01:03:33,520 –> 01:03:36,880
So the blueprint is holds are triggered centrally,

1614
01:03:36,880 –> 01:03:38,400
applied automatically,

1615
01:03:38,400 –> 01:03:41,840
and treated as higher priority than every life cycle mechanism.

1616
01:03:41,840 –> 01:03:43,040
If a site is under hold,

1617
01:03:43,040 –> 01:03:45,040
the life cycle engine can still archive it,

1618
01:03:45,040 –> 01:03:46,160
but it cannot dispose it.

1619
01:03:46,160 –> 01:03:48,160
If a record is under hold,

1620
01:03:48,160 –> 01:03:49,440
a workflow can still root it,

1621
01:03:49,440 –> 01:03:51,040
but it cannot transform it into a new

1622
01:03:51,040 –> 01:03:53,920
untracked copy without logging and policy review.

1623
01:03:53,920 –> 01:03:55,040
Holds don’t stop work.

1624
01:03:55,040 –> 01:03:56,560
They stop irreversible outcomes.

1625
01:03:56,560 –> 01:03:57,840
That distinction matters.

1626
01:03:57,840 –> 01:04:00,400
Now sensitivity labels.

1627
01:04:00,400 –> 01:04:02,800
Sensitivity is the access expectation layer

1628
01:04:02,800 –> 01:04:04,480
and for compliance it’s the difference between

1629
01:04:04,480 –> 01:04:06,560
we retain it and we retain it safely.

1630
01:04:06,560 –> 01:04:09,600
If the organization retains regulated data

1631
01:04:09,600 –> 01:04:10,960
but allows broad sharing,

1632
01:04:10,960 –> 01:04:13,680
then retention just preserves the evidence of failure longer.

1633
01:04:13,680 –> 01:04:15,040
So you use sensitivity labels

1634
01:04:15,040 –> 01:04:16,240
to carry enforcement behaviors

1635
01:04:16,240 –> 01:04:18,160
that align with your compliance model.

1636
01:04:18,160 –> 01:04:19,920
Encryption where required,

1637
01:04:19,920 –> 01:04:22,560
restrictions on external sharing where required,

1638
01:04:22,560 –> 01:04:24,560
and consistent user experience signals.

1639
01:04:24,560 –> 01:04:27,040
So people don’t accidentally treat sensitive content

1640
01:04:27,040 –> 01:04:29,040
as general collaboration content.

1641
01:04:29,040 –> 01:04:30,560
And this is where the platform’s behavior

1642
01:04:30,560 –> 01:04:31,520
becomes uncomfortable.

1643
01:04:31,520 –> 01:04:32,880
Labels need to be applied early

1644
01:04:32,880 –> 01:04:34,720
because retroactive labeling after exposure

1645
01:04:34,720 –> 01:04:37,040
is just an audit artifact, not protection.

1646
01:04:37,040 –> 01:04:39,440
So your architecture wires labeling into creation

1647
01:04:39,440 –> 01:04:41,120
and into state transitions.

1648
01:04:41,120 –> 01:04:43,200
New site created with a compliance profile

1649
01:04:43,200 –> 01:04:45,520
gets a default sensitivity expectation.

1650
01:04:45,520 –> 01:04:48,160
Content declared as a record gets a label validation step.

1651
01:04:48,160 –> 01:04:51,200
Content moved into a records library gets labeling enforced

1652
01:04:51,200 –> 01:04:53,760
as part of the move, not after it lands.

1653
01:04:53,760 –> 01:04:54,560
Then DLP.

1654
01:04:54,560 –> 01:04:58,320
In this scenario, DLP is the runtime enforcement

1655
01:04:58,320 –> 01:05:00,560
that stops the most common compliance violation

1656
01:05:00,560 –> 01:05:02,400
exporting regulated content into a path

1657
01:05:02,400 –> 01:05:04,640
that retention and hold controls can’t see.

1658
01:05:04,640 –> 01:05:06,080
That includes email attachments,

1659
01:05:06,080 –> 01:05:08,080
unmanaged connectors, external shares

1660
01:05:08,080 –> 01:05:10,240
and temporary copies to personal locations.

1661
01:05:10,240 –> 01:05:11,680
DLP doesn’t replace retention.

1662
01:05:11,680 –> 01:05:13,680
It protects retention scope boundaries.

1663
01:05:13,680 –> 01:05:16,640
So you design DLP to align with your retention locations

1664
01:05:16,640 –> 01:05:18,400
and your sensitivity labels.

1665
01:05:18,400 –> 01:05:20,560
If content carries a regulated label,

1666
01:05:20,560 –> 01:05:23,120
DLP blocks the obvious exfiltration paths

1667
01:05:23,120 –> 01:05:24,560
and where the business must proceed,

1668
01:05:24,560 –> 01:05:26,560
DLP allows with justification

1669
01:05:26,560 –> 01:05:28,720
and logs the event as a compliance signal.

1670
01:05:28,720 –> 01:05:30,160
Now audit defensibility.

1671
01:05:30,160 –> 01:05:31,920
This is the part everyone says they want,

1672
01:05:31,920 –> 01:05:34,560
but almost nobody implements beyond default logging.

1673
01:05:34,560 –> 01:05:37,440
Defensibility requires correlation,

1674
01:05:37,440 –> 01:05:38,880
a retention decision,

1675
01:05:38,880 –> 01:05:40,240
a hold application,

1676
01:05:40,240 –> 01:05:42,080
a label change, a sharing event,

1677
01:05:42,080 –> 01:05:45,680
and a workflow action all need to be explainable as one narrative.

1678
01:05:45,680 –> 01:05:47,600
So you stream audit logs into a place

1679
01:05:47,600 –> 01:05:49,600
where investigations can actually happen at speed.

1680
01:05:49,600 –> 01:05:52,160
Microsoft’s unified audit log gives you the compliance trail

1681
01:05:52,160 –> 01:05:53,920
but you need correlation and detection,

1682
01:05:53,920 –> 01:05:57,120
which means connecting audit signals to Sentinel

1683
01:05:57,120 –> 01:05:59,600
or another seam workflow where you can build queries

1684
01:05:59,600 –> 01:06:01,760
and alerts that answer real questions.

1685
01:06:01,760 –> 01:06:03,760
Show all external shares of content

1686
01:06:03,760 –> 01:06:05,200
with this sensitivity label.

1687
01:06:05,200 –> 01:06:07,600
Show all attempts to delete content under hold,

1688
01:06:07,600 –> 01:06:09,120
show all automation identities

1689
01:06:09,120 –> 01:06:11,600
that modified records libraries show all sites

1690
01:06:11,600 –> 01:06:14,080
where retention policies were removed or changed.

1691
01:06:14,080 –> 01:06:16,160
And because compliance is continuous evidence,

1692
01:06:16,160 –> 01:06:17,840
you don’t only investigate incidents,

1693
01:06:17,840 –> 01:06:20,160
you generate proof packs on a schedule.

1694
01:06:20,160 –> 01:06:23,280
For leadership, that means the architecture

1695
01:06:23,280 –> 01:06:25,200
includes reporting by design,

1696
01:06:25,200 –> 01:06:27,120
retention coverage by location,

1697
01:06:27,120 –> 01:06:28,640
hold coverage by case,

1698
01:06:28,640 –> 01:06:30,720
oversharing for regulated labels

1699
01:06:30,720 –> 01:06:33,440
and workflow pathways that touch regulated content.

1700
01:06:33,440 –> 01:06:37,040
If those reports require a one-time project to assemble,

1701
01:06:37,040 –> 01:06:39,120
they won’t exist when the auditor asks,

1702
01:06:39,120 –> 01:06:42,240
so the compliance architecture is not turn on retention.

1703
01:06:42,240 –> 01:06:43,200
It is.

1704
01:06:43,200 –> 01:06:46,240
Scoped retention enforcement centralised hold priority,

1705
01:06:46,240 –> 01:06:48,320
label-driven access expectations,

1706
01:06:48,320 –> 01:06:49,920
DLP as boundary protection

1707
01:06:49,920 –> 01:06:52,640
and audit streaming that produces defensible narratives

1708
01:06:52,640 –> 01:06:53,520
without heroics.

1709
01:06:53,520 –> 01:06:56,320
Scenario two workflows,

1710
01:06:56,320 –> 01:06:58,400
lightweight approvals versus custom flows

1711
01:06:58,400 –> 01:07:00,080
versus backend orchestration.

1712
01:07:00,080 –> 01:07:01,600
Now the workflows question,

1713
01:07:01,600 –> 01:07:03,520
because this is where compliance programs

1714
01:07:03,520 –> 01:07:05,520
quietly sabotage themselves.

1715
01:07:05,520 –> 01:07:06,880
They take a regulated process,

1716
01:07:06,880 –> 01:07:08,560
then they scatter its logic across

1717
01:07:08,560 –> 01:07:10,560
whatever automation primitive was easiest

1718
01:07:10,560 –> 01:07:11,840
for the last person who touched it.

1719
01:07:11,840 –> 01:07:13,200
A lightweight approval here,

1720
01:07:13,200 –> 01:07:14,240
a personal flow there,

1721
01:07:14,240 –> 01:07:17,200
a temporary branching workflow in someone’s environment.

1722
01:07:17,200 –> 01:07:18,400
Then they call it covered.

1723
01:07:18,400 –> 01:07:21,600
It isn’t compliance workflows need one property above all others.

1724
01:07:21,600 –> 01:07:24,080
The decision path must be reconstructable later,

1725
01:07:24,080 –> 01:07:26,080
not just approved or rejected,

1726
01:07:26,080 –> 01:07:27,920
but who approved in what order,

1727
01:07:27,920 –> 01:07:29,120
under what policy,

1728
01:07:29,120 –> 01:07:30,560
with what evidence attached

1729
01:07:30,560 –> 01:07:32,160
and what happened after the approval.

1730
01:07:32,160 –> 01:07:33,680
If you can’t replay the logic,

1731
01:07:33,680 –> 01:07:34,960
you can’t defend the outcome,

1732
01:07:34,960 –> 01:07:37,600
so pick the primitive based on what must be provable,

1733
01:07:37,600 –> 01:07:39,200
not what is fastest to build.

1734
01:07:39,200 –> 01:07:40,560
Start with lightweight approvals

1735
01:07:40,560 –> 01:07:42,240
in SharePoint lists and libraries.

1736
01:07:42,240 –> 01:07:44,400
They are useful specifically because they keep state

1737
01:07:44,400 –> 01:07:45,200
close to the content,

1738
01:07:45,200 –> 01:07:47,200
the approval status becomes metadata.

1739
01:07:47,200 –> 01:07:48,720
The experience stays in the grid.

1740
01:07:48,720 –> 01:07:50,400
You can define default approvals

1741
01:07:50,400 –> 01:07:52,720
and you can stage and sequence them.

1742
01:07:52,720 –> 01:07:54,880
That’s a clean pattern for simple gates.

1743
01:07:54,880 –> 01:07:57,680
This document must be approved before it becomes visible,

1744
01:07:57,680 –> 01:08:00,560
or this item must be reviewed before it gets published.

1745
01:08:00,560 –> 01:08:02,240
And the hidden advantage is governance.

1746
01:08:02,240 –> 01:08:04,240
When the approval status stored on the item,

1747
01:08:04,240 –> 01:08:05,680
it’s harder to lose the trail.

1748
01:08:05,680 –> 01:08:07,760
You’re not hunting across flow run histories

1749
01:08:07,760 –> 01:08:09,600
and emails to figure out what happened.

1750
01:08:09,600 –> 01:08:12,400
But lightweight approvals have a hard boundary.

1751
01:08:12,400 –> 01:08:14,640
They are not a compliance workflow engine.

1752
01:08:14,640 –> 01:08:16,400
They don’t model complex branching,

1753
01:08:16,400 –> 01:08:17,920
conditional attestations,

1754
01:08:17,920 –> 01:08:19,360
dynamic evidence collection,

1755
01:08:19,360 –> 01:08:20,880
or multi-path escalation.

1756
01:08:20,880 –> 01:08:23,840
They also don’t replace your need for centralized monitoring.

1757
01:08:23,840 –> 01:08:25,360
They’re a front and gate that works

1758
01:08:25,360 –> 01:08:26,560
when the policy is simple

1759
01:08:26,560 –> 01:08:28,480
and the blast radius is contained.

1760
01:08:28,480 –> 01:08:30,400
Now custom power automate approvals.

1761
01:08:30,400 –> 01:08:31,440
This is where people go

1762
01:08:31,440 –> 01:08:33,520
when they need real workflow behavior.

1763
01:08:33,520 –> 01:08:35,200
Branching based on metadata,

1764
01:08:35,200 –> 01:08:36,960
parallel versus sequential approvals,

1765
01:08:36,960 –> 01:08:37,920
conditional routing,

1766
01:08:37,920 –> 01:08:39,920
reminders, SLA’s exception handling,

1767
01:08:39,920 –> 01:08:41,440
and recorded justifications.

1768
01:08:41,440 –> 01:08:43,120
And yes, power automate can do it.

1769
01:08:43,120 –> 01:08:44,880
The problem is scale and life cycle.

1770
01:08:44,880 –> 01:08:47,600
A power automate approval flow is a software artifact.

1771
01:08:47,600 –> 01:08:48,560
It needs versioning.

1772
01:08:48,560 –> 01:08:50,080
It needs a deployment model.

1773
01:08:50,080 –> 01:08:52,240
It needs ownership that survives turnover.

1774
01:08:52,240 –> 01:08:53,680
And it needs to be designed

1775
01:08:53,680 –> 01:08:55,600
so that an approver can’t be bypassed

1776
01:08:55,600 –> 01:08:58,320
by someone cloning a flow and tweaking one condition.

1777
01:08:58,320 –> 01:09:00,000
The uncomfortable truth is that

1778
01:09:00,000 –> 01:09:02,080
power automate makes it easy to create

1779
01:09:02,080 –> 01:09:04,080
production logic without production discipline.

1780
01:09:04,080 –> 01:09:06,880
That’s why compliance teams end up with approval sprawl.

1781
01:09:06,880 –> 01:09:08,560
Dozens of nearly identical flows,

1782
01:09:08,560 –> 01:09:09,680
each slightly different,

1783
01:09:09,680 –> 01:09:11,600
each with its own connector assumptions,

1784
01:09:11,600 –> 01:09:13,520
each with its own failure mode.

1785
01:09:13,520 –> 01:09:14,720
So the rule is strict.

1786
01:09:14,720 –> 01:09:16,880
If you use custom flows for compliance,

1787
01:09:16,880 –> 01:09:19,200
you standardize them as managed assets.

1788
01:09:19,200 –> 01:09:22,560
Solutions, environments naming owners and run visibility.

1789
01:09:22,560 –> 01:09:25,200
No personal flows, no, I’ll just fix it in my account.

1790
01:09:25,200 –> 01:09:28,080
EZN says, “Temperties in beer, how is it?”

1791
01:09:28,080 –> 01:09:30,640
That’s not automation that’s delegated risk.

1792
01:09:30,640 –> 01:09:33,280
Now back-end orchestration logic apps are Azure Functions.

1793
01:09:33,280 –> 01:09:36,000
This is for when the workflow is either high volume,

1794
01:09:36,000 –> 01:09:38,320
high complexity or high consequence.

1795
01:09:38,320 –> 01:09:40,160
High volume means you can’t tolerate

1796
01:09:40,160 –> 01:09:43,280
per-run UX, throttles, and fragile connector behavior.

1797
01:09:43,280 –> 01:09:45,520
High complexity means you’re transforming content

1798
01:09:45,520 –> 01:09:47,280
calling multiple systems using cues

1799
01:09:47,280 –> 01:09:49,920
and you need deterministic retreatries and idempotency.

1800
01:09:49,920 –> 01:09:53,680
High consequence means a mistake creates legal exposure.

1801
01:09:53,680 –> 01:09:55,760
Records declaration, hold enforcement,

1802
01:09:55,760 –> 01:09:58,560
regulated exports, or irreversible state changes.

1803
01:09:58,560 –> 01:10:00,720
In those cases, the workflow belongs

1804
01:10:00,720 –> 01:10:03,760
in an orchestration layer that behaves like software.

1805
01:10:03,760 –> 01:10:07,440
Source control, deployment pipelines, unit tests where possible,

1806
01:10:07,440 –> 01:10:11,600
structured logging, and a clear separation between decision and execution.

1807
01:10:11,600 –> 01:10:14,160
This is where the approval becomes a service boundary.

1808
01:10:14,160 –> 01:10:16,960
The approval interaction can still happen in SharePoint or Teams

1809
01:10:16,960 –> 01:10:18,800
because humans need a place to click buttons.

1810
01:10:18,800 –> 01:10:20,800
But the system that interprets that approval

1811
01:10:20,800 –> 01:10:23,760
and performs downstream actions lives in the back-end

1812
01:10:23,760 –> 01:10:25,360
where you can actually control it.

1813
01:10:25,360 –> 01:10:27,920
And here’s the anti-pattern to call out clearly.

1814
01:10:27,920 –> 01:10:30,800
Approval logic scattered across personal flows.

1815
01:10:30,800 –> 01:10:32,560
That design fails three ways at scale.

1816
01:10:32,560 –> 01:10:35,280
First, it destroys audit defensibility

1817
01:10:35,280 –> 01:10:37,600
because you can’t prove which version ran and why.

1818
01:10:37,600 –> 01:10:40,480
Second, it breaks continuity

1819
01:10:40,480 –> 01:10:42,640
because the flow dies when the owner leaves

1820
01:10:42,640 –> 01:10:45,040
or changes their password or loses a license.

1821
01:10:45,040 –> 01:10:47,120
Third, it creates inconsistent enforcement

1822
01:10:47,120 –> 01:10:49,920
because two teams will implement the same policy differently

1823
01:10:49,920 –> 01:10:51,440
and both will swear they’re compliant.

1824
01:10:51,440 –> 01:10:52,000
They aren’t.

1825
01:10:52,000 –> 01:10:53,440
So the decision matrix is simple.

1826
01:10:53,440 –> 01:10:56,480
If you need a lightweight gate and the state should live on the item,

1827
01:10:56,480 –> 01:10:58,080
use lightweight approvals.

1828
01:10:58,080 –> 01:11:00,560
If you need richer branching, but the process stays inside

1829
01:11:00,560 –> 01:11:02,960
the team boundary use power automate approvals

1830
01:11:02,960 –> 01:11:05,200
but only as a governed managed asset.

1831
01:11:05,200 –> 01:11:07,600
If the workflow crosses systems, crosses tenants,

1832
01:11:07,600 –> 01:11:09,840
touches regulated data at scale

1833
01:11:09,840 –> 01:11:12,160
or must survive organizational entropy,

1834
01:11:12,160 –> 01:11:13,920
move it to back-end orchestration

1835
01:11:13,920 –> 01:11:17,040
and treat approvals as inputs, not as the engine.

1836
01:11:17,040 –> 01:11:18,560
And that sets up the next scenario

1837
01:11:18,560 –> 01:11:20,720
because external collaboration is where approval

1838
01:11:20,720 –> 01:11:23,440
stop being workflow questions and become boundary questions.

1839
01:11:23,440 –> 01:11:24,640
Scenario three framing.

1840
01:11:24,640 –> 01:11:26,480
External sharing is a controlled zone,

1841
01:11:26,480 –> 01:11:27,920
not a per-side preference.

1842
01:11:27,920 –> 01:11:29,600
External sharing is where SharePoint

1843
01:11:29,600 –> 01:11:30,880
stops being collaboration

1844
01:11:30,880 –> 01:11:33,520
and becomes a boundary negotiation with your legal team.

1845
01:11:33,520 –> 01:11:35,600
And the foundational mistake is predictable.

1846
01:11:35,600 –> 01:11:39,040
Organizations treat external sharing as a per-side preference,

1847
01:11:39,040 –> 01:11:42,080
a toggle, a convenient setting the site owner can adjust

1848
01:11:42,080 –> 01:11:44,400
when the partner relationship feels urgent.

1849
01:11:44,400 –> 01:11:45,760
That model is not governance,

1850
01:11:45,760 –> 01:11:47,760
it’s delegated risk with a ribbon on it

1851
01:11:47,760 –> 01:11:50,880
because once you allow external sharing as a local preference,

1852
01:11:50,880 –> 01:11:53,200
you don’t get one external sharing posture.

1853
01:11:53,200 –> 01:11:55,600
You get hundreds, each one with different link types,

1854
01:11:55,600 –> 01:11:58,240
different expiration behaviors, different guest controls

1855
01:11:58,240 –> 01:12:00,960
and different expectations about what safe means.

1856
01:12:00,960 –> 01:12:02,960
Then the business asks for co-pilot.

1857
01:12:02,960 –> 01:12:05,440
And suddenly your partner side is no longer a quiet place

1858
01:12:05,440 –> 01:12:06,720
to upload documents.

1859
01:12:06,720 –> 01:12:08,480
It’s an AI-grounded knowledge surface

1860
01:12:08,480 –> 01:12:10,720
that can summarize, search, and surface content

1861
01:12:10,720 –> 01:12:11,600
at machine speed.

1862
01:12:11,600 –> 01:12:13,760
So the framing for scenario three is strict.

1863
01:12:13,760 –> 01:12:15,760
External sharing is a controlled zone.

1864
01:12:15,760 –> 01:12:17,360
A zone is not a site template.

1865
01:12:17,360 –> 01:12:19,920
A zone is a policy boundary with dedicated defaults,

1866
01:12:19,920 –> 01:12:22,480
dedicated monitoring and dedicated lifecycle rules.

1867
01:12:22,480 –> 01:12:26,400
It exists because external collaboration is not a feature request.

1868
01:12:26,400 –> 01:12:29,120
It’s a threat model. Start with the problem reality.

1869
01:12:29,120 –> 01:12:31,280
Partner workspace is happened constantly.

1870
01:12:31,280 –> 01:12:35,360
Vendors, joint ventures, auditors, contractors, client delivery teams.

1871
01:12:35,360 –> 01:12:38,080
And even if IT blocks external sharing broadly,

1872
01:12:38,080 –> 01:12:39,680
users will still share externally.

1873
01:12:39,680 –> 01:12:42,080
They’ll email attachments, use personal storage

1874
01:12:42,080 –> 01:12:43,280
or spin-up shadow tools.

1875
01:12:43,280 –> 01:12:46,240
So no external sharing is not a strategy.

1876
01:12:46,240 –> 01:12:47,440
It’s denial.

1877
01:12:47,440 –> 01:12:50,000
The strategy is provide an approved path

1878
01:12:50,000 –> 01:12:51,840
that is safer than the bypass.

1879
01:12:51,840 –> 01:12:54,160
That path is the external collaboration zone.

1880
01:12:54,160 –> 01:12:56,400
It’s a dedicated site or hub structure

1881
01:12:56,400 –> 01:12:59,120
where every site inherits hard and defaults.

1882
01:12:59,120 –> 01:13:01,680
No anonymous links required authentication,

1883
01:13:01,680 –> 01:13:04,560
enforced expiration, restricted download where needed,

1884
01:13:04,560 –> 01:13:07,920
and labels that reflect the data types allowed in that zone.

1885
01:13:07,920 –> 01:13:10,320
If the business needs to collaborate with partners,

1886
01:13:10,320 –> 01:13:13,040
they do it here, not in random internal project sites,

1887
01:13:13,040 –> 01:13:15,840
not in HR team sites, not in someone’s personal one drive.

1888
01:13:15,840 –> 01:13:17,360
This is also where you stop pretending

1889
01:13:17,360 –> 01:13:19,600
that site owner education scales.

1890
01:13:19,600 –> 01:13:21,440
Owners change. They get busy.

1891
01:13:21,440 –> 01:13:23,280
They forget. They inherit sites.

1892
01:13:23,280 –> 01:13:24,400
They didn’t create.

1893
01:13:24,400 –> 01:13:26,160
And they will make exceptions under pressure

1894
01:13:26,160 –> 01:13:27,760
because the partner relationship matters

1895
01:13:27,760 –> 01:13:29,120
more than your policy document.

1896
01:13:29,120 –> 01:13:31,920
So the zone has to survive convenience pressure by design.

1897
01:13:31,920 –> 01:13:33,920
Policy is inherited and enforced,

1898
01:13:33,920 –> 01:13:35,200
not configured repeatedly.

1899
01:13:35,200 –> 01:13:37,200
Now the uncomfortable truth about external sharing.

1900
01:13:37,200 –> 01:13:38,640
It’s not just about guests.

1901
01:13:38,640 –> 01:13:39,360
It’s about links.

1902
01:13:39,360 –> 01:13:42,880
Most leakage happens through links that outlive intent.

1903
01:13:42,880 –> 01:13:44,720
Links created for a short term partner.

1904
01:13:44,720 –> 01:13:46,240
Links forwarded to the wrong person.

1905
01:13:46,240 –> 01:13:47,440
Links never revoked.

1906
01:13:47,440 –> 01:13:49,680
Links that keep working after the contract ends

1907
01:13:49,680 –> 01:13:51,280
because nobody remembered they existed.

1908
01:13:51,280 –> 01:13:53,280
So the zone model treats link creation

1909
01:13:53,280 –> 01:13:55,200
as an auditable action with life cycle.

1910
01:13:55,200 –> 01:13:57,440
Exploration is the default, not the exception.

1911
01:13:57,440 –> 01:13:59,840
High risk labels require shorter expiration.

1912
01:13:59,840 –> 01:14:01,920
And if the business needs no expiration,

1913
01:14:01,920 –> 01:14:04,160
that’s an exception with explicit owner approval

1914
01:14:04,160 –> 01:14:05,280
and ongoing review.

1915
01:14:05,280 –> 01:14:06,640
Then guest life cycle.

1916
01:14:06,640 –> 01:14:07,440
Guests aren’t users.

1917
01:14:07,440 –> 01:14:09,040
They’re temporary risk allocations.

1918
01:14:09,040 –> 01:14:11,280
So every guest needs sponsorship.

1919
01:14:11,280 –> 01:14:13,360
And that sponsorship has to be enforceable.

1920
01:14:13,360 –> 01:14:15,200
If a guest loses their sponsor,

1921
01:14:15,200 –> 01:14:16,560
they don’t remain in the tenant

1922
01:14:16,560 –> 01:14:18,080
as a ghost identity with access.

1923
01:14:18,080 –> 01:14:19,040
Nobody can explain.

1924
01:14:19,040 –> 01:14:20,560
They get reviewed and removed.

1925
01:14:20,560 –> 01:14:24,800
If a partner project ends, guests get deprovisioned automatically,

1926
01:14:24,800 –> 01:14:26,720
not when someone remembers.

1927
01:14:26,720 –> 01:14:28,400
That means external collaboration zones

1928
01:14:28,400 –> 01:14:30,960
need life cycle hooks, start date, end date,

1929
01:14:30,960 –> 01:14:32,960
renewal prompts and a clean tear down path.

1930
01:14:32,960 –> 01:14:34,720
Otherwise, your tenant becomes a museum

1931
01:14:34,720 –> 01:14:37,280
of expired partnerships with valid access.

1932
01:14:37,280 –> 01:14:39,520
Now add GDPR and data sovereignty pressure

1933
01:14:39,520 –> 01:14:41,760
because this is where regulators stop accepting

1934
01:14:41,760 –> 01:14:42,800
we didn’t mean to.

1935
01:14:42,800 –> 01:14:44,800
If PII enters an external zone,

1936
01:14:44,800 –> 01:14:46,560
you need deterministic controls

1937
01:14:46,560 –> 01:14:48,000
that prevent it from spreading.

1938
01:14:48,000 –> 01:14:50,480
Sensitivity labels that restrict sharing behavior

1939
01:14:50,480 –> 01:14:53,440
DLP rules that block obvious exfiltration

1940
01:14:53,440 –> 01:14:55,840
and an audit trail you can produce without panic.

1941
01:14:55,840 –> 01:14:58,240
External collaboration is where

1942
01:14:58,240 –> 01:14:59,680
least privilege becomes real

1943
01:14:59,680 –> 01:15:01,040
because you are now collaborating

1944
01:15:01,040 –> 01:15:02,800
with identities you don’t fully control

1945
01:15:02,800 –> 01:15:04,480
which is why the zone is not optional.

1946
01:15:04,480 –> 01:15:05,840
It’s the only way to separate

1947
01:15:05,840 –> 01:15:07,520
internal collaboration ergonomics

1948
01:15:07,520 –> 01:15:09,120
from external boundary enforcement

1949
01:15:09,120 –> 01:15:12,000
without trying to do per-site exceptions forever.

1950
01:15:12,000 –> 01:15:13,440
And yes, business units will ask,

1951
01:15:13,440 –> 01:15:15,280
why can’t we just enable external sharing

1952
01:15:15,280 –> 01:15:16,800
on this one internal site?

1953
01:15:16,800 –> 01:15:19,840
Because this one internal site becomes 50.

1954
01:15:19,840 –> 01:15:21,760
Then 500, then it’s normal,

1955
01:15:21,760 –> 01:15:24,000
then your data classification doesn’t mean anything

1956
01:15:24,000 –> 01:15:25,760
because anything can be shared from anywhere

1957
01:15:25,760 –> 01:15:27,760
with the right owner clicking the right button.

1958
01:15:27,760 –> 01:15:28,880
That is the drift model.

1959
01:15:28,880 –> 01:15:32,320
So scenario three starts with a design decision,

1960
01:15:32,320 –> 01:15:33,680
not a tool decision.

1961
01:15:33,680 –> 01:15:36,160
External collaboration happens in controlled zones

1962
01:15:36,160 –> 01:15:37,360
with hardened defaults

1963
01:15:37,360 –> 01:15:39,680
and everything else is internal by default.

1964
01:15:39,680 –> 01:15:40,960
Once that line exists,

1965
01:15:40,960 –> 01:15:42,200
you can implement it with

1966
01:15:42,200 –> 01:15:45,520
Entra B2B controls conditional access sensitivity labels

1967
01:15:45,520 –> 01:15:47,760
and DLP and that’s the next section.

1968
01:15:47,760 –> 01:15:50,400
The architecture that makes cross-tenant collaboration

1969
01:15:50,400 –> 01:15:51,600
survivable.

1970
01:15:51,600 –> 01:15:53,520
Scenario three, architecture,

1971
01:15:53,520 –> 01:15:55,760
cross-tenant collaboration with least privilege

1972
01:15:55,760 –> 01:15:57,120
and continuous audit.

1973
01:15:57,120 –> 01:16:00,560
The architecture for external collaboration has one job.

1974
01:16:00,560 –> 01:16:03,840
Make working with outsiders behave like a controlled system,

1975
01:16:03,840 –> 01:16:06,080
not a series of one-off exceptions.

1976
01:16:06,080 –> 01:16:07,440
Start with Entra B2B

1977
01:16:07,440 –> 01:16:09,840
because that’s where the boundary becomes enforceable.

1978
01:16:09,840 –> 01:16:11,920
Guests need a defined onboarding path

1979
01:16:11,920 –> 01:16:14,400
and that path must be policy-driven.

1980
01:16:14,400 –> 01:16:15,440
Who can invite?

1981
01:16:15,440 –> 01:16:17,680
Which domains are allowed, what terms apply

1982
01:16:17,680 –> 01:16:20,160
and what happens when the sponsor disappears?

1983
01:16:20,160 –> 01:16:22,480
A guest is not a user object you tolerate.

1984
01:16:22,480 –> 01:16:24,560
It’s a time-bound access allocation

1985
01:16:24,560 –> 01:16:26,640
with an accountable human attached to it.

1986
01:16:26,640 –> 01:16:28,640
That’s why sponsorship and life cycle matter

1987
01:16:28,640 –> 01:16:30,000
more than the invite itself.

1988
01:16:30,000 –> 01:16:31,120
If the sponsor leaves,

1989
01:16:31,120 –> 01:16:33,200
access should not quietly persist.

1990
01:16:33,200 –> 01:16:35,280
The system must trigger an access review,

1991
01:16:35,280 –> 01:16:37,920
then remove the guest if no one reclaims ownership.

1992
01:16:37,920 –> 01:16:39,280
That is not bureaucracy.

1993
01:16:39,280 –> 01:16:40,960
It is how you prevent former partners

1994
01:16:40,960 –> 01:16:43,840
still downloading files from becoming a quarterly tradition.

1995
01:16:43,840 –> 01:16:45,040
Then conditional access.

1996
01:16:45,040 –> 01:16:47,280
External collaboration without conditional access

1997
01:16:47,280 –> 01:16:49,440
is just a shared folder with better marketing.

1998
01:16:49,440 –> 01:16:50,960
Require MFA for guests.

1999
01:16:50,960 –> 01:16:52,480
Block legacy authentication.

2000
01:16:52,480 –> 01:16:54,160
Apply device controls where you can.

2001
01:16:54,160 –> 01:16:57,440
And most importantly, separate the guest experience by zone.

2002
01:16:57,440 –> 01:16:58,960
External collaboration sites

2003
01:16:58,960 –> 01:17:00,640
should enforce stricter access conditions

2004
01:17:00,640 –> 01:17:01,840
than internal project sites

2005
01:17:01,840 –> 01:17:03,360
because the threat model is different.

2006
01:17:03,360 –> 01:17:04,640
Treat this as deterministic.

2007
01:17:04,640 –> 01:17:07,760
If it’s a guest, the access decision is harder by default.

2008
01:17:07,760 –> 01:17:08,960
Now cross-tenant patterns.

2009
01:17:08,960 –> 01:17:11,520
Most organizations default to B2B guests everywhere

2010
01:17:11,520 –> 01:17:12,560
because it’s familiar.

2011
01:17:12,560 –> 01:17:14,960
But in some partner relationships B2B direct connect

2012
01:17:14,960 –> 01:17:17,680
makes sense to organizations with mature identity,

2013
01:17:17,680 –> 01:17:18,880
deliberate trust,

2014
01:17:18,880 –> 01:17:20,880
and a need for persistent collaboration

2015
01:17:20,880 –> 01:17:22,640
without endless guest churn.

2016
01:17:22,640 –> 01:17:24,080
The point isn’t which feature wins.

2017
01:17:24,080 –> 01:17:25,440
The point is boundary clarity.

2018
01:17:25,440 –> 01:17:26,800
If you use direct connect,

2019
01:17:26,800 –> 01:17:28,320
you document the trust relationship,

2020
01:17:28,320 –> 01:17:30,400
you constrain it to the collaboration zone

2021
01:17:30,400 –> 01:17:32,720
and you monitor it like a production dependency.

2022
01:17:32,720 –> 01:17:33,840
Because that’s what it is.

2023
01:17:33,840 –> 01:17:35,280
Next permissions.

2024
01:17:35,280 –> 01:17:36,960
This is where entropy explodes

2025
01:17:36,960 –> 01:17:38,400
so the model has to be boring.

2026
01:17:38,400 –> 01:17:40,080
Group-based access only.

2027
01:17:40,080 –> 01:17:41,840
Guests assigned to guest access groups

2028
01:17:41,840 –> 01:17:43,760
never directly to share point items.

2029
01:17:43,760 –> 01:17:46,400
Owners assigned through owner groups, not individuals,

2030
01:17:46,400 –> 01:17:48,800
and guest access should be limited to the minimum roles

2031
01:17:48,800 –> 01:17:50,160
that make the project function.

2032
01:17:50,160 –> 01:17:52,160
If a partner needs edit rights, fine.

2033
01:17:52,160 –> 01:17:53,760
But granted through a controlled group

2034
01:17:53,760 –> 01:17:55,120
that you can review and rotate,

2035
01:17:55,120 –> 01:17:56,800
not through a pile of direct permissions

2036
01:17:56,800 –> 01:17:58,720
that no one can inventory later.

2037
01:17:58,720 –> 01:18:00,080
Then sensitivity labels

2038
01:18:00,080 –> 01:18:02,240
because they encode the collaboration contract

2039
01:18:02,240 –> 01:18:03,360
into the content itself.

2040
01:18:03,360 –> 01:18:05,200
In this zone labels shouldn’t be decorative.

2041
01:18:05,200 –> 01:18:07,040
They should drive enforcement outcomes.

2042
01:18:07,040 –> 01:18:08,960
Encryption, restricted sharing,

2043
01:18:08,960 –> 01:18:10,880
and download controls were required.

2044
01:18:10,880 –> 01:18:13,440
The label is how you prevent someone copied the file

2045
01:18:13,440 –> 01:18:15,360
to a different site and now it’s ungoverned

2046
01:18:15,360 –> 01:18:17,120
from becoming the default data flow.

2047
01:18:17,120 –> 01:18:18,960
When content moves, the label travels

2048
01:18:18,960 –> 01:18:21,760
and when the label travels your policy intent travels.

2049
01:18:21,760 –> 01:18:22,960
Auto-labeling can help here,

2050
01:18:22,960 –> 01:18:25,120
but only inside boundaries you can defend.

2051
01:18:25,120 –> 01:18:26,480
Models will misclassify.

2052
01:18:26,480 –> 01:18:27,520
They always do.

2053
01:18:27,520 –> 01:18:29,680
So use auto-labeling for obvious cases

2054
01:18:29,680 –> 01:18:31,040
and high-confidence patterns

2055
01:18:31,040 –> 01:18:32,800
and make humans own exceptions.

2056
01:18:32,800 –> 01:18:36,000
The worst design is pretending the model is a compliance officer.

2057
01:18:36,000 –> 01:18:36,560
It isn’t.

2058
01:18:36,560 –> 01:18:38,960
It’s a classifier with probabilistic outcomes.

2059
01:18:38,960 –> 01:18:39,600
Now DLP.

2060
01:18:39,600 –> 01:18:42,160
In external collaboration, DLP isn’t optional friction.

2061
01:18:42,160 –> 01:18:43,440
It’s the runtime guardrail

2062
01:18:43,440 –> 01:18:45,600
that stops the obvious leakage paths.

2063
01:18:45,600 –> 01:18:47,760
PII copied into a partner space,

2064
01:18:47,760 –> 01:18:49,680
regulated documents shared by link,

2065
01:18:49,680 –> 01:18:51,440
or content exported through connectors

2066
01:18:51,440 –> 01:18:54,240
that bypass SharePoint’s native controls.

2067
01:18:54,240 –> 01:18:56,080
And the stratification still applies.

2068
01:18:56,080 –> 01:18:57,920
PII policies behave differently

2069
01:18:57,920 –> 01:18:59,520
than source code policies.

2070
01:18:59,520 –> 01:19:00,960
Your finance team’s tolerance

2071
01:19:00,960 –> 01:19:03,920
for false positives is not your engineering team’s tolerance

2072
01:19:03,920 –> 01:19:05,280
designed for that reality.

2073
01:19:05,280 –> 01:19:08,000
A key pattern here is allow with justification

2074
01:19:08,000 –> 01:19:09,200
in the external zone,

2075
01:19:09,200 –> 01:19:11,520
but only when the business has a defensible need.

2076
01:19:11,520 –> 01:19:13,200
The justification isn’t for feelings.

2077
01:19:13,200 –> 01:19:14,000
It’s for evidence.

2078
01:19:14,000 –> 01:19:16,080
If an exception happens, you want a named human,

2079
01:19:16,080 –> 01:19:18,560
a reason, and a timestamp, you can query later.

2080
01:19:18,560 –> 01:19:20,000
Otherwise, you don’t have governance.

2081
01:19:20,000 –> 01:19:21,280
You have vibes.

2082
01:19:21,280 –> 01:19:22,720
Now, continuous audit.

2083
01:19:22,720 –> 01:19:24,640
External collaboration is where you need

2084
01:19:24,640 –> 01:19:26,000
near-real time detection,

2085
01:19:26,000 –> 01:19:27,360
not end-of-quarter review.

2086
01:19:27,360 –> 01:19:28,880
Stream the right signals.

2087
01:19:28,880 –> 01:19:30,080
Guest invitations.

2088
01:19:30,080 –> 01:19:31,280
Guest sign-ins.

2089
01:19:31,280 –> 01:19:32,400
Link creation.

2090
01:19:32,400 –> 01:19:33,520
Sharing events.

2091
01:19:33,520 –> 01:19:34,720
Download spikes.

2092
01:19:34,720 –> 01:19:37,520
Permission changes and DLP overrides.

2093
01:19:37,520 –> 01:19:38,960
Then correlate them with identities

2094
01:19:38,960 –> 01:19:40,560
which user, which guest,

2095
01:19:40,560 –> 01:19:41,760
which service principal,

2096
01:19:41,760 –> 01:19:42,960
which site, which label.

2097
01:19:42,960 –> 01:19:44,400
If you can’t join those dots,

2098
01:19:44,400 –> 01:19:45,760
you can’t investigate quickly

2099
01:19:45,760 –> 01:19:46,960
and you will lose the narrative

2100
01:19:46,960 –> 01:19:48,240
when something goes wrong.

2101
01:19:48,240 –> 01:19:49,840
And watch for the specific anomalies

2102
01:19:49,840 –> 01:19:51,440
that matter in cross-tenant work.

2103
01:19:51,440 –> 01:19:53,440
A guest suddenly accessing a new site

2104
01:19:53,440 –> 01:19:54,960
outside their normal zone,

2105
01:19:54,960 –> 01:19:56,800
a wave of anonymous links appearing

2106
01:19:56,800 –> 01:19:58,160
where they should be forbidden,

2107
01:19:58,160 –> 01:19:59,520
or a service principal reading

2108
01:19:59,520 –> 01:20:02,000
across multiple external sites in a short window.

2109
01:20:02,000 –> 01:20:04,800
Those are not interesting logs.

2110
01:20:04,800 –> 01:20:06,320
They’re breach precursors.

2111
01:20:06,320 –> 01:20:08,080
So the architecture closes the loop.

2112
01:20:08,080 –> 01:20:09,840
Entra controls the identities.

2113
01:20:09,840 –> 01:20:12,000
Conditional access controls the sessions.

2114
01:20:12,000 –> 01:20:14,400
Group-based access controls the permissions.

2115
01:20:14,400 –> 01:20:17,120
Sensitivity labels control the content behavior.

2116
01:20:17,120 –> 01:20:19,040
DLP controls the egress

2117
01:20:19,040 –> 01:20:21,040
and Sentinel controls the story you’ll need

2118
01:20:21,040 –> 01:20:22,640
when leadership asks what happened.

2119
01:20:22,640 –> 01:20:24,480
Agents in the enterprise

2120
01:20:24,480 –> 01:20:26,880
where autonomy fits, where it must be caged.

2121
01:20:26,880 –> 01:20:28,640
Now the part everyone wants to talk about

2122
01:20:28,640 –> 01:20:31,040
usually in the least useful way, agents.

2123
01:20:31,040 –> 01:20:33,840
Most organizations treat agents like the next UI.

2124
01:20:33,840 –> 01:20:35,760
A chat box bolted onto a site.

2125
01:20:35,760 –> 01:20:37,680
Asked anything about this library.

2126
01:20:37,680 –> 01:20:39,520
That’s fine, but it’s not the enterprise problem.

2127
01:20:39,520 –> 01:20:41,360
The enterprise problem is that agents turn

2128
01:20:41,360 –> 01:20:44,560
SharePoint from a workflow surface into a decision surface

2129
01:20:44,560 –> 01:20:46,080
and decisions create liability

2130
01:20:46,080 –> 01:20:48,160
when nobody can explain why they happened.

2131
01:20:48,160 –> 01:20:49,120
So the framing is simple.

2132
01:20:49,120 –> 01:20:50,480
Agents are interfaces first.

2133
01:20:50,480 –> 01:20:51,360
They are not pipelines.

2134
01:20:51,360 –> 01:20:53,760
They sit at the edge, helping humans find,

2135
01:20:53,760 –> 01:20:55,520
summarize, and initiate.

2136
01:20:55,520 –> 01:20:57,680
They do not replace deterministic enforcement.

2137
01:20:57,680 –> 01:20:59,600
They do not own compliance outcomes.

2138
01:20:59,600 –> 01:21:02,080
And they absolutely do not get to freestyle changes

2139
01:21:02,080 –> 01:21:04,640
across systems because the prompt sounded confident.

2140
01:21:04,640 –> 01:21:06,480
Where agents fit is the reasoning layer

2141
01:21:06,480 –> 01:21:08,960
when the output is advisory or bounded.

2142
01:21:08,960 –> 01:21:10,640
Knowledge retrieval on a site.

2143
01:21:10,640 –> 01:21:13,360
Guided actions that map to approved workflows.

2144
01:21:13,360 –> 01:21:14,160
Triage.

2145
01:21:14,160 –> 01:21:15,360
Which policy applies?

2146
01:21:15,360 –> 01:21:16,400
Who owns this?

2147
01:21:16,400 –> 01:21:18,160
Where is the latest approved version?

2148
01:21:18,160 –> 01:21:19,680
What template should we use?

2149
01:21:19,680 –> 01:21:21,360
Which intake form is correct?

2150
01:21:21,360 –> 01:21:24,240
Those tasks reduce cognitive load without changing system state.

2151
01:21:24,240 –> 01:21:27,520
Everything clicked for enterprises when they realize the pattern.

2152
01:21:27,520 –> 01:21:29,280
The agent can decide what to ask,

2153
01:21:29,280 –> 01:21:30,960
but it must not decide what to do.

2154
01:21:30,960 –> 01:21:32,240
If it’s going to do something,

2155
01:21:32,240 –> 01:21:34,000
it does it through a cage.

2156
01:21:34,000 –> 01:21:37,520
A controlled tool set with explicit permissions, explicit inputs,

2157
01:21:37,520 –> 01:21:39,520
explicit logging, and an approval gate

2158
01:21:39,520 –> 01:21:41,760
when the action crosses a boundary.

2159
01:21:41,760 –> 01:21:43,200
That cage can be technical.

2160
01:21:43,200 –> 01:21:46,080
A set of graph scopes limited to one-side collection

2161
01:21:46,080 –> 01:21:47,600
read only by default,

2162
01:21:47,600 –> 01:21:50,000
write actions routed through an orchestration service

2163
01:21:50,000 –> 01:21:52,800
that validates policy and state before it commits.

2164
01:21:52,800 –> 01:21:54,080
It can be organizational.

2165
01:21:54,080 –> 01:21:56,000
Agents require sponsors have life cycles

2166
01:21:56,000 –> 01:21:58,000
and get deleted when the sponsor disappears.

2167
01:21:58,000 –> 01:21:59,760
But the cage must exist because autonomy

2168
01:21:59,760 –> 01:22:01,840
without containment isn’t innovation.

2169
01:22:01,840 –> 01:22:03,120
It’s conditional chaos.

2170
01:22:03,760 –> 01:22:06,560
The other mistake is treating agents as smart users.

2171
01:22:06,560 –> 01:22:07,680
They’re not.

2172
01:22:07,680 –> 01:22:09,920
In architectural terms,

2173
01:22:09,920 –> 01:22:12,000
an agent is a non-human identity

2174
01:22:12,000 –> 01:22:14,560
with tool access and a probabilistic reasoning engine.

2175
01:22:14,560 –> 01:22:16,960
That means it inherits the two worst properties

2176
01:22:16,960 –> 01:22:18,240
of enterprise systems.

2177
01:22:18,240 –> 01:22:20,400
It can act quickly and it can be wrong quickly.

2178
01:22:20,400 –> 01:22:23,120
So the enterprise model treats agents as identities,

2179
01:22:23,120 –> 01:22:25,440
registered, permissioned, monitored, and reviewed.

2180
01:22:25,440 –> 01:22:27,520
The same rules apply as with service principles

2181
01:22:27,520 –> 01:22:28,880
and managed identities.

2182
01:22:28,880 –> 01:22:30,720
Leased privilege, group-based access

2183
01:22:30,720 –> 01:22:32,080
and zero standing privilege.

2184
01:22:32,080 –> 01:22:34,240
If an agent needs to perform privileged actions,

2185
01:22:34,240 –> 01:22:36,160
it does it under just-in-time elevation

2186
01:22:36,160 –> 01:22:38,160
and logs every action with correlation IDs

2187
01:22:38,160 –> 01:22:39,600
you can join in Sentinel.

2188
01:22:39,600 –> 01:22:42,640
Now the risk model because this is where leader stops smiling.

2189
01:22:42,640 –> 01:22:45,920
There’s a failure triangle that always shows up with agents.

2190
01:22:45,920 –> 01:22:48,000
Oversharing, untrusted input,

2191
01:22:48,000 –> 01:22:49,360
and external actions.

2192
01:22:49,360 –> 01:22:52,160
Oversharing means the underlying SharePoint permission model

2193
01:22:52,160 –> 01:22:55,600
is messy and the agent faithfully surfaces what it can see.

2194
01:22:55,600 –> 01:22:57,040
That’s not an AI failure.

2195
01:22:57,040 –> 01:22:59,840
That’s your access model showing up at machine speed.

2196
01:22:59,840 –> 01:23:03,200
Untrusted input means the agent reads content it didn’t control,

2197
01:23:03,200 –> 01:23:06,800
uploaded files, emails, partner documents, pages edited by anyone.

2198
01:23:06,800 –> 01:23:09,120
If you don’t assume malicious or misleading content

2199
01:23:09,120 –> 01:23:11,040
will enter the system, you will eventually learn

2200
01:23:11,040 –> 01:23:12,160
that assumption was wrong.

2201
01:23:12,160 –> 01:23:14,720
External actions means the agent can call tools,

2202
01:23:14,720 –> 01:23:17,360
send messages, change permissions, create links,

2203
01:23:17,360 –> 01:23:19,120
move files, trigger flows.

2204
01:23:19,120 –> 01:23:21,360
The moment an agent can act outside its own boundary,

2205
01:23:21,360 –> 01:23:24,160
prompt injection stops being a theory and becomes an incident type.

2206
01:23:24,160 –> 01:23:26,640
So the enterprise pattern is to break that triangle.

2207
01:23:26,640 –> 01:23:30,800
You reduce oversharing with the group model labels and DLP you already built.

2208
01:23:30,800 –> 01:23:33,680
You treat untrusted input as normal and sanitize

2209
01:23:33,680 –> 01:23:35,840
what the agent can use as instructions.

2210
01:23:35,840 –> 01:23:37,840
And you tightly constrain external actions,

2211
01:23:37,840 –> 01:23:41,840
read before write and write only through policy enforcement services.

2212
01:23:41,840 –> 01:23:43,920
Now, a practical architecture view.

2213
01:23:43,920 –> 01:23:47,280
Agents become entry points into your existing automation stack.

2214
01:23:47,280 –> 01:23:49,120
A site agent can answer questions,

2215
01:23:49,120 –> 01:23:52,080
then offer approved actions that map two quick steps

2216
01:23:52,080 –> 01:23:53,360
or orchestrated workflows.

2217
01:23:53,360 –> 01:23:55,360
A knowledge agent can propose metadata fixes

2218
01:23:55,360 –> 01:23:56,560
but humans confirm.

2219
01:23:56,560 –> 01:23:58,560
An admin agent can serve as drift signals

2220
01:23:58,560 –> 01:24:01,360
but enforcement runs through deterministic controls

2221
01:24:01,360 –> 01:24:03,920
and log remediation that keeps your system stable.

2222
01:24:03,920 –> 01:24:06,240
Humans get speed but governance stays real.

2223
01:24:06,240 –> 01:24:08,880
Because the truth is agents don’t reduce governance needs.

2224
01:24:08,880 –> 01:24:10,000
They amplify them.

2225
01:24:10,000 –> 01:24:11,920
The blueprint that survives growth.

2226
01:24:11,920 –> 01:24:15,120
Scalable SharePoint automation isn’t more flows or more AI.

2227
01:24:15,120 –> 01:24:16,720
It’s enforced intent.

2228
01:24:16,720 –> 01:24:19,120
Entra identity, purview labels,

2229
01:24:19,120 –> 01:24:21,520
DLP gates and observable orchestration

2230
01:24:21,520 –> 01:24:24,000
that converges instead of drifting.

2231
01:24:24,000 –> 01:24:26,080
If you want the next layer, watch the episode

2232
01:24:26,080 –> 01:24:27,760
on designing the Entra group model

2233
01:24:27,760 –> 01:24:29,360
that prevents permission fanfiction

2234
01:24:29,360 –> 01:24:31,520
because everything depends on that perimeter.

2235
01:24:31,520 –> 01:24:33,440
Subscribe to M365FM

2236
01:24:33,440 –> 01:24:35,280
and connect with milk-o-peaters on LinkedIn

2237
01:24:35,280 –> 01:24:37,360
with your hardest SharePoint automation problem

2238
01:24:37,360 –> 01:24:38,800
for a future breakdown.





Source link

0 Votes: 0 Upvotes, 0 Downvotes (0 Points)

Leave a reply

Follow
Search
Popular Now
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...

Discover more from 365 Community Online

Subscribe now to keep reading and get access to the full archive.

Continue reading