1
00:00:00,000 --> 00:00:03,880
Hello everyone and welcome to another episode of Microsoft Knowledge Nuggets.

2
00:00:03,880 --> 00:00:07,600
Today's topic is Dataverse and it sounds like a made up buzzword at first.

3
00:00:07,600 --> 00:00:10,440
Most people hear it and think it's just a fancy name for a database,

4
00:00:10,440 --> 00:00:15,200
but it's actually the hidden engine behind most business apps built on Microsoft's power platform.

5
00:00:15,200 --> 00:00:19,160
And here's the thing, it's not just a database, it's something much more practical.

6
00:00:19,160 --> 00:00:23,200
By the end of this episode, you'll understand what Dataverse actually is,

7
00:00:23,200 --> 00:00:28,640
how it organizes data, and why it's the backbone of every power platform solution worth building.

8
00:00:28,640 --> 00:00:31,200
There's one thing Dataverse does that most people don't expect,

9
00:00:31,200 --> 00:00:33,840
and it changes how you think about building apps entirely.

10
00:00:33,840 --> 00:00:35,840
Grab your coffee and let's dive in.

11
00:00:35,840 --> 00:00:37,280
Why Dataverse exists?

12
00:00:37,280 --> 00:00:39,280
Imagine you start a new company tomorrow.

13
00:00:39,280 --> 00:00:41,640
20 years ago, you'd buy separate products for everything,

14
00:00:41,640 --> 00:00:43,960
one server for email, another for file storage,

15
00:00:43,960 --> 00:00:45,840
a different system for customer data.

16
00:00:45,840 --> 00:00:48,960
Each one had its own login, its own rules, its own way of doing things,

17
00:00:48,960 --> 00:00:51,440
and getting them to talk to each other was a full-time job.

18
00:00:51,440 --> 00:00:54,600
Fast forward to today, and the problem hasn't really gone away.

19
00:00:54,600 --> 00:00:56,880
Businesses still use disconnected spreadsheets,

20
00:00:56,880 --> 00:00:59,920
sharepoint lists, and random databases that don't talk to each other.

21
00:00:59,920 --> 00:01:01,680
You've got customer data in one place,

22
00:01:01,680 --> 00:01:04,080
order data in another, and inventory data in a third,

23
00:01:04,080 --> 00:01:06,240
and someone's probably still tracking something important

24
00:01:06,240 --> 00:01:09,440
in a dusty Excel file that only one person knows how to find.

25
00:01:09,440 --> 00:01:11,600
Now, Excel works fine for small teams.

26
00:01:11,600 --> 00:01:14,480
You can track a few dozen assets, a handful of customers,

27
00:01:14,480 --> 00:01:17,120
maybe a simple project list, but it breaks its scale.

28
00:01:17,120 --> 00:01:20,240
There's no real security, so anyone with the file can see everything.

29
00:01:20,240 --> 00:01:22,000
There's no relationships between data,

30
00:01:22,000 --> 00:01:25,920
so you're copying and pasting the same customer name across multiple sheets.

31
00:01:25,920 --> 00:01:28,160
And there's no audit trail, so if someone changes a number,

32
00:01:28,160 --> 00:01:30,240
you'll never know who did it or when.

33
00:01:30,240 --> 00:01:31,760
Sharepoint lists are a step up.

34
00:01:31,760 --> 00:01:33,920
They live in the cloud, support multiple users,

35
00:01:33,920 --> 00:01:36,160
and are included with Microsoft 365.

36
00:01:36,160 --> 00:01:37,280
But they hit a hard wall.

37
00:01:37,280 --> 00:01:39,520
There's a 5,000 item view threshold,

38
00:01:39,520 --> 00:01:42,320
so try to show more than 5,000 items in a list view,

39
00:01:42,320 --> 00:01:43,760
and SharePoint just says no.

40
00:01:43,760 --> 00:01:45,280
And there's no real relational data.

41
00:01:45,280 --> 00:01:47,680
You can create look-up columns, but they're not enforced,

42
00:01:47,680 --> 00:01:49,760
so you can link to a record that doesn't exist

43
00:01:49,760 --> 00:01:52,880
or delete a manufacturer and leave often products floating around.

44
00:01:52,880 --> 00:01:53,520
It's a mess.

45
00:01:54,400 --> 00:01:57,040
So Microsoft looked at all this fragmentation and thought,

46
00:01:57,040 --> 00:01:59,360
"What if there was one unified data platform

47
00:01:59,360 --> 00:02:02,160
where all your power platform apps talked to the same data?

48
00:02:02,160 --> 00:02:04,160
What if you didn't need to worry about security,

49
00:02:04,160 --> 00:02:06,720
relationships, and logic in every single app?

50
00:02:06,720 --> 00:02:08,640
What if the platform handled that for you?"

51
00:02:08,640 --> 00:02:10,480
That's Dataverse, and here's the key point.

52
00:02:10,480 --> 00:02:11,600
It's not just storage.

53
00:02:11,600 --> 00:02:13,840
It's a managed service that handles security,

54
00:02:13,840 --> 00:02:16,400
logic, and relationships, so you don't have to.

55
00:02:16,400 --> 00:02:18,160
You define your data model once,

56
00:02:18,160 --> 00:02:21,040
and every app, every flow, every report,

57
00:02:21,040 --> 00:02:22,640
uses the same foundation.

58
00:02:22,640 --> 00:02:26,080
No more copying data between systems, no more inconsistent records,

59
00:02:26,080 --> 00:02:28,560
no more building the same security logic five times.

60
00:02:28,560 --> 00:02:30,720
Tables, the foundation.

61
00:02:30,720 --> 00:02:32,480
So what exactly is a Dataverse table

62
00:02:32,480 --> 00:02:35,120
and how is it different from an Excel sheet or a SharePoint list?

