►
From YouTube: SharePoint PnP Partner Story - MondayCoffee - Building fully automated provisioning solution
Description
In this SharePoint PnP Partner Story, we'll have a closer look on a multi-tenant solution developed and used by MondayCoffee company for providing self-service customization management for their customers. More details on covered topics and content of this video from http://dev.office.com/blogs
A
Welcome
everybody
Bishop
on
balance
and
practices,
customer
story,
and
this
time
we
can
have
a
look
on
the
coffee
net
or
Monday
coffee
companies,
let's
say
solution
or
implementation,
how
to
build
a
complex
solution
in
SharePoint
Online,
which
is
also
taking
advantage
of
the
SharePoint
BMP
reusable
components.
My
name
is
Savannah
I'm,
a
senior
program
manager
from
SharePoint
engineering,
and
today's
main
presenter
is
Oliver
Oliver.
So
Oliver
can
you
do
quick
interest
as
well.
A
B
B
Our
main
focus
really
is
on
collaboration,
so
we're
not
doing
those
fancy
awesome-looking
internet
stuff,
we're
really
focusing
on
how
the
people
work
with
the
tools,
how
they
can
collaborate
together
and
we
try
to
simplify
that
way
of
working.
So
our
solutions
are
based
of
Microsoft
technologies,
of
course,
and
mainly
on
SharePoint
Online
and
office
365,
and
we
really
try
to
drive
high
consumption
and
office
365
and
therefore
we
don't
just
implement
the
solution
and
program
the
solution.
B
B
B
So
we
decided
okay,
we
need
some
sort
of
customizations
and
we
figure
out
pretty
soon.
The
key
to
customized,
SharePoint
Online
is
to
own
the
site
provisioning
process.
So
we
decide.
Ok,
we
start
developing
a
provider
hosted
SharePoint
app
that
fulfills
our
needs
and
does
all
the
site
provisioning
and
after
a
little
while,
our
customers
saw
that
and
said,
hey,
that's
exactly
what
we
want
to
have
and
maybe
with
a
few
modifications.
B
B
A
B
B
Also
we
found
out
over
time
site.
Provisioning
is
the
key
to
everything,
but
we
didn't
want
to
stop
there.
We
also
wanted
to
provide
a
option
for
the
end
users
that
simplifies
the
handling
of
the
of
their
daily
work
with
the
site,
without
them
being
all
sharp
and
experts,
because
once
you
provision
a
site,
well,
the
users
left
again
with
a
whole
complex
situation
of
SharePoint.
He
has
to
go
to
site
settings
and
activate
features
and
manage
permissions
and
know
about
content
types
and
all
that,
so
we
really
wanted
to
simplify
that
as
well.
B
A
On
this
one
actually
test
the
conover
clarify
or
elaborate
on
that
one,
so
this
custom
app
store.
These
apps
are
not
actually
SharePoint
apps.
So
in
your
case,
what
you're
doing
is
that
you,
you
have
a
kind
of
an
app
it's
an
abstract
concept
for
your
service,
which
is
actually
a
provisioning,
template
or
template,
which
is
then
applied
to
the
site
right
exactly.
B
First
of
all,
I
would
like
to
show
the
overall
architecture,
so
the
big
difference
here
is
it's
a
multi-tenant
app,
so
we've
all
seen
in
PMT
solutions
the
site,
provisioning
process.
We
are
using
pretty
much
the
same
way,
our
main
application,
storage,
queue
and
site
creation
job,
but
we
also
have
a
document
DB,
which
we
use
for
tenant
separation.
B
Also,
we
are
using
Azure
table
for
our
logging
solution,
which
is
really
really
important.
If
you
are
running
for
multiple
customers,
you
really
have
to
know
what's
going
on,
because
you
can
actually
have
different
tenants
with
different
versions,
and
you
have
to
find
out
about
this.
If
something
goes
wrong,
therefore,
also
we
have
some
maintenance
jobs.
They
are
mainly
for
backup
reasons
and
in
case
we
need
to
fix
something.
Those
are
actually
built
on
the
PNP.
B
Web
drop
architecture,
so
they
are
multi-threaded
and
we
can
hit
many
customers
at
once
and
we
are
making
heavy
use
of
CDN.
So
we
are
not
using
CD
and
Trust
for
our
web
application,
but
also
for
storage,
where
we
store
static
content
like
images
branding
files
stuff
like
that
and
to
manage
all
this.
We
need
a
separate
admin
portal
that
no
care
customer
can
get
in
and
this
is
a
secured
control
of
a
secure
with
Azure
Active
Directory,
but
in
general
it's
a
typical
architecture.
B
So
before
I
start
demoing
the
solution
just
to
get
a
few
terms
right
here,
it's
probably
a
typical
structure.
So
usually
you
have
a
bottle
which
could
be
a
project
portal
Department
portal
workgroup
portal.
A
portal
is
simply
the
place
for
the
end
users
to
search
for
a
specific
site
or
to
create
new
sites.
And
then
there
are
the
workspaces
where
the
end
user
actually
lives
in
and
does
the
daily
collaboration
and
work.
A
Makes
a
lot
of
sense:
Oliver
I
do
apologize.
Can
we
go
one
step
back
on
the
on
the
previous
slide,
because
I
was
needed
right?
So
then
that's
all
good,
but
quickly
kind
of
a
few
points
on
the
on
the
overall
architecture
and,
let's
say
the
discussion
on
that
one
as
well.
If
you
go
the
yes
in
this
one,
so
you're
using
the
OSHA
web
shops,
the
maintenance,
jobs
and
site
creation,
jobs
are
also
web
shops.
A
Your
use
exists,
you're
using
the
storage
queue,
and
essentially
this
is
kind
of
a
classic
pattern
which
has
been
shown
in
the
BMP
as
well
for
long-running
operations.
So
when
somebody
clicks
a
button,
it's
a
long-running
operation,
you
could
have
tasks
to
the
storage
group,
which
is
well
then
fire,
the
actual
long-running
operation
as
a
web
charm,
technically
kind
of
a
from
a
technology
perspective.
You
guys
theoretically
use
as
your
functions
as
well,
but
those
are
functions
has
a
five-minute
timeout
at
least
currently
so
the
actual
web
chats
jobs
are
more
flexible
of
doing
that.
A
A
Yes,
indeed,
indeed,
for
smaller
things,
they
are
super
cheap,
but
then
there
might
be
a
cost
impact,
techno
long-running
operations,
but
I.
Think
overall,
this
sign
is
really
good.
An
overall
AWS
architecture
is
really
good,
and
this
is
something
to
be
honest,
which
we
in
the
in
the
SharePoint
engineering
or
in
the
BMP.
A
B
B
Problem
all
right
so
I
just
explained
the
portals
and
the
workspaces
and
just
going
to
show
a
few
screenshots.
How
this
could
look
like
and
I
will
demo
that
in
a
second.
So
this
is
basically
SharePoint
all
the
box
supplied
as
a
custom
CSS
and
that's
pretty
much
it
it's
it's
a
search
side
with
a
refiner
and
it's
just
limited
to
find
sites
and
there's
our
site
info
web
part
on
the
upper
right
corner
where
you
can
create
new
sites
and
the
admin
can
change
some
settings.
B
B
The
settings
button
is
actually
really
simple.
It
just
gives
the
it
gives
power
to
the
end
user
to
change
the
title,
description
and
change
the
state
of
the
site,
but
it's
still
active
or
not
anymore,
whether
it's
a
public
site
or
the
few
wants
to
have
it
a
private
site
stuff
like
that
and
site
logo,
and
some
some
text
also
he
could
delete
the
site
or
change
sharing
settings.
B
B
So
again,
here
I'm
on
my
portal
side,
which
is
our
project
portal.
In
this
case,
as
I
mentioned,
it's
a
fairly
simple
solution.
You
can
search
for
a
site,
you
can
use
the
refiner,
you
could
say:
okay,
just
show
me
the
private
sides,
and
only
the
ones
that
are
tagged
with
SharePoint
Online,
for
example,
and
that's
pretty
much
it
also
here's
the
place
where
you
can
create
new
sites,
and
now
this
is
probably
the
key
part,
because
now
I'm
not
running
in
SharePoint
Online
anymore.
B
This
is
actually
our
web
application
and
in
this
case
you
can
assign
multiple
templates
to
a
site.
So
a
user
can
decide
whether
it's
a
customer
project
site,
for
example,
or
an
internal
project
side
and
depending
on
the
template,
he
picks
the
form
to
create
the
new
site
might
actually
look
different.
So
if
I
look
at
this
one
and
go
back
and
go
to
a
different
template,
so
this
one
features
a
custom
disclaimer
where
customers
to
say
yes,
I,
agree
to
all
the
terms
and
conditions.
B
Now
let
me
flip
over
to
a
site
because
I'm
not
going
to
create
one.
It
would
take
a
couple
minutes.
So
this
is
a
typical
collaboration
site
right.
You
just
access
tasks
and
as
a
left,
navigation
with
project
document
libraries
stuff
like
that
one
nodes,
and
also
we
have
added
some
some
customer
parts,
for
example
member
by
part
or
recent
documents
in
the
site,
as
well
as
a
Yammer
feed.
B
So
when
I
scroll
down
to
the
bottom
here,
this
is
actually
the
place
where
the
user
control
site
again
I'm,
going
to
show
the
settings
dialog
real
quick
takes
a
second
to
load,
but
here
it
is,
and
this
is
where
the
user
can
control
the
site.
You
can
say:
okay,
my
site
is
inactive
or
closed
and
later
on,
maybe
apply
a
policy
to
this
and
change
just
the
general
settings
without
getting
lost
and
the
SharePoint
out-of-the-box
site
settings
menu.
B
Also,
what
I
would
like
to
point
out?
We
have
the
option
to
provide
translations
here
right
out
of
box,
so
you
can
always
have
your
site,
multi-language
capable
and
to
maybe
show
you
this
real,
quick
I'll
switch
over
to
a
different
browser
in
a
second
here,
I'm
logged
in
as
a
different
user
and
the
whole
site
is
in
German.
B
Now
everything
is
translated,
beginning
from
the
navigation,
the
left,
navigation,
web
power,
titles,
the
parts
itself,
everything
and
this
is
actually
possible
and
is
really
really
important,
especially
in
Switzerland,
for
example,
where
we
have
multiple
languages
within
a
small
single
country
and
I
go
back
to
the
other
browser
again
here.
It's
everything
in
English
and
that's
also
a
key
component
of
our
solution.
We
try
to
make
everything
multi-language
capable
makes.
A
A
lot
of
sense
and
it's
great
to
say
that
it
is
absolutely
doable
and
SharePoint
Online,
because
in
a
European
people
we
both
are
in
the
scholar,
Europe
and
people,
there's
always
multiple
languages.
We
need
to
deal
with
or
if
you
have
a
global
intranet,
you
want
to
make
sure
that
you
have
a
different
languages
for
different
people.
Although
the
content
isn't
translated
automatically.
That's
understandable
because
that's
content,
but
this
is
the
label
based
translation
makes
a
lot
of
sense.
Yes,.
B
So
now
I'm
in
the
App
Store.
This
is
where
the
user
can
add
functionality
to
the
site
and,
as
we
mentioned
earlier,
it
could
simply
be
just
a
hollow
box,
SharePoint
app
like
a
calendar,
but
it
could
be
more
complex
or
custom
solution
like
a
custom
web
part,
a
maybe
a
list,
including
a
web
part,
or
something
like
that.
I'm
just
going
to
demonstrate
this
real,
quick,
I'm
going
to
add
a
calendar
to
my
side,
I'm
just
fairly
simple,
it's
looking
there
we
go
and
all
I
have
to
do
is
a
provide.
B
A
title
and
right
here:
I
can
actually
enter
a
German
translation
for
this
as
well,
so
I
don't
have
to
change
the
user
interface
and
switch
language
of
the
browser
and
then
adjust
everything
which,
which
is
a
big
pain.
And
here
it's
done
pretty
simple
and
I
can
say.
Okay
I
would
like
to
add
this
app
to
the
top
of
my
navigation,
and
we
can
also
customize
the
permissions
right
from
this
dialog.
So
maybe
I
would
like
to
have
visitors
to
not
access
this.
B
B
A
A
A
B
This
is
pretty
much
it,
and
this
comes
down
to
what
most
of
customers
want
to
have.
They
want
to
have
a
simple
site,
provisioning
solution
and
a
place
where
they
can
get
started
to
work,
whether
it's
a
project
or
a
book
group
or
a
department
or
whatever
some
companies
may
say-
hey,
we
have
product
sites
or
whatever
you're,
really
flexible.
Here.
What.
A
About
actually
on
that
particular
topics
on
the
customer
requirements
for
the
site
provisioning,
so
you
can
customize
the
form
of
the
site,
provisioning
and
obviously
that's
for
adjusting
based
on
customer
business
requirements.
How
flexible
is
that?
Can
we
do
an
approval
processes
and
and
all
of
that
in
the
current
game
instead
of
Korea
Saudi
yeah?
Yes,.
B
B
So,
let's
dive
a
little
deeper
into
our
app
concept,
we've
talked
about
it
a
little
bit
already
and
there
are
a
lot
of
points
in
the
slides,
so
I
try
to
go
through
there
as
quickly
as
possible,
but
it's
important
to
understand
the
concept
behind
it.
So,
basically,
an
app,
as
we
said
earlier,
is
a
simple
piece
of
functionality
within
the
site.
B
You
could
probably
best
compare
to
a
full
trust
feature
if
you
are
still
used
to
that
term
features
could
have
web
parts
and
they
could
have
a
a
list
and
during
activation
and
all
that
and
that's
pretty
much
comparable
to
our
apps.
But
now
when
we
get
a
little
more
technical,
our
apps
are
actually
managed.
Extensibility
framework
components
so
managed.
Extensibility
framework
is
a
dotnet
plug-in
concept,
and
this
is
probably
a
important
point
point
out
here.
B
You
don't
have
to
think
in
the
old
SharePoint
terms
anymore
and
when
you
had
to
build
up
on
the
framework,
Microsoft
was
providing
to
users.
Also,
the
asp.net
solutions
you
can
use
whatever
technology
you
want,
whatever
you,
you
would
like
to
use,
because
you're
totally
free
with
that
app
model
manager,
extensibility
framework,
also
features
dependency,
injections
and
stuff
like
that
and
I'll
get
to
it
a
little
later.
B
A
B
Methods
that
can
bring
its
own
embassy
views
and
even
control
of
logics
and
all
dialogues
and,
as
I
said,
we
are
using
dependency
injection
so
or
app
can
actually
import
logic
and
functionality
from
our
main
solution.
So
one
good
example
is
logging.
Logging
is
really
important
and
not
every
app
has
to
bring
it
on
logging
mechanism.
This
would
be
a
complete
overkill,
so
we
can
just
import
this
using
managed
extensibility
framework
right
into
our
apps
and
also
apps
can
show
up
on
the
create
side
form
as
well.
B
They
can
drop
in
the
create
side
form
and
in
the
app
store,
as
well
so,
depending
on
what
you
actually
put
on
your
template
later
on
the
create
side
form
might
look
different
or
even
the
site
settings
dialog
yeah
it
can
the
system
apps.
So
maybe
a
more
technical,
app.
Let's
say
it's
a
very
simple
app
that
just
enables
or
disables
a
feature.
That's
a
publishing
feature
or
something
like
that.
B
Yeah
and,
like
I,
said
an
app
can
be
assigned
to
a
tenant
and
to
a
app
store
and
apps
can
be
used
in
a
template,
of
course,
now
get
into
details
about
this
little
later.
So,
let's
take
a
quick
look
at
an
example.
So
let's
talk
about
our
document
library,
everybody
knows
what
a
document
library
is,
but
you
can
imagine
not.
Every
customer
wants
as
document
libraries
look
the
same.
They
want
to
have
different
columns
and
maybe
different
content
types
and
whatever.
B
So
this
is
where
we
are
using
PNP
provisioning
engine,
but
I'll
get
to
this
in
a
minute.
I
would
just
like
to
show
a
quick
screenshot.
So
when
the
end
user
is
in
the
App
Store
and
would
like
to
add,
a
document
library
has
really
simple
solution
again,
just
like
it
demonstrated
to
it
with
a
calendar
app,
but
in
the
backend
the
app
is
configurable.
B
Now
the
pimpy
file
is
PNP
provisioning
file
right
and
within
this
file,
we
can
define
how
the
document
library
looks
like
this
is
a
fairly
simple,
PNP,
provisioning
config
in
this
case
all
I'm.
Adding
is
a
two
additional
side
columns
and
adding
those
to
the
list
later
on
and
using
those
in
the
views
as
well.
But
you
could
basically
add
different
content
types
to
your
site
or
as
a
side
column
or
maybe
just
a
column,
to
the
list
itself
and
what
we
do
in
our
in
the
code
and
the
backend.
B
Then
we
are
using
the
provisioning
handlers
to
say:
hey,
okay,
when
you
install
a
new
document
library,
just
provision,
lists
fields
and
content
types.
So
we
are
not
using
PNP
provisioning
to
provision
the
full
site,
but
to
provision
just
a
library
and
provision.
Multiple
instances
of
this
library
as
well
can.
A
B
B
Also,
the
template
defines
permissions
and
groups
and
initial
navigation
structure
and
and
Trust
general
settings
like
the
language
for
the
site,
and
we
can
then
copy
those
templates
and
export
them
and
import
them
at
different
tenant,
for
example,
and
all
that,
and
we
then,
in
the
end,
assign
one
or
multiple
templates
to
a
portal
and
the
user
is
ready
to
go
and
create
new
sites.
Based
on
this
template.
B
So
I'm
in
our
backend
of
the
app
now
this
is
not
what
the
end
user
sees,
but
maybe
a
power
user
or
some
sort
of
tag.
Man
at
the
customer
before
I
go
into
the
template.
I
just
like
to
show
the
global
settings
for
our
apps
real
quick.
So,
like
I
said,
apps
are
configurable,
so
in
this
case
I,
let's
take
a
very
simple
example
or
Yammer
app
I
can
configure
on
tenant
level
already.
Okay,
whenever
the
user
is
a
gemwraps
or
Emma
fee
to
the
side,
take
this
network
and
maybe
a
default
group
ID.
B
The
user
can
always
override
this
and
you
can
always
override
all
this
in
the
template
as
well.
But
it
just
saves
time
for
the
user.
Maybe
another
very
simple
approaches.
We
can
define
a
theme.
So
it's
it's
for
branding.
You
can
add
CSS
file
and
color
files
on
file
whatever
you
need,
and
you
can
configure
this
all
globally
for
your
tenant.
B
Now,
let's
go
into
the
actual
templating
solution.
I've
got
a
lot
of
templates
here,
because
it's
my
demo
environment
but
I've
prepared
a
little
demo
template
it's
down
at
the
bottom
here.
The
pnp
demo
template
I
will
just
copy
this
one.
So
I
don't
actually
destroy
the
original
one
in
case.
Something
goes
wrong
and
I
can
now
start
editing
the
template,
it's
basically
a
simple
wizard,
so
at
the
beginning,
I
can
say:
hey
a
template
for
a
portal
or
start
side
or
whatever,
or
is
it
a
simple
workspace
template
so
templates
have
different
types.
B
This
is
on
your
template
name,
which
is
an
internal
name
now
get
to
the
display
name
and
everything
later
on,
and
then
the
next
step
we
can
define
all
sorts
of
settings,
I'm,
probably
not
going
to
go
into
every
single
detail
of
those
settings
adjuster
to
give
you
a
brief
overview
and
you
can
define
what
the
default
homepage
layout
looks
like
how
many
columns
it
has,
whether
it's
the
site
will
get
created
under
the
manage
pass
sites
or
teams.
What
type
of
site
is
it
is.
B
B
Then
you
can
define
the
security
settings,
so
you
can
decide
whether
the
user
creates
the
site
will
actually
stay
a
site
collection
administrator.
If
you
want
to
remove
him
from
the
site,
collection,
administrator
and
that
way
limit
him
in
his
permissions,
you
can
define
some
some
default
groups,
site
collection,
up,
men's
or
owner
member
visitor
stuff
like
that,
and
also
enable
external
sharing
or
give
the
option
to
the
end
user
to
enable
external
sharing
and
then
whether
it's
allowed
to
enable
external
sharing,
anonymous
guest
links
and
all
that
stuff.
B
We
have
settings
for
access
requests
and
where
the
members
are
allowed
to
share
the
site
and
all
that,
of
course,
there
also
regional
settings.
I
don't
have
to
go
into
this
one,
but
that's
just
the
regional
settings
for
the
site,
and
now
here
comes
the
key
point
that
we
have
been
talking
about
earlier.
B
I
can
say:
ok,
my
site
has
a
default
language
which
is
English
and
I
can
just
add
a
dish
languages,
so
in
this
case
I've
added
German
but
I
putting
the
could
edge
finish
for
Reza
as
well
since
I,
don't
speak,
Finnish,
apparently
I'm
going
to
take
this
one
over
here
again
and
later
on.
You
can
define
some
some
lifecycle
settings.
For
example,
you
could
apply
a
policy
in
this
case.
I
have
a
read-only
policy
when
the
site
is
closed.
B
Stuff,
like
that
import
search,
configuration
XML,
maybe
for
the
site,
if
it's
needed
for
some
solutions,
you
want
to
do
that
and
just
some
some
mixed
settings
where
you
can
say
hey
now:
I,
don't
want
to
have
to
be
a
SharePoint
designer
to
be
used
or
I.
Don't
want
our
end
users
to
create
workflows,
maybe
disable
the
onedrive
saying
stuff
like
that,
and
once
we
have
defined
all
those
settings
in
the
next
step.
We
are
talking
about
the
the
security.
B
In
this
case,
we're
using
SharePoint
groups
might
look
a
little
complicated,
but
basically
I
can
define
as
many
groups
as
I
want
to
and
assign
a
base
provision
to
them.
Now.
The
thing
I'd
like
to
point
out
here
is
our
owner
group
actually
only
gets
contribute
permissions.
So
this
way
the
user
can't
actually
do
anything
with
a
SharePoint
site
itself,
but
can
only
use
it
using
our
site
settings
and
app
store.
So
we
can
really
limit
the
user,
so
it
doesn't
do
anything
harmful
and
destroys
the
site
because
he's
just
don't
have
the
knowledge.
B
This
really
reduces
IT
support
later
on
right
and
you
can
define
groups
for
external
users
only,
for
example,
so
you
can
really
identify
later
on
in
your
side.
Ok,
I!
Don't
want
the
external
users
duty
to
see
this
library
and,
as
I
demonstrated
it
earlier
in
the
app
store.
I
can
just
say:
hey:
okay,
no
access
for
external
users,
so
it's
fairly
simple
and
based
on
those
groups.
B
You
can
configure
different
things
later
on
I'll
get
to
this
in
a
minute,
so
here
I'm
on
the
global
settings
screen
again,
you
remember
earlier
what
I
showed
the
example
for
the
disclaimer
app
again.
I
can
always
override
both
settings
on
a
template
level
again
and
in
this
case
just
to
demonstrate
this
I'm
going
to
add
something.
A
B
B
As
I
mentioned
earlier,
there
are
system
apps
and
end-user
apps,
so
a
system
app
is
always
marked
with
the
skier
icon,
so
those
are
apps.
The
end-user
will
never
see
in
the
app
store,
but
an
admin
can
still
add
those.
They
are
probably
more
technical,
apps
like
in
this
case
we
are
adding
our
scripts
to
the
sides
and
stuff
like
that,
and
you
can
add
new
apps
as
well.
So
in
this
case
I'm
going
to
add
the
disclaimer
app
to
the
template,
because
I
just
changed
something
there
and
to
demonstrate
it
later
on.
A
B
B
And
now
maybe
I
have
dependencies
between
those
apps
and,
let's
take
an
example,
maybe
I
say:
okay,
the
disclaimer
needs
to
be
installed
before
the
mi,
because
there
is
a
dependency,
so
I
can
just
simply
take
the
app
and
drag
it
and
move
it
for
the
M
app
and
whatever
order
I
decide.
I
choose
here
is
the
order
the
app
actually
gets
installed
to
the
site
later
on
and
also
to
demonstrate
this
I
can
customize
permissions.
B
Let's
take
the
document
library,
for
example,
and
those
permissions
now,
as
you
can
see,
those
are
the
groups
I
edit
and
then
the
earlier
step,
so
depending
on
what
groups
ID
to
my
site,
I
can
also
configure
the
apps
based
on
those
apps
can
support
some
tokens
like
a
site
title.
We
all
know
if
you
sing
one
notes
to
your
local
client
and
they
all
have
the
same
name.
B
So
it's
a
big
pain,
so
we
can
add,
for
example,
prevent
the
site
title
to
the
app
itself
stuff
like
that,
and
we
can
say
let's,
let's
take
a
webpart
app.
For
example,
we
can
say:
hey
I,
want
this
on
the
right
on
the
left
zone
depending
on
the
layout
I
choose
earlier.
Actually-
and
let's
say,
okay
I
want
this
on
position.
One
things
like
that.
A
Super
super
flexible
way
of
doing
this,
and
this
way
and
you're
defining
the
outcome
of
the
site
already
as
a
high
level
definition,
and
whenever
the
user
actually
creates
design,
it
is
just
ready
there
and
they
don't
need
to
do
modifications
or
it's
really
there.
As
an
initial
configuration.
What's
my
sort
of
sense,
yeah.
B
B
Now
do
this
and
now
I
have
the
choice
to
say:
ok,
I
want
to
provide
a
full
URL,
maybe
to
an
external
system
or
aside
relative
URL,
because
I
have
no
idea
what
the
URL
of
the
site
will
look
like
later
on,
because
that's
up
to
the
user,
when
you
create
to
the
side
or
I,
can
choose
an
app
which
I
added
to
the
template
earlier
stepfather's.
So
in
this
case,
I
could
just
say:
okay,
I
want
to
link
our
related
side
step
and
I.
B
A
A
B
Exactly
yeah
and
I'm
here
backing
out
in
the
last
step,
and
this
is
why
I
can
assign
apps
to
the
app
store
for
the
end
user.
So
maybe
I
want
my
my
users
only
to
create
document
libraries
and
that's
it
and
I
can
just
simply
say:
okay,
I,
don't
want
them
to
create
asset
libraries
or
blocks
in
this
template
now
take
those
out
and
they
won't
show
up
in
the
app
store
for
the
end
user.
So
this
also
avoid
tool
to
control
what
the
end
user
can
actually
do
on
US
side
once
it's
created
one.
A
One
story
on
this
moment
because
we
have
time
to
go
through
all
of
the
capabilities
within
the
higher
build
the
system,
but
correct
me
if
I'm
wrong.
We
talked
about
this
one
within
the
same
code
before
we
did
the
recording
you
because
you're
providing
this
as
a
multi-tenant
that
as
an
ISV,
so
now
that
the
add-ins
and
apps,
what
the
customer
admin
sees
here
are
based
on
the
licenses
and
functionalities
which
they're
actually
buying
for
you.
So,
yes,.
B
A
Have
been
an
additional
admin
view
where
you
can
control
for
this
particular
customer,
these
other
apps,
which
are
available
to
pay,
select
them
and
that's
a
super
super
clever
way
of
having,
let's
say
a
configuration,
and
how
do
you
plan
and
then
capability
of
providing
new
functionalities
available
and
also
slightly
more
simplified
solutions
for
the
customer
so,
depending
on
how
much
customer
is
paying
they
get
additional
things
available.
Super
super
clever.
B
Yes,
I
will
demonstrate
that
actually
in
a
minute,
so
I'm
just
to
finish
the
demo
real,
quick,
here's,
my
template
and
maybe
I
would
like
to
assign
this
to
the
project
portal,
so
I'll
just
copy
the
URL
real,
quick
and
switch.
My
management
focus
to
this
portal
and
I
can
say.
Okay
I
would
like
to
manage
this
portal
and
add
our
new
template
to
the
site.
So
I
can
just
say:
okay,
here's,
my
PNP
recording
demo,
template
save
changes
and,
if
I
go
to
the
portal
again
and
say,
create
fight
so.
B
B
So
let's
come
to
a
few
challenges,
so
the
problem
we
have,
of
course,
if
you
add
a
new
app
and
develop
a
new
functionality,
how
do
we
deploy
all
this
without
interrupting
all
our
customers,
because,
as
mentioned
earlier,
it's
a
multi-tenant
solution,
so
I
can't
just
call
hundred
customers
and
say:
hey
sorry:
the
solution
will
be
down.
We
have
maintenance
time
something
like
that.
It's
just
not
very
flexible.
B
If
he
is
testing
something
in
the
staging
environment,
he
can
just
upload
a
new
get
package
manually
when
installing
the
app
it
actually
gets
copied,
also
to
as
a
storage
for
backup
reasons.
So
in
case
our
web
solution
crashes-
somehow,
let's
say
developer
accidentally,
publishes
his
solution
to
the
air
website
directly.
Something
like
that.
Then
we
always
have
the
latest
apps
still
available
because
they
are
like
I
said
plugins.
B
They
are
not
part
of
all
mine
solution,
so
we
can
restore
our
main
solution
and
then
pull
down
all
the
latest
apps
that
have
been
installed
to
this
solution
and
complete
this
real
quick.
If
we
have
changes
on
our
main
solution,
we
deploy
to
a
different
slot
and
Azure
and
we
do
a
swarm
very
simple
way
of
basically
having
zero
downtime.
Yes,.
B
Okay,
maybe
I
can
demonstrate
this
real,
quick
as
well
so
I'm
going
into
our
admin
portal
now
now.
This
is
something
on
we
as
Monday
coffee,
see
it's
actually
secured
by
our
ad.
What
I
mentioned
earlier,
and
this
is
where
we
manage
our
tenants
and
everything.
So
this
is
not
something
whether
a
customer
can
get
into
also,
as
you
can
see
where
we
have
our
logging
and
stuff
like
that
and
now
I'm
demonstrating
something
would
say,
my
colleague
a
developer
has
developed
a
new
app.
B
So
let
me
switch
to
visual
studio
online,
real
quick,
say:
hey,
okay,
I
know
he
has
developed
this
new
SAP,
so
here
it
is,
and
if
I
go
back
to
our
and
portal,
I
can
actually
connect
directly
from
our
system
to
our
Visual
Studio
online
server
and
I
see
those
nougat
packages
and
I
can
say:
hey.
Okay,
I
would
like
to
add
this
one
to
my
tenant
as
well.
So
I
can
say:
okay,
let
this,
let's
add
this
app
to
the
local
repository
local
repositories,
basically
just
a
folder
in
our
web
solution.
B
So
if
I
add
it
like
just
edit
this
here,
here's
our
nougat
package,
it's
always
using
the
version
as
a
subfolder,
because
you
could
actually
have
different
multiple
versions
of
the
same
app
and
in
there
is
a
new
gate
package
so
directly
download
it
from
our
Visual
Studio
online
server
and
I
can
then
go
and
show
all
my
apps
and
local
repository.
In
this
case
there
is
only
one
I
see:
okay,
it's
not
active
yet,
but
it's
the
latest
version
and
I
can
say:
okay
I
would
like
to
install
this
and
what
is
happening
now.
B
B
Let
me
switch
you
to
our
apps
folder.
Now
all
the
stuff
got
extracted
from
the
nougat
package
and
I
can
see
here's
my
news,
app,
there's
resource
files
and
views
and
the
contents
with
the
Java
scripts
and
images
and
everything.
Now
the
cool
thing
is
all
this
got
installed
on
the
fly
right.
My
app
is
still
running,
I
had
no
interruption
with
the
studio,
didn't
crash
and
everything's
still
working
and
I
can
now
go
and
say.
B
Okay
I
would
like
to
assign
this
ad
to
my
tenant,
with
the
option
to
assign
an
app
to
different
tenants
or
just
to
a
single
tenant
which
I'm
going
to
do
in
this
case,
which
is
a
my
tenant
PR
all
our
apps,
and
there
should
be
a
news
app
here.
It
is
we
can
assign
this
to
the
tenant
and
we're
good
to
go.
I
can
then
use
this
app
in
my
templates
and
whatever
I
want.
B
B
And
I
can
say
how
many
news
I
would
like
to
display
and
what
I
want
to
use
yeah
more
comments
and
where
to
place
the
web
part
for
this
case,
I'm
going
to
place
it
up
at
the
top
of
the
side
on
the
left
side,
don't
want
to
add
it
to
a
navigation,
don't
want
to
customize
the
permissions
and
I
can
at
the
app
now.
This
app
actually
creates
a
content
type
and
several
side
columns
that
get
added
to
this
content
type.
A
A
B
B
Those
are
the
columns
like
Reddit
and
like
saying
hey,
this
news
is
well
it
for
two
days
could
provide
an
author,
and
now
this
is
also
a
custom
button.
That's
using
JSON
once
I
click
on
it,
I'm
actually
jumping
back
into
the
app.
So
this
news
app
basically
provides
its
own
controller
and
it's
all
installed
on
the
fly.
They
can
then
just
drag
and
drop
an
image
here.
B
It's
resizing
the
image
on
the
client
right
away,
because
I
don't
want
to
have
that
much
traffic
going
on.
So
this
was
a
fairly
large
image
and
I'm
resizing
this
on
the
client
before
I,
even
upload
it
and
I
never
hit
save.
Then
the
resized
version
of
the
image
gets
uploaded
and
actually
we
are
creating
two
different
sizes
on
preview
and
one
larger
one
and
I
can
save
this.
B
Here's,
my
news
really
simple,
and
what
I
would
also
like
to
point
out
here
as
well.
This
picture
actually
got
uploaded
to
a
CDN,
so
the
pictures
directly
being
referenced
from
our
CDN,
so
the
end
user
doesn't
have
to
take
care
about.
Where
do
I
put
the
image,
and
especially
when
it
comes
to
performance
reason
CDN?
This
is
really
the
better
way
to
handle
this.
You
could
actually
use
the
SharePoint
Online
CDN
as
well,
but
in
this
case
we're
using
as.
A
B
B
So
maybe
you're
thinking,
okay,
if
I,
if
I
install
those
apps
all
independently.
How
do
you
deal
with
the
code?
Maybe
you'd
like
to
share
between
your
apps,
because,
if
I
install
an
app
that
targeting
a
different
shared
library
or
something
like
that,
I
would
actually
have
to
update
all
apps
at
once,
which
is
not
what
we
would
like
to
do.
So
in
this
case
a
shared
library
doesn't
work
for
us.
B
So
what
we
are
using
is
a
shared
project
and
when
you
use
a
shared
project,
the
code
actually
gets
compiled
right
into
the
DLL
of
the
corresponding
app.
So
this
makes
our
apps
vary
independently
from
each
other,
and
we
don't
have
the
problem
when
we
update
one
app
that
maybe
brings
this
super
cool
shared
method
with
it.
We
have
to
update
all
once
so.
This
is
just
a
a
fairly
simple
example.
What
you
can
do
within
your
abs?
B
B
A
We
talked
about
it
actually
in
built
for
roughly
as
well,
and
it's
been
in
a
road
map
slides
or
road
map
page
for
a
while.
So
there
will
be
announcements
on
that
one,
obviously,
depending
on
when
you're
watching
the
video
it
might
be
out,
might
not
be
out
but
we're
looking
into
having
automatic
ways
of
getting
the
web
parts
available
when
they're
put
it
put
into
that
catalog.
A
So
that's
really
the
key
point
and
that's
going
to
unlock
you
guys
also
to
use
ship
on
framework
for
the
within
the
sites,
and
the
same
applies
also
to
ship
on
framework
extensions,
so
you're
able
that
those
widgets
in
the
modern
experience
is
just
adding
them
to
the
rack
catalog
and
then
associating
the
client
side
component
ID,
for
example,
in
a
user
custom
action.
So
yeah.
B
So
that's
why
we
are
already
building
our
apps,
our
web
parts
using
Japan
framework,
yes,
but
currently,
because
we
still
need
to
use
them
and
classic
script.
Editor
part.
We
have
a
custom
built
tasks
and
custom
web
pack
context,
so
we
can
bundle
the
same
shape
and
framework
app,
so
it
still
works
on
classic
sites
as
well.
A
The
spider
I'm
super
super
cool
thing
as
well,
because
now
you
have
one
truth
or
the
code,
but
then
you
can
compile
it
in
multiple
different
ways.
You
can
compel
that
to
be
used
in
a
classic
script.
There
is
a
web
part
or
content
editor
web
part
and
then
the
specifics
great
great
great
solution,
because
theoretically
desperate
and
enable
similar
kind
of
experiences,
even
in
one
premises,
if
you
would
like
to
do
that,
that's
always
debatable,
but
anyway.
B
So
probably
additional
question:
how
do
we
deal
with
the
modern
UI?
So
there
are
definitely
certain
ways
you
can
deal
with
it
when,
when
you're
still
moving
between
this
classic
and
modern
world,
but
we
have
done,
for
example,
for
a
customer.
We
basically
build
a
classic
design.
That
looks
almost
like
modern,
so
it
plays
really
well
with
modern
pages.
So
you
could
actually
use
a
modern
document
library,
but
still
have
the
features
of
the
classic
side
on
you
on
your
home
page.
B
A
B
B
Script,
embedding
have
using
the
user
custom
action
and
also
custom
CSS
again,
that's
it.
You
know
no,
no
custom
master
page
and
everything.
So
we
are
we've
been
looking
at
the
solution.
It
didn't
quite
fit
our
needs,
but
we
wanted
to
build
it
the
same
way.
So
it
has
the
same
grade
of
support.
Ability
makes.
B
All
right,
so
we
are
coming
to
the
end
of
this
demo,
probably
the
key
takeaways,
and
why
I'm
demonstrating
this
as
always
try
to
build
your
solution
as
flexible
as
possible.
We
all
know
the
cloud
is
changing
really
fast
and
and
at
some
point
Microsoft
pushes
out,
updates
and
and
will
break
your
solution
in
one
way
or
another.
This
doesn't
mean
they
actually
break
something,
but
maybe
they
remove
a
feature
or
maybe
just
the
the
tenant
has
an
issue
there.
It
could
be
a
bar
or
whatever,
and
you
just
have
to
be
ready
for
it.
B
A
Have
to
say
that
that's
one
of
the
reasons
I
like
to
deal
with
Oliveri
and
especially
related
on
the
feedback.
This
weekend,
you
can
always
give
us
great
feedback,
which
is
good
but
also
constructive
ways,
so
the
point
of
being
complaining.
Yes,
there
will
be
issues
well
depending
on
a
customization
how
you
build
stuff
in
a
SharePoint
Online.
If
you
use
user
custom
actions
in
a
passport
or
JavaScript
embedding
when
the
UI
changes
your
stuff
can
actually
get
broken,
we
we
should
all
know
about
that.
That
shouldn't
be
a
kind
of
a
surprise.
A
B
Also,
just
stop
thinking
and
in
this
old
SharePoint
technology
stack.
It's
totally
up
to
you.
What
technology
are
using
like,
like
I,
just
demonstrated
other
apps,
where
we're
using
this
dotnet
plug-in
concept
or
whatever
we're
using
MVC
instead
of
asp.net
just
make
use
of
the
tools
that
are
out
there
and
get
away
from
this
old
thinking.
Let's
put
it
that
way,
and
the
last
point
really
really
important
and
yeah
people
tend
to
not
implement
this
right
away
to
implement
a
very
good
logging
solutions,
especially
when
you're
running
in
a
multi-tenant
environment.
B
A
Out
of
curiosity,
how
many
care,
if
I,
may
ask
how
many
customers
you
you're,
currently
kind
of
a
host
thing
in
this
platform?
It
is
a
super
cool
platform
and
but
to
understand
kind
of
the
scale
as
well
so
and
how
our
customers
kind
of
adapt.
Are
they
they're
kind
of
a
super
excited
of
seeing
these
opportunities
and
options?
A
B
Definitely
so
I
can't
say
the
exact
number,
but
it's
over
100
customers
right
now
running
on
this
platform,
and
that's
why
we
are
also
using
using
all
those
Aero
technologies
and
back-end
to
be
able
to
scale
whenever
needed.
That's
also,
one
reason
why
we
chose
as
a
document
TV,
because
it's
really
easy
to
scale
there
and
stuff
like
that,
and
customers
are
really
really
happy
with
the
solution,
not
because
of
the
technical
details
or
anything
like
that,
but
mainly
we
can
get
started
with
a
project
right
away.
B
B
So
this
is
a
really
really
good
way
for
us
to
get
started
really
really
fast
and
that's
when
our
consulting
and
training
and
everything
kicks
in,
because
when
this
is
the
saying,
a
fool
with
a
new
tool
is
still
a
fool
right,
so
you
can
implement
the
best
solution
ever.
But
in
the
end,
it's
still
you
you
have
to
make
sure
the
users
are
using
the
tool
right.
B
A
Obviously,
not
just
only
to
be
honest,
not
just
only
within
your
solution,
but
also
in
SharePoint
Online,
because
quite
often
people
don't
understand
the
change
management
in
the
SharePoint
Online
as
well,
because
it's
not
just
well
technically
advanced
users
will
learn
at
some
point.
If
it
just
shows
them
things,
you
haven't
online,
but
it
would
be
a
worthwhile
to
think
through
the
same
change
management
process
who
to
be
trained.
How
do
we
train?
How
do
we
communicate
internally
and
Alstead
as
well?
A
So
it's
a
big
part
of
the
actual
landing
the
SharePoint
Online
successfully
within
the
customers
as
well,
so
not
just
buying
licenses
and
say
have
fun
so
yes,
cool,
Thank,
You
Oliver
on
this
one,
a
relatively
long
session,
and
no
doubt
we
do
understand
that.
But
there's
a
lot
of
lot
of
interesting
technical
details
and
technical
waste
and
patterns.
How
you
guys
been
solving
West,
a
classic
challenges
and
the
solution
itself
is
absolutely.
A
How
would
I
put
it's
beautiful,
I
personally,
I,
really
like
the
way
you
can
adjust,
how
it's
being
split
to
multiple
sections
and
multiple
configurations
and
then
in
the
end,
from
inches
of
perspective.
It's
super
simple
and
that's
really
nice
way
of
extending
SharePoint.
Obviously
this
is
a
relatively
hard
core.
Is
a
solution?
Well
not
super
hard
core,
but
hardcore
still
and
you
can
do
smaller,
customizations
in
SharePoint
as
well,
but
it's
a
great
example
of
a
is
way
solution
really
really
nice
implementation
thanks.
B
A
I'm
cool,
maybe
one
more
question,
because
the
guys
are
using
the
BMP
provisioning
engine
and
kind
of
a
mention
that
at
some
point
that
it's
widely
used.
So
what's
your
kind
of
a
feedback
can
take,
and
let's
say,
from
a
maturity
perspective
from
a
capability
perspective
and
all
of
that
in
the
provisioning
engine.
Have
you
guys
running
the
random
issues
and
all
of
a
sudden
something
is
breaking
up
or
what's
the
kind
of
a
your
take
on
on
the
engine?
Well,.
B
The
engine
works
pretty
well
pretty
good.
If
you
use
it
the
way,
it
sits
many
to
think
that
yes,
yeah,
but
as
soon
as
you
need
a
little
more
or
something
a
little
different,
it
can
get
very
complex.
I
mean
you
can
add
you
your
custom
logic
to
it
as
well,
but
there
will
always
be
some
parts
that
are
not
fully
supported
yet
and
the
the
second
part
is
you
put
your
hands
into
some
other
dependencies.
B
Also,
we
are
dependent
on
what
you
guys
are
doing
in
the
future
and
that's
something
we
didn't
really
want
to
do,
but
still
the
the
provisioning
engine
is
really
cool
and
flexible.
That's
why
we
are
using
it
in
some
parts
until
some
degree,
but
I'm
not
for
the
whole
solution.
Yep
also,
there
are
some
well,
let's
say
missing
coins
or
things
that
are
not
fully
worked
out
yet
and
that's
when
it
comes
to
the
multi-language
story.
B
You
have
to
understand
the
XML
structure
and
all
that,
and
you
have
to
know
what
you
can
do
and
what
what
issues
can
happen
if
you
do
something
wrong
and
stuff
like
that.
This
is
why
we
chose
to
use
it
only
in
certain
parts,
but
we
wanted
to
provide
a
better
editing
experience
for
the
guys
who
created
the
templates
yep.
A
Absolutely
makes
sense
and
they
say
it's
well.
It
always
depends
on
a
business
requirements.
How
do
how
do
you
use
the
existing
tooling
and
how
to
use
the
capability
is
not
absolutely
good
feedback,
but,
from
your
perspective,
it's
kind
of
a
repeating
what
we
were
saying.
The
reason
why
you're
not
using
the
engine
more
is
that
there
are
certain
gaps,
so
it
should
be
even
more,
let's
say,
enhanced
or
bigger
from
a
capability
perspective.
Yes,.
B
B
Plus
the
the
dependency
part,
we
don't
want
to
be
dependent
on
new
releases
from
you
guys
if,
if
you
are
slow-
and
we
want
to
be
fast
so
I'm
stupid,
but
and
we
not
need
our
own
solution,
somehow
absolutely
absolutely
for
the
parts
that
are
already
well
done
a
long
time
ago
that
are
valid
and
that
just
work
like
we're
using
the
the
provisioning
for
the
document.
Libraries
and
other
lists.
B
A
Thank
you,
Thank
You
Oliver
on
that
one,
but
anyway,
I
think
it's
time
to
wrap
up.
So
thank
you
all
over
for
a
great
demos,
great
presentation
and
great
way
of
showing
how
discrepant
online
can
be
flexible
as
well
and
on
the
opportunities
for
ISVs
I.
Think,
there's
a
lot
of
partners
and
all
around
the
world
who
are
now
being
kind
of
thinking
through
their
model.
A
What
does
it
mean
that
we
used
to
do
farm
solution
lean
on
premises
now
we're
heading
to
SharePoint,
Online
and
hug
should
I
do
this
in
the
future,
and
this
was
a
great
presentation
on
showing
how
you
guys
of
that
transition.
So
thank
you
for
now,
but
thank
you
and
if
there's
any
questions
around
this
presentation,
we'll
add
links
to
the
Microsoft
tech,
community
and
everything
else
and
we'll
loop
in
people
to
the
discussion.
But
thank
you
for
watching.
Thank
you,
Oliver
for
presentation
and
let's
stay
in
touch
Thanks.