63
00:02:35,120 --> 00:02:36,720
Let's start with the simplest definition.

64
00:02:36,720 --> 00:02:39,280
A table is the most basic building block in Dataverse.

65
00:02:39,280 --> 00:02:41,520
Think of it like a spreadsheet tab, but smarter.

66
00:02:41,520 --> 00:02:43,920
Each table has columns with specific data types,

67
00:02:43,920 --> 00:02:46,320
text, numbers, dates, choices, currencies.

68
00:02:46,320 --> 00:02:48,400
You define what kind of data goes in each column,

69
00:02:48,400 --> 00:02:50,800
and Dataverse makes sure only valid data gets stored.

70
00:02:51,760 --> 00:02:55,040
No more typing NA in a date field because someone didn't know what to put there.

71
00:02:55,040 --> 00:02:57,280
But here's where Dataverse pulls ahead of Excel.

72
00:02:57,280 --> 00:02:59,840
You get tools that spreadsheets simply don't have.

73
00:02:59,840 --> 00:03:00,960
Auto numbering.

74
00:03:00,960 --> 00:03:03,920
Every new record gets a unique ID automatically.

75
00:03:03,920 --> 00:03:07,360
Calculated columns, a field that computes its value based on other fields

76
00:03:07,360 --> 00:03:10,400
like total price, it was quantity times unit price,

77
00:03:10,400 --> 00:03:12,800
business rules, logic that runs on the server,

78
00:03:12,800 --> 00:03:15,360
not in a macro that someone might accidentally disable.

79
00:03:15,360 --> 00:03:16,720
And you don't start from scratch.

80
00:03:16,720 --> 00:03:19,680
Dataverse gives you standard tables out of the box.

81
00:03:19,680 --> 00:03:23,200
Contacts, accounts, activities, these are ready to use,

82
00:03:23,200 --> 00:03:25,600
already designed with the columns and relationships

83
00:03:25,600 --> 00:03:27,680
that make sense for common business scenarios.

84
00:03:27,680 --> 00:03:30,080
You can create custom tables for your own needs,

85
00:03:30,080 --> 00:03:33,360
products, assets, orders, whatever your business requires.

86
00:03:33,360 --> 00:03:35,120
Here's something most people don't realize.

87
00:03:35,120 --> 00:03:37,040
When you create a table in Dataverse,

88
00:03:37,040 --> 00:03:40,000
a lot happens behind the scenes without you lifting a finger.

89
00:03:40,000 --> 00:03:42,400
Dataverse automatically adds a primary key,

90
00:03:42,400 --> 00:03:44,640
a unique identifier for every record.

91
00:03:44,640 --> 00:03:46,480
It adds created and modified dates.

92
00:03:46,480 --> 00:03:48,640
It adds ownership fields who created this record,

93
00:03:48,640 --> 00:03:49,600
who owns it now.

94
00:03:49,600 --> 00:03:52,080
It adds a status field, active or inactive,

95
00:03:52,080 --> 00:03:54,800
so you can soft delete records instead of permanently removing them.

96
00:03:54,800 --> 00:03:57,040
All of that is there from the moment you create the table.

97
00:03:57,040 --> 00:03:58,880
Let me give you a real world example.

98
00:03:58,880 --> 00:04:00,800
Say you're building an asset tracking system.

99
00:04:00,800 --> 00:04:02,720
You create a table called assets.

100
00:04:02,720 --> 00:04:04,800
You add columns for the asset name, serial number,

101
00:04:04,800 --> 00:04:06,400
purchase date and current value.

102
00:04:06,400 --> 00:04:07,920
That's four columns you define.

103
00:04:07,920 --> 00:04:10,640
But behind the scenes, Dataverse adds another dozen,

104
00:04:10,640 --> 00:04:13,280
the unique ID, the created date, the modified date,

105
00:04:13,280 --> 00:04:15,040
the owner, the status and so on.

106
00:04:15,040 --> 00:04:16,480
You get all of that for free.

107
00:04:16,480 --> 00:04:19,120
And when you start building apps on top of this table,

108
00:04:19,120 --> 00:04:21,040
those extra fields are already there,

109
00:04:21,040 --> 00:04:24,080
ready to use for security, auditing and reporting.

110
00:04:24,080 --> 00:04:26,400
One to many relationships.

111
00:04:26,400 --> 00:04:27,520
Once you have a few tables,

112
00:04:27,520 --> 00:04:29,840
the real power comes from connecting them together.

113
00:04:29,840 --> 00:04:32,640
And the most common way to do that is with a one to many relationship.

114
00:04:32,640 --> 00:04:33,680
Here's how it works.

115
00:04:33,680 --> 00:04:37,200
One record in one table links to many records in another table.

116
00:04:37,200 --> 00:04:38,800
Let me give you a concrete example.

117
00:04:38,800 --> 00:04:41,120
Say you have a table for vehicle manufacturers.

118
00:04:41,120 --> 00:04:42,880
Honda Ford Toyota.

119
00:04:42,880 --> 00:04:44,640
And you have another table for vehicles.

120
00:04:44,640 --> 00:04:46,560
Civic F-150 Camry.

121
00:04:46,560 --> 00:04:48,240
One manufacturer makes many vehicles.

122
00:04:48,240 --> 00:04:49,680
That's a one to many relationship.

123
00:04:49,680 --> 00:04:53,280
The way you build this in practice is with something called a lookup column.

124
00:04:53,280 --> 00:04:56,080
On your vehicle table, you add a column called manufacturer.

125
00:04:56,080 --> 00:04:59,040
And you set it to lookup values from your manufacturer table.

126
00:04:59,040 --> 00:05:00,480
When a user fills in that field,

127
00:05:00,480 --> 00:05:02,800
they don't type the manufacturer name from scratch.

128
00:05:02,800 --> 00:05:03,760
They search for it.

129
00:05:03,760 --> 00:05:05,280
Dataverse shows a search box,

130
00:05:05,280 --> 00:05:07,520
not a drop down of thousands of options.

131
00:05:07,520 --> 00:05:09,520
They pick Honda and the relationship is created.

132
00:05:09,520 --> 00:05:10,560
Now, why does this matter?

133
00:05:10,560 --> 00:05:12,560
Because instead of repeating the manufacturer name

134
00:05:12,560 --> 00:05:13,680
in every single vehicle row,

135
00:05:13,680 --> 00:05:15,360
you store it once and reference it.

136
00:05:15,360 --> 00:05:17,040
The Civic points to the Honda record.

137
00:05:17,040 --> 00:05:18,880
The accord points to the same Honda record.

138
00:05:18,880 --> 00:05:21,040
The CRV points to the same Honda record.

139
00:05:21,040 --> 00:05:22,560
You're not typing Honda three times.

140
00:05:22,560 --> 00:05:23,760
You're storing it once.

141
00:05:23,760 --> 00:05:25,680
And every vehicle just links back to it.

142
00:05:25,680 --> 00:05:28,000
This prevents data entry errors.

143
00:05:28,000 --> 00:05:29,120
No more typos.

144
00:05:29,120 --> 00:05:32,400
Honda in one row, Honda motor in another, Honda cumped in a third.

145
00:05:32,400 --> 00:05:33,440
It's all the same record.

146
00:05:33,440 --> 00:05:34,960
And it makes updates incredibly easy.

147
00:05:34,960 --> 00:05:37,840
Say Honda decides to rebrand and change their company name.

148
00:05:37,840 --> 00:05:41,120
In a spreadsheet, you'd have to find every single row that says Honda

149
00:05:41,120 --> 00:05:42,080
and update it.

150
00:05:42,080 --> 00:05:44,480
Miss one and now you've got inconsistent data.

151
00:05:44,480 --> 00:05:46,960
In Dataverse, you change the manufacturer name once

152
00:05:46,960 --> 00:05:49,200
and every vehicle that links to that manufacturer

153
00:05:49,200 --> 00:05:50,960
automatically reflects the update.

154
00:05:50,960 --> 00:05:52,640
One change, everything updates.

155
00:05:52,640 --> 00:05:55,040
Dataverse also enforces something

156
00:05:55,040 --> 00:05:56,800
called referential integrity.

157
00:05:56,800 --> 00:05:58,640
You can't link to a manufacturer record

158
00:05:58,640 --> 00:05:59,840
that doesn't exist.

159
00:05:59,840 --> 00:06:01,680
If someone tries to delete a manufacturer

160
00:06:01,680 --> 00:06:03,360
that still has vehicles linked to it,

161
00:06:03,360 --> 00:06:04,640
Dataverse will stop them.

162
00:06:04,640 --> 00:06:07,040
No often records, no broken references.

163
00:06:07,040 --> 00:06:08,400
The data stays clean.

164
00:06:08,400 --> 00:06:09,680
And here's where it gets visual.

165
00:06:09,680 --> 00:06:10,880
On the manufacturer form,

166
00:06:10,880 --> 00:06:12,800
you can add something called a subgrid.

167
00:06:12,800 --> 00:06:14,800
This is a small table embedded in the form

168
00:06:14,800 --> 00:06:17,200
that shows all the vehicles belonging to that manufacturer.

169
00:06:17,200 --> 00:06:18,880
So when you open the Honda record,

170
00:06:18,880 --> 00:06:21,280
you see a list, Civic, Accord, CRV,

171
00:06:21,280 --> 00:06:22,640
right there on the same screen.

172
00:06:22,640 --> 00:06:24,480
You can see the relationship from both sides.

173
00:06:24,480 --> 00:06:26,880
The vehicle knows which manufacturer it belongs to.

174
00:06:26,880 --> 00:06:29,680
And the manufacturer knows which vehicles are linked to it.

175
00:06:29,680 --> 00:06:31,840
That's the power of a one-to-many relationship.

176
00:06:31,840 --> 00:06:34,720
Many-to-many relationships.

177
00:06:34,720 --> 00:06:37,120
Now, what about when you need a more flexible connection?

178
00:06:37,120 --> 00:06:39,040
Where many records linked to many other records,

179
00:06:39,040 --> 00:06:40,560
sometimes one-to-many isn't enough?

180
00:06:40,560 --> 00:06:41,680
Take a car dealership.

181
00:06:41,680 --> 00:06:43,600
A single customer might own multiple vehicles.

182
00:06:43,600 --> 00:06:44,320
That's easy.

183
00:06:44,320 --> 00:06:45,920
One customer, many vehicles.

184
00:06:45,920 --> 00:06:46,960
But what about a household?

185
00:06:46,960 --> 00:06:49,200
A single vehicle might be owned by multiple people.

186
00:06:49,200 --> 00:06:50,800
A husband and wife, for example.

187
00:06:50,800 --> 00:06:53,440
So you've got a situation where one customer can own many vehicles

188
00:06:53,440 --> 00:06:55,360
and one vehicle can be owned by many customers.

189
00:06:55,360 --> 00:06:57,040
That's a many-to-many relationship.

190
00:06:57,040 --> 00:06:59,200
Dataverse supports this natively.

191
00:06:59,200 --> 00:07:00,800
You don't need to create an extra table.

192
00:07:00,800 --> 00:07:02,800
You just define a many-to-many relationship

193
00:07:02,800 --> 00:07:05,040
between your contact table and your vehicle table

194
00:07:05,040 --> 00:07:06,880
and Dataverse handles the rest.

195
00:07:06,880 --> 00:07:08,960
Behind the scenes, it creates a hidden table

196
00:07:08,960 --> 00:07:10,160
that stores the connections.

197
00:07:10,160 --> 00:07:11,040
But you never see it.

198
00:07:11,040 --> 00:07:13,360
You just see that a contact can have multiple vehicles

199
00:07:13,360 --> 00:07:15,360
and a vehicle can have multiple contacts.

200
00:07:15,360 --> 00:07:16,240
But here's the catch.

201
00:07:16,240 --> 00:07:18,880
That out-of-box many-to-many table is invisible.

202
00:07:18,880 --> 00:07:20,560
You can't see it in your list of tables.

203
00:07:20,560 --> 00:07:21,760
You can't add columns to it.

204
00:07:21,760 --> 00:07:23,680
You can't store extra data on it.

205
00:07:23,680 --> 00:07:26,160
So if you want to track the purchase price of that vehicle

206
00:07:26,160 --> 00:07:28,320
or the data was bought or the financing terms,

207
00:07:28,320 --> 00:07:28,960
you can't.

208
00:07:28,960 --> 00:07:31,440
The hidden table only stores the relationship itself.

209
00:07:31,440 --> 00:07:32,800
Nothing else.

210
00:07:32,800 --> 00:07:34,640
If you need to track additional information,

211
00:07:34,640 --> 00:07:36,800
you create a custom intersection table.

212
00:07:36,800 --> 00:07:39,760
Let's say you create a table called "Purchase".

213
00:07:39,760 --> 00:07:42,560
This table has a lookup to the contact who bought it.

214
00:07:42,560 --> 00:07:43,600
A lookup to the vehicle.

215
00:07:43,600 --> 00:07:44,400
What they bought.

216
00:07:44,400 --> 00:07:46,400
And then you can add whatever columns you need.

217
00:07:46,400 --> 00:07:48,480
Purchase price, purchase date,

218
00:07:48,480 --> 00:07:50,400
warranty expiration, payment status.

219
00:07:50,400 --> 00:07:51,680
This gives you full control.

220
00:07:51,680 --> 00:07:52,560
You can add columns.

221
00:07:52,560 --> 00:07:55,200
Trigger power automate flows when a purchase is created.

222
00:07:55,200 --> 00:07:56,480
Import data from Excel.

223
00:07:56,480 --> 00:07:58,080
Everything you'd expect from a proper table.

224
00:07:58,080 --> 00:07:59,200
So when do you use which?

225
00:07:59,200 --> 00:08:02,000
The out-of-box many-to-many is great for simple associations.

226
00:08:02,000 --> 00:08:04,240
Tags on a blog post, categories on a product,

227
00:08:04,240 --> 00:08:05,600
quick lightweight connections

228
00:08:05,600 --> 00:08:07,680
where you just need to know what's linked to what.

229
00:08:07,680 --> 00:08:10,640
The custom intersection table is for business transactions.

230
00:08:10,640 --> 00:08:14,080
Things that have their own data, their own process, their own life cycle.

231
00:08:14,080 --> 00:08:14,960
Think of it this way.

232
00:08:14,960 --> 00:08:16,800
The out-of-box version is like a sticky note.

233
00:08:16,800 --> 00:08:18,800
Quick, easy, gets the job done.

234
00:08:18,800 --> 00:08:20,320
But you can't write much on it.

235
00:08:20,320 --> 00:08:23,120
The custom version is a proper filing cabinet with folders.

236
00:08:23,120 --> 00:08:24,400
Takes a bit more setup,

237
00:08:24,400 --> 00:08:26,480
but you can store everything you need.

238
00:08:26,480 --> 00:08:27,760
Security and access.

239
00:08:27,760 --> 00:08:30,160
Storing and connecting data is only half the story.

240
00:08:30,160 --> 00:08:33,280
The other half is making sure the right people see the right data.

241
00:08:33,280 --> 00:08:35,360
And this is where dataverse really separates itself

242
00:08:35,360 --> 00:08:37,040
from a simple spreadsheet or list.

243
00:08:37,040 --> 00:08:39,280
Dataverse uses role-based security.

244
00:08:39,280 --> 00:08:42,160
You don't assign permissions to individual users one at a time.

245
00:08:42,160 --> 00:08:43,280
You create roles.

246
00:08:43,280 --> 00:08:45,040
Think of them as job descriptions.

247
00:08:45,040 --> 00:08:47,360
And you assign permissions to those roles.

248
00:08:47,360 --> 00:08:48,960
Then you add users to the roles.

249
00:08:48,960 --> 00:08:50,720
A salesperson gets the sales role.

250
00:08:50,720 --> 00:08:52,640
A support agent gets the support role.

251
00:08:52,640 --> 00:08:54,720
A manager gets a role with broader access.

252
00:08:54,720 --> 00:08:56,480
Clean, scalable, and easy to audit.

253
00:08:56,480 --> 00:08:58,160
Now there are three levels of control.

254
00:08:58,160 --> 00:08:59,280
First, table level.

255
00:08:59,280 --> 00:09:01,280
Can this person even see the asset table?

256
00:09:01,280 --> 00:09:02,720
Second, record level?

257
00:09:02,720 --> 00:09:04,560
Which specific rows can they see?

258
00:09:04,560 --> 00:09:07,600
And third, column level can they see every field in a record

259
00:09:07,600 --> 00:09:08,960
or are some fields hidden?

260
00:09:08,960 --> 00:09:09,840
Let's break that down.

261
00:09:09,840 --> 00:09:11,200
Table level is straightforward.

262
00:09:11,200 --> 00:09:13,120
You decide which tables a role can access.

263
00:09:13,120 --> 00:09:16,160
Maybe your support team doesn't need to see the financial tables at all.

264
00:09:16,160 --> 00:09:16,640
Done.

265
00:09:16,640 --> 00:09:18,400
Record level is where it gets interesting.

266
00:09:18,400 --> 00:09:21,360
You control this through something called access levels.

267
00:09:21,360 --> 00:09:22,800
The most common ones are user.

268
00:09:22,800 --> 00:09:24,400
You can only see records you own.

269
00:09:24,400 --> 00:09:27,280
Business unit, you can see records owned by anyone in your department.

270
00:09:27,280 --> 00:09:30,000
And organization, you can see everything in the environment.

271
00:09:30,000 --> 00:09:31,440
Here's something important to understand.

272
00:09:31,440 --> 00:09:34,240
Security and dataverse is additive, not subtractive.

273
00:09:34,240 --> 00:09:38,080
If a user has two roles, they get the most permissive access from either role.

274
00:09:38,080 --> 00:09:40,560
You can't give someone a role that says read only.

275
00:09:40,560 --> 00:09:43,200
And then another role that says, can't see this table

276
00:09:43,200 --> 00:09:45,360
and expect the second one to override the first.

277
00:09:45,360 --> 00:09:46,560
It doesn't work that way.

278
00:09:46,560 --> 00:09:48,720
The system always gives the highest level of access.

279
00:09:48,720 --> 00:09:51,840
So you need to be intentional about which roles you assign to which users.

280
00:09:51,840 --> 00:09:54,000
Business units create natural boundaries.

281
00:09:54,000 --> 00:09:55,840
You set up a business unit for sales,

282
00:09:55,840 --> 00:09:58,160
another for support, another for finance.

283
00:09:58,160 --> 00:10:00,320
Users in the sales unit see sales data.

284
00:10:00,320 --> 00:10:02,720
Users in the support unit see support data.

285
00:10:02,720 --> 00:10:06,240
It creates a clean separation without needing complex role configurations.

286
00:10:06,240 --> 00:10:07,120
And it scales.

287
00:10:07,120 --> 00:10:09,440
Add a new salesperson to the sales business unit

288
00:10:09,440 --> 00:10:11,840
and they automatically inherit the right access.

289
00:10:11,840 --> 00:10:14,080
The golden rule of dataverse security is this,

290
00:10:14,080 --> 00:10:16,720
don't assign system administrator to everyone.

291
00:10:16,720 --> 00:10:19,600
That role gives full access to everything in the environment.

292
00:10:19,600 --> 00:10:22,080
It's tempting to use it as a shortcut when someone says,

293
00:10:22,080 --> 00:10:23,920
I can't see this data.

294
00:10:23,920 --> 00:10:24,720
Don't do it.

295
00:10:24,720 --> 00:10:28,640
Instead, clone a base role, trim it down to only what that person needs

296
00:10:28,640 --> 00:10:29,360
and assign that.

297
00:10:29,360 --> 00:10:30,480
It takes a few extra minutes,

298
00:10:30,480 --> 00:10:32,880
but it saves you from security headaches down the road.

299
00:10:32,880 --> 00:10:34,960
Teams make permission management even easier.

300
00:10:34,960 --> 00:10:36,960
Instead of assigning roles to 20 individual users,

301
00:10:36,960 --> 00:10:39,280
you create a team, assign the role to the team,

302
00:10:39,280 --> 00:10:40,480
and add users to the team.

303
00:10:40,480 --> 00:10:42,960
When someone joins the team, they inherit the team's access.

304
00:10:42,960 --> 00:10:45,920
When someone leaves, you remove them from the team.

305
00:10:45,920 --> 00:10:48,000
No need to update individual role assignments.

306
00:10:48,000 --> 00:10:49,680
It scales beautifully.

307
00:10:49,680 --> 00:10:51,360
Dataverse versus SharePoint.

308
00:10:51,360 --> 00:10:53,360
So after all that, you might still be wondering,

309
00:10:53,360 --> 00:10:56,000
should I use Dataverse or can I just stick with SharePoint?

310
00:10:56,000 --> 00:10:56,880
That's a fair question.

311
00:10:56,880 --> 00:10:58,160
Let's compare them directly.

312
00:10:58,160 --> 00:10:59,440
Here's the biggest difference.

313
00:10:59,440 --> 00:11:02,880
SharePoint is a collaboration platform that happens to have lists.

314
00:11:02,880 --> 00:11:05,040
Dataverse is a proper relational database,

315
00:11:05,040 --> 00:11:06,880
built from the ground up for business apps.

316
00:11:06,880 --> 00:11:09,200
SharePoint lists work great for team sites,

317
00:11:09,200 --> 00:11:11,040
document libraries, and simple trackers,

318
00:11:11,040 --> 00:11:14,160
but they're not designed to be the backbone of a real application.

319
00:11:14,160 --> 00:11:16,320
Dataverse is, now let's talk cost.

320
00:11:16,320 --> 00:11:19,120
SharePoint lists come with your Microsoft 365 subscription.

321
00:11:19,120 --> 00:11:20,000
You already have them.

322
00:11:20,000 --> 00:11:21,360
No extra license needed.

323
00:11:21,360 --> 00:11:23,840
Dataverse requires a power app's premium license,

324
00:11:23,840 --> 00:11:26,000
which runs about $20 per user per month.

325
00:11:26,000 --> 00:11:27,920
That's real money, and it matters.

326
00:11:27,920 --> 00:11:29,280
But you get what you pay for.

327
00:11:29,280 --> 00:11:30,960
Scale is another big difference.

328
00:11:30,960 --> 00:11:32,800
SharePoint has a hard limit.

329
00:11:32,800 --> 00:11:34,960
The 5,000 item view threshold.

330
00:11:34,960 --> 00:11:37,760
If your list goes over that, certain operations just fail.

331
00:11:37,760 --> 00:11:40,320
You can work around it with indexing and careful filtering,

332
00:11:40,320 --> 00:11:41,680
but it's a constant headache.

333
00:11:41,680 --> 00:11:44,480
Dataverse can handle millions of rows with proper queries.

334
00:11:44,480 --> 00:11:46,000
No arbitrary view threshold.

335
00:11:46,000 --> 00:11:47,360
No workarounds needed.

336
00:11:47,360 --> 00:11:49,360
Relationships are where things really split.

337
00:11:49,360 --> 00:11:52,320
SharePoint has look-up columns, but they're not enforced.

338
00:11:52,320 --> 00:11:55,280
You can create a look-up to a record that doesn't exist.

339
00:11:55,280 --> 00:11:57,680
You can delete a record that other records point to,

340
00:11:57,680 --> 00:11:59,600
leaving orphaned references everywhere.

341
00:11:59,600 --> 00:12:02,000
Dataverse enforces referential integrity.

342
00:12:02,000 --> 00:12:03,280
You can't create a broken link.

343
00:12:03,280 --> 00:12:04,400
The data stays clean.

344
00:12:04,400 --> 00:12:05,840
And column-level security?

345
00:12:05,840 --> 00:12:06,880
SharePoint doesn't have it.

346
00:12:06,880 --> 00:12:10,080
You can't hide a salary field while showing the rest of an employee record.

347
00:12:10,080 --> 00:12:10,960
It's all or nothing.

348
00:12:10,960 --> 00:12:12,960
Dataverse lets you secure individual columns.

349
00:12:12,960 --> 00:12:14,880
The HR manager sees the full record.

350
00:12:14,880 --> 00:12:17,600
The team leads sees everything except the salary.

351
00:12:17,600 --> 00:12:19,520
That's not possible with SharePoint alone.

352
00:12:19,520 --> 00:12:20,880
So when do you use each one?

353
00:12:20,880 --> 00:12:22,560
Use SharePoint for simple trackers,

354
00:12:22,560 --> 00:12:24,560
document libraries, team-level collaboration,

355
00:12:24,560 --> 00:12:25,680
and low-budget solutions.

356
00:12:25,680 --> 00:12:28,080
It's fast, it's familiar, and it's already paid for.

357
00:12:28,080 --> 00:12:30,160
Use Dataverse for business-critical data,

358
00:12:30,160 --> 00:12:32,800
complex relationships, enterprise security,

359
00:12:32,800 --> 00:12:35,760
model-driven apps, and anything that needs AI integration.

360
00:12:35,760 --> 00:12:38,400
It's the right foundation when your app needs to grow.

361
00:12:38,400 --> 00:12:40,400
And here's a common pattern that works really well.

362
00:12:40,400 --> 00:12:41,360
A hybrid approach.

363
00:12:41,360 --> 00:12:43,360
Use Dataverse for your structured data,

364
00:12:43,360 --> 00:12:44,880
customers, orders, products,

365
00:12:44,880 --> 00:12:47,360
the things that need relationships and security.

366
00:12:47,360 --> 00:12:48,880
Use SharePoint for documents.

367
00:12:48,880 --> 00:12:50,800
Contracts reports attachments.

368
00:12:50,800 --> 00:12:52,640
Dataverse links to the SharePoint document,

369
00:12:52,640 --> 00:12:54,400
so you get the best of both worlds.

370
00:12:54,400 --> 00:12:56,480
Structured data in a proper database.

371
00:12:56,480 --> 00:12:59,280
Documents in a collaboration platform designed for them.

372
00:12:59,280 --> 00:13:00,640
Power Platform integration.

373
00:13:00,640 --> 00:13:02,400
So Dataverse handles the data layer.

374
00:13:02,400 --> 00:13:05,200
But how does it fit into the bigger power platform picture?

375
00:13:05,200 --> 00:13:06,880
This is where everything comes together.

376
00:13:06,880 --> 00:13:08,480
Dataverse is the shared data layer

377
00:13:08,480 --> 00:13:12,240
that power apps, power automate, and power BI all use.

378
00:13:12,240 --> 00:13:15,440
Think of it as the foundation every other tool builds on top of.

379
00:13:15,440 --> 00:13:17,280
Power Apps connects to it for app data.

380
00:13:17,280 --> 00:13:19,840
Power Automate uses it for triggers and actions.

381
00:13:19,840 --> 00:13:21,600
Power BI queries it for dashboards.

382
00:13:21,600 --> 00:13:23,760
One Data Platform, three different tools,

383
00:13:23,760 --> 00:13:25,600
all working with the same information.

384
00:13:25,600 --> 00:13:26,880
Let's start with Canvas Apps.

385
00:13:26,880 --> 00:13:28,720
You can connect the Canvas app to Dataverse

386
00:13:28,720 --> 00:13:30,960
just like you'd connected to any other data source.

387
00:13:30,960 --> 00:13:32,400
SharePoint, SQL, Excel.

388
00:13:32,400 --> 00:13:33,200
But here's the difference.

389
00:13:33,200 --> 00:13:36,080
When you connect to Dataverse, you get full delegation.

390
00:13:36,080 --> 00:13:38,000
That means your app can query millions of records

391
00:13:38,000 --> 00:13:39,120
without slowing down.

392
00:13:39,120 --> 00:13:42,160
The query runs on the server, not on the user's device.

393
00:13:42,160 --> 00:13:45,040
And you inherit Dataverse's security model automatically.

394
00:13:45,040 --> 00:13:47,440
You don't have to build security logic into the app itself.

395
00:13:47,440 --> 00:13:48,960
The platform handles it.

396
00:13:48,960 --> 00:13:50,720
Model-driven apps are a different story.

397
00:13:50,720 --> 00:13:52,720
These apps are built directly on Dataverse.

398
00:13:52,720 --> 00:13:54,080
They're not possible without it.

399
00:13:54,080 --> 00:13:55,600
When you create a model-driven app,

400
00:13:55,600 --> 00:13:57,440
you're essentially building a user interface

401
00:13:57,440 --> 00:13:58,880
on top of your Dataverse tables.

402
00:13:58,880 --> 00:14:00,880
The forms, the views, the dashboards,

403
00:14:00,880 --> 00:14:03,520
they all come from the Data model you've already defined,

404
00:14:03,520 --> 00:14:05,440
no separate Data Source configuration,

405
00:14:05,440 --> 00:14:06,720
no custom connection strings.

406
00:14:06,720 --> 00:14:08,720
The app and the data are one and the same.

407
00:14:08,720 --> 00:14:11,280
Power Automate can trigger on Dataverse events.

408
00:14:11,280 --> 00:14:13,680
When a record is created, updated, or deleted,

409
00:14:13,680 --> 00:14:15,600
you can kick off a flow automatically.

410
00:14:15,600 --> 00:14:16,880
Send an email notification.

411
00:14:16,880 --> 00:14:19,280
Update a related record, start an approval process.

412
00:14:19,280 --> 00:14:21,440
All triggered by changes in the data itself.

413
00:14:21,440 --> 00:14:23,440
This is where the real automation happens,

414
00:14:23,440 --> 00:14:24,880
not in scheduled batch jobs,

415
00:14:24,880 --> 00:14:27,520
but in real-time responses to business events.

416
00:14:27,520 --> 00:14:29,760
Power BI can query Dataverse tables directly.

417
00:14:29,760 --> 00:14:31,120
You don't need to export Data,

418
00:14:31,120 --> 00:14:32,400
build a separate Data Warehouse,

419
00:14:32,400 --> 00:14:34,560
or set up complex ETL processes.

420
00:14:34,560 --> 00:14:37,120
You point Power BI at your Dataverse environment,

421
00:14:37,120 --> 00:14:39,280
pick the tables you want, and build your dashboards.

422
00:14:39,280 --> 00:14:40,400
The data is live.

423
00:14:40,400 --> 00:14:42,560
When someone updates a record in Power Apps,

424
00:14:42,560 --> 00:14:45,200
the dashboard reflects that change in real-time.

425
00:14:45,200 --> 00:14:47,680
No stale reports, no manual refreshes.

426
00:14:47,680 --> 00:14:49,200
This creates a continuous loop.

427
00:14:49,200 --> 00:14:51,760
You analyze Data in Power BI and spotted trend.

428
00:14:51,760 --> 00:14:54,400
Maybe a spike in support tickets for a specific product.

429
00:14:54,400 --> 00:14:56,000
You act on it in Power Apps.

430
00:14:56,000 --> 00:14:58,080
Create a case, assign it to a team.

431
00:14:58,080 --> 00:15:00,320
You automate the follow-up with Power Automate.

432
00:15:00,320 --> 00:15:02,400
Send a notification, update the status.

433
00:15:02,400 --> 00:15:04,080
All of it runs on the same data.

434
00:15:04,080 --> 00:15:06,720
One platform, one source of truth, end-to-end.

435
00:15:06,720 --> 00:15:09,200
Now here's where things get interesting for the future.

436
00:15:09,200 --> 00:15:12,400
Co-pilot and AI agents use Dataverse as their memory.

437
00:15:12,400 --> 00:15:15,200
When you ask an AI assistant a question about your business data,

438
00:15:15,200 --> 00:15:16,720
it's not searching the internet.

439
00:15:16,720 --> 00:15:18,640
It's querying your Dataverse tables.

440
00:15:18,640 --> 00:15:21,680
Your customer records, your order history, your inventory levels,

441
00:15:21,680 --> 00:15:23,120
that's what feeds the AI.

442
00:15:23,120 --> 00:15:25,760
Not random web content, your actual business data.

443
00:15:25,760 --> 00:15:29,120
And it's secured by the same role-based security we talked about earlier.

444
00:15:29,120 --> 00:15:32,080
The AI can only see what the user has permission to see.

445
00:15:32,080 --> 00:15:33,120
Looking further ahead,

446
00:15:33,120 --> 00:15:35,840
fabric integration means you'll be able to analyze Dataverse data

447
00:15:35,840 --> 00:15:37,360
in one lake without copying it.

448
00:15:37,360 --> 00:15:38,640
No more moving data around.

449
00:15:38,640 --> 00:15:40,000
No more duplicate storage.

450
00:15:40,000 --> 00:15:43,040
Your operational data and your analytical data live in the same place.

451
00:15:43,040 --> 00:15:45,200
That's the direction Microsoft is heading.

452
00:15:45,200 --> 00:15:46,320
Getting started.

453
00:15:46,320 --> 00:15:48,080
So after all that, you might be wondering

454
00:15:48,080 --> 00:15:49,200
where to actually start.

455
00:15:49,200 --> 00:15:50,160
Let's make it simple.

456
00:15:50,160 --> 00:15:51,120
Start with one question.

457
00:15:51,120 --> 00:15:54,000
Do you need a system of record or just a lightweight tracker?

458
00:15:54,000 --> 00:15:56,720
A system of record holds your core business data.

459
00:15:56,720 --> 00:15:59,040
Customers, orders, products, cases.

460
00:15:59,040 --> 00:16:02,240
It needs to be secure, reliable, and connected to other systems.

461
00:16:02,240 --> 00:16:04,640
A lightweight tracker is more like a project list,

462
00:16:04,640 --> 00:16:06,800
a task board or a simple inventory sheet.

463
00:16:06,800 --> 00:16:09,360
Useful, but it doesn't need enterprise-grade infrastructure.

464
00:16:09,360 --> 00:16:10,960
If you're building a real business app

465
00:16:10,960 --> 00:16:14,240
with multiple related tables, security layers, and automation,

466
00:16:14,240 --> 00:16:16,080
Dataverse is the right foundation.

467
00:16:16,080 --> 00:16:18,480
You'll thank yourself later when you need to add a new table,

468
00:16:18,480 --> 00:16:20,960
change a relationship, or integrate with another system.

469
00:16:20,960 --> 00:16:23,120
If you're just tracking a few items for your team,

470
00:16:23,120 --> 00:16:24,640
SharePoint is probably fine.

471
00:16:24,640 --> 00:16:26,080
Use the right tool for the job.

472
00:16:26,080 --> 00:16:27,920
The easiest way to start is to go to make.

473
00:16:27,920 --> 00:16:31,360
PowerApps.com, create a solution, and add your tables.

474
00:16:31,360 --> 00:16:33,120
Don't worry about building an app yet.

475
00:16:33,120 --> 00:16:34,160
Just define your data model.

476
00:16:34,160 --> 00:16:35,040
What tables do you need?

477
00:16:35,040 --> 00:16:36,720
What columns go in each table?

478
00:16:36,720 --> 00:16:38,080
What relationships connect them?

479
00:16:38,080 --> 00:16:40,720
Get that right first, and everything else becomes easier.

480
00:16:40,720 --> 00:16:43,440
Use the standard tables before creating custom ones.

481
00:16:43,440 --> 00:16:45,360
Dataverse comes with tables for contacts,

482
00:16:45,360 --> 00:16:47,040
accounts, activities, and more.

483
00:16:47,040 --> 00:16:49,440
They're already designed for common business scenarios.

484
00:16:49,440 --> 00:16:53,680
The contact table has fields for name, email, phone, address, company,

485
00:16:53,680 --> 00:16:55,040
everything you'd expect.

486
00:16:55,040 --> 00:16:57,440
Before you create a custom/customer table,

487
00:16:57,440 --> 00:17:00,320
ask yourself if the standard account or contact table will work.

488
00:17:00,320 --> 00:17:01,360
It probably will.

489
00:17:01,360 --> 00:17:03,600
And it saves you from reinventing the wheel.

490
00:17:03,600 --> 00:17:06,000
Plan your data model on paper before you start building.

491
00:17:06,000 --> 00:17:08,000
Draw the tables, draw the relationships,

492
00:17:08,000 --> 00:17:09,840
figure out who needs to see what.

493
00:17:09,840 --> 00:17:12,800
A few hours of planning can save you weeks of rework.

494
00:17:12,800 --> 00:17:14,320
And here's a common mistake.

495
00:17:14,320 --> 00:17:16,560
Overcomplicating the model upfront.

496
00:17:16,560 --> 00:17:17,600
Start simple.

497
00:17:17,600 --> 00:17:19,040
Add complexity as you need it.

498
00:17:19,040 --> 00:17:22,080
You don't need 15 tables and 20 relationships on day one.

499
00:17:22,080 --> 00:17:23,200
Start with the core tables.

500
00:17:23,200 --> 00:17:23,920
Get them working.

501
00:17:23,920 --> 00:17:25,600
Add more as your requirements grow.

502
00:17:25,600 --> 00:17:26,880
And here's the beauty of dataverse.

503
00:17:26,880 --> 00:17:29,680
You can change the data model later without breaking your apps.

504
00:17:29,680 --> 00:17:30,560
Add a new column.

505
00:17:30,560 --> 00:17:31,680
Create a new relationship.

506
00:17:31,680 --> 00:17:32,960
Change a data type.

507
00:17:32,960 --> 00:17:33,920
The apps adapt.

508
00:17:33,920 --> 00:17:35,200
Try doing that with a spreadsheet.

509
00:17:35,200 --> 00:17:36,480
You change a column in Excel.

510
00:17:36,480 --> 00:17:38,400
And every formula, every pivot table,

511
00:17:38,400 --> 00:17:40,240
every chart that references it breaks.

512
00:17:40,240 --> 00:17:41,200
Not in dataverse.

513
00:17:41,200 --> 00:17:43,360
The platform handles the changes gracefully.

514
00:17:43,360 --> 00:17:45,120
That alone is worth the switch.

515
00:17:45,120 --> 00:17:46,240
So here's what we covered.

516
00:17:46,240 --> 00:17:48,640
Dataverse is a managed relational data platform

517
00:17:48,640 --> 00:17:51,120
that gives power platform apps a shared, secure,

518
00:17:51,120 --> 00:17:52,160
and scalable foundation.

519
00:17:52,160 --> 00:17:53,360
It's not just a database.

520
00:17:53,360 --> 00:17:55,200
It's a unified layer that handles tables,

521
00:17:55,200 --> 00:17:57,280
relationships, security, and logic.

522
00:17:57,280 --> 00:17:59,680
You don't have to build those things from scratch every time.

523
00:17:59,680 --> 00:18:01,040
The main idea is this.

524
00:18:01,040 --> 00:18:03,120
Think of dataverse as the office building.

525
00:18:03,120 --> 00:18:04,400
Not just a single room.

526
00:18:04,400 --> 00:18:06,400
The office building provides the structure,

527
00:18:06,400 --> 00:18:08,720
the security, the plumbing, the electricity.

528
00:18:08,720 --> 00:18:09,840
You just furnish the rooms.

529
00:18:09,840 --> 00:18:11,440
That's what dataverse does for your apps.

530
00:18:11,440 --> 00:18:12,960
It provides the infrastructure.

531
00:18:12,960 --> 00:18:14,160
You build the solutions.

532
00:18:14,160 --> 00:18:15,920
If you want to see dataverse in action,

533
00:18:15,920 --> 00:18:18,640
check out the video on building your first model driven app.

534
00:18:18,640 --> 00:18:21,200
It walks through the whole process from start to finish.

535
00:18:21,200 --> 00:18:23,680
And subscribe on your favorite podcast platform.

536
00:18:23,680 --> 00:18:25,920
Share this episode with someone who's still using Excel

537
00:18:25,920 --> 00:18:26,640
for everything.

538
00:18:26,640 --> 00:18:28,240
They might thank you later.

