►
Description
PnP Webcast around how to provisioning moderns SharePoint Online sites using classic asynchronous pattern and customizing the outcome using PnP Provisioning Template.
Webcast demonstrates two different options for the options, using Azure Functions or using Azure WebJobs with an asynchronous pattern with Azure Storage Queue.
Detailed webcast description from http://dev.office.com/blogs.
A
Welcome
to
the
shipment
patterns
and
practices,
webcast
and
system
or
I
kind
of
talked
about
that
a
synchronous
pattern
for
creating
modern
sites,
and
let's
slightly
talk
about
what
does
that
actually
mean
so
in
the
PMP?
In
the
BMP
guidance
we've
been
in
the
past,
explaining
what
is
the
essentialist
way
of
creating
a
site
collections
and
a
lot
of
our
samples
are
actually
showing
how
to
make
that
happen,
but
one
of
the
samples
are
showing
how
to
make
happen
with
the
classic
theme
side
or
a
classic
pocket
inside.
A
A
B
A
B
Thank
you.
So,
let's
start
setting
up
the
scenario
for
today's
webcast
and
the
scenario
is
the
one
where
you
want
to
create.
Two
programmatically
create
a
modern
site
using
dotnet
framework
in
our
context
and
being
able
to
leverage
the
capability
that
we
offer
to
the
PNP
core
library
to
help
you
easily
create
modern
site
programmatically.
B
Moreover,
because
often
when
you
create
a
new
site
and
also
when
you
create
a
modern
site,
you
need
to
apply
a
custom
TMP
provisioning
template
on
top
of
that
side.
We
will
see
it
through
this
demo
how
you
can
use
the
TMP
provisioning
engine
in
order
to
reach
the
inside
that
you
just
created
using
the
programmatically
approach.
A
Before
we
go
forward
on
this
one,
so
just
to
reiterate
a
few
things
in
here,
so
first
bullet
point
is
super
super
important,
which
we
actually
haven't
demonstrated
that
often
in
the
PNP
assembles
in
the
past.
So
what
we're
doing
here
you're
using
delegated
token
it
might
be
unclear
for
some
of
the
people
watching
the
webcast.
But
what
it
means
is
that
we're
using
the
identity
of
the
person,
even
though
our
process
is
the
synchronous,
so
you're
saying
shall
be
used,
the
delegator
token.
A
A
And
the
other
thing,
but
I
wanted
to
reiterate
what
to
say
down
the
last.
Quite
often,
people
may
have
a
requirement
of
applying
PMP
a
template,
but
if
you're
not
familiar,
what
does
a
PMP
template?
What
it
means
is
that
you
don't
want
to
have
test
out-of-the-box
team
side.
You
don't
want
to
have
out
of
the
most
communication
sites.
A
You
want
to
have
a
custom
printing
and
that's
where
you
use
remote
provisioning
techniques,
essentially
use
code
to
apply
a
custom
theme
or
a
colors
or
logo,
or
a
whatever
on
the
sign
and
and
the
BMP
provisioning
engine
is
no
doubt
the
easiest
way
to
make
that
happen.
So
sorry
for
jumping
in
to
pre-drilling.
B
B
First
of
all,
we
have
a
web
application,
which
is
an
asp.net
MVC
application
which
can
be
hosted
wherever
you
want
on
an
inter
website
or
whatever
else,
and
this
application
is
configured
in
the
Asia
active
directory
of
your
target
of
hysteresis
five
tenant
so
that
they
are,
you
will
have
proper
permissions
to
create
modern
size
and
to
access
all
of
the
tenant
resources
needed
to
create
a
modern
site.
We
will
do
it
programmatically
in
the
c-sharp
code
of
the
asp.net
application.
B
B
Likewise,
on
the
other
side,
if
you
want,
you
can
use
a
web
job,
so
you
can
use
still
use
a
blob
storage
queue
to
store
a
message
which
will
be
still
the
cute
by
a
web
job.
This
time,
instead
of
an
if
your
function
and
later
on
the
web
job
will
create
still
create
a
motor
side
and
apply
a
provisioning
template.
B
Well,
basically,
both
the
issue
function
and
the
web
job
can
be
useful
whenever
you
have
to
create
a
background
working
process.
One
of
the
main
differences
between
the
two
of
them
is
that
usually
an
issue
function
is
meant
to
be
used
for
short
running
processes
when
I
say
short
running
processes,
I
mean
no
more
than
five
or
correct
me
if
I'm
wrong
base
at
ten
minutes,
which
is
a
configurable
option
for
you.
B
A
On
that
one,
let's
reiterate
again
so
we're
recording
this
in
the
last
days
of
2017
and
currently
the
situation
is
that
the
inertia
function
to
default.
Timeout
is
5
minutes,
and
then
you
can
increase
that
to
10
minutes,
and
obviously
this
could
be
changed
in
the
future.
But
what
the
time
and
actually
means
is
that
the
process
running
the
code
will
be
shut
down
by
default
after
5
minutes,
and
that
means,
if
the
process
is
in
the
middle
of
doing
something
boom,
it
will
just
go
essentially
go
away
and
that's
then
can
cause
challenges.
A
So
the
web
shop
can
be
actually
adjusted
to
be
executing
in
a
more
reliable
way.
Now
on
the
time
island
discussion,
which
we
actually
could
actually
record.
Another
webcast
completely,
there's
also
the
timer
than
Asha
sorry
on
the
SharePoint
Online
site,
which
you
cannot
adjust
so
and
there's
two
timeouts
in
in
place.
There's
two:
how
long
the
process
in
Russia
is
running
and
that
could
be
an
inertia
function
case
up
to
five
minutes
by
default
can
be
increased
to
ten
in
the
SharePoint
Online
site.
There's
also
the
request
timeout.
A
So
how
long
the
operation
can
take
maximum
in
a
SharePoint
Online
side,
but
that's
per
operation,
not
per
execution
of
a
process.
So
it's
slightly
different
again
scenario,
maybe
as
topic,
which
we
shouldn't
deep
dive
on
this
webcast
yeah,
but
basically
as
a
rule
of
thumb.
If
you
have
a
long-running
operation
more
than
five
minutes
maximum
ten
minutes,
I
use
a
webshop,
absolutely
suitable,
absolutely
more
better.
Absolutely
a
future-proof
probe
process
as
well.
A
I
should
function
more
for
operational
fast,
let's
say
one
minute
max
or
whatever
five
minutes
or
ten
minutes
max,
obviously
from
a
timing
perspective
and
maybe
just
to
mention
this
sample,
which
is
available.
This
obviously
isn't
meant
to
be
used
such
in
production.
This
is
meant
to
demonstrate
these
two
options
and
then
you
can
take
the
sample.
You
can
modify
that
you
can
hide
the
option
which
you
don't
want
to
expose
for
your
or
you
don't
want
this,
the
prof,
that's
a.
How
would
I
put
it
the
sample
shows
and
tasks
from
the
ain't
user.
A
A
B
How
it
is
defined
and
we
can
enjoy
it,
so
let
me
switch
to
my
visual
studio
environment,
and
here
we
have
the
solution
which
is
available
in
the
TMP
repo,
sir,
in
the
samples
folder.
Now
this
solution
is
based
on
four
different
projects.
The
first
and
main
one
is
the
route
1
provision
in
that
cloud
of
modern
icing,
which
is
the
name
of
the
solution
in
the
PMP
v4,
and
this
is
the
web
application,
the
MVC
asp.net
web
application.
B
Moreover,
there
is
an
infrastructure
project
which
is
used
just
to
have
some
shared
types
which
are
shared
across
the
issue:
function,
project
and
across
the
web,
the
job
project.
So
let's
start
having
a
look
at
the
solution,
so
let
me
run
it
and
then
I
will
explain
you
how
it
works
under
the
cover.
So
let
me
press,
f5
and
I
will
show
you
how
it
behaves
in
the
browser.
B
So
let
me
move
my
browser
here
on
the
right
screen
and
soon
we
will
have
the
login
screen
of
Asia
active
directory
in
order
to
access
our
issue
ready
and
our
office.
This
is
five
target
tenant,
and
here
we
are
I
will
provide
my
credentials
and
right
after
that,
I
will
be
in
the
home
page
of
my
web
application.
As
you
can
see
here,
you
have
a
few
input
controls
that
you
can
use
to
configure
the
modern
site
that
you
want
to
create
and,
for
example,
you
can
create
a
team
site
or
a
communication
side.
B
B
Ok,
this
is
the
end
inside
description
as
well.
Let's
use
the
issue
function,
for
example,
but
as
we
told
you
here,
you
can
select
to
use
the
web
job
as
well.
It's
up
to
you
and
just
for
the
sake
of
making
an
example.
We
have
two
predefined
templates,
PMP
provision
template
which
you
can
use,
which
you
can
apply
onto
the
target
site.
B
Let's
select
the
first
one,
for
example,
by
clicking
on
the
create
button,
there
will
be
a
message
stored
in
the
blob
storage
queue
on
ensure
and
there
will
be
an
issue
function
activated
by
the
existence
of
a
message
in
the
queue.
So
by
clicking
on
the
create
button,
we
will
just
think
you
a
message.
B
It's
a
matter
of
a
few
seconds
usually
or
I,
can
go
back
here
and
have
a
look
to
the
real-time
logger
and
in
a
matter
of
two
second,
we
will
see
the
issue
function,
starting
here
it
is
now,
as
you
can
see,
there
is
a
a
progress
set
of
log
information
in
the
log
of
the
running
issue
function
and
now
we
have
completed
the
creation
of
side
column
in
the
target
side.
We
are
applying
some
tenant
settings
and
some
other
stuff,
and
now
the
function
is
fully
completed.
B
So
if
we
go
back
to
our
application
and
we
open
the
browser
targeting
the
tenant
in
which
we
created
the
solution,
this
will
be
the
modern
side,
the
moral
commercial
communication
side
that
we
just
created.
My
browser
is
going
to
login
against,
as
you
ready
one
more
time
to
access
the
SharePoint
Online
environment.
And
now
we
have
the
modern
communication
side
in
which,
if
I
go
to
the
site,
content
I
can
even
see
that
I
have
a
custom
list
which
has
been
have
been
provisioned
by
the
TMP
provisioning
engine.
B
So
that's
the
overall
idea
of
the
application.
So
let
me
switch
back
to
the
source
code
and
let
me
explain
you
how
it
works,
so
I
will
stop
the
debugger
and
let
me
open
the
home
controller,
which
is
the
only
one
we
have
and
in
the
home
controller
we
have
a
create
action
which
will
be
the
one
which
will
get
the
HTTP
POST
request
from
the
home
page.
And
here
once
the
model
state
is
valid.
B
We
can
just
retrieve
some
information
like,
for
example,
the
access
token
of
the
current
user,
and
we
will
store
the
access
token
of
the
current
user
in
the
model
object
that
we
have
and
which
will
be
the
object
that
we
will
serialize
in
the
blob
storage
cube.
So
we
get
the
target
URL
of
the
target,
sharepoint
online
environment,
the
access
token
of
the
current
user,
so
that
we
will
act
on
behalf
of
the
current
user.
B
We
define
if
we
want
to
use
an
issue
function
on
a
major
web
job,
because,
based
on
the
selection,
we
will
have
a
target
queue.
We
will
have
one
queue
for
the
web
job
and
another
one,
a
different
one
for
the
function
and,
moreover,
in
the
model
object.
If
I
press
s12,
you
can
see,
we
have
sorry.
We
have
a
bunch
of
information
like
the
site
type,
which
right
now
can
be
a
team
site
or
a
communication
site.
B
B
Client
of
the
model
to
create
or
to
connect
to
our
storage
account
to
create
a
queue
if
it
does
not
exist,
and
thank
you
the
message
into
the
queue
so
that,
on
the
other
side,
whether
the
issue
function
or
the
web
job
will
be
ready
to
be
queue,
the
message
and
on
the
other
side,
let's
take,
for
example,
the
user
function
that
we
saw.
We
have
a
function.
So
it's
a
major
function
project
created
in
measures
2017.
B
The
pattern
which
is
running
the
application
if
we
are
in
the
bag
or
we
simply
use
the
environment
variable
if
we
are
running
the
function
on
Asia
and
then
we
use
an
helper
type,
which
is
the
modern
site
helper
to
create
a
modern
site
using
the
input
message
which
will
be
the
one
stored
in
the
queue
as
well
as
the
path
from
which
the
provisioning
template
can
be
retrieved.
In
fact,
in
the
inner
function
we
have
a
couple
of
sample
TMP
provisioning
templates.
B
This
one
is
the
template,
0
1,
which
is
the
one
we
used
before
and,
as
you
can
see
here,
we
create
a
new
list
instance,
which
is
the
custom
list,
0
1,
with
all
of
its
features
as
like,
as
we
saw
in
the
real
site
created
by
this
solution.
Now,
the
key
point
is
what
the
create
modern
site
function
does
under
the
cover.
So
let
me
dig
into
it.
This
one
simply
gets
as
an
input,
a
JSON
string,
which
will
be
the
serialization
format
of
the
blob
storage
cube.
B
So
we
get
the
JSON
civilization
of
the
model
which
will
define
what
are
the
features?
What
are
the
properties
of
the
modern
site
that
we
want
to
create?
Then
we
have
the
path
in
which
we
will
find
the
via
template
and
some
other
useful
information
to
do
some
logging.
We
deserialize
using
the
Newton's
of
json
library,
the
json
of
the
message
in
order
to
get
back
a
domain
model
object
which
will
define
the
side
that
we
are
going
to
create.
B
We
use
the
authentication
manager
class
of
PMP
to
access
the
sharepoint
online
environment,
using
the
access
token
that
we
have
in
the
domain
model
object.
So,
as
you
remember,
when
we
created
the
site,
we
store
the
in
the
message
which
have
been
include
in
the
blob
storage
view:
the
access
token
of
the
current
user.
On
the
other
side,
we
simply
get
back
the
access
token
and
we
access
the
target
sharepoint
online
environment.
B
With
that
access
token,
this
will
give
us
back
a
client
context
of
sharepoint
online,
which
we
can
use
to
interact
to
use
the
client
side
of
the
model
SharePoint
targeting
the
sharepoint
online
environment.
So
once
we
have
the
client
context
of
sharepoint
online
of
the
client
side
of
the
model
or
sharepoint
online,
we
can
simply
define
if
we
need
to
create
a
communication
site
or
a
teen
side
and
using
some
extension
methods
that
we
provide
in
VMP
core.
B
So,
for
example,
when
we
create
the
communication
side,
we
can
define
the
local
IDE
and
some
other
stuff,
while
when
we
create
it
inside,
we
have
the
alias,
for
example,
and
we
can
make
it
public
or
private,
but
regardless
the
details
about
the
input
parameters
at
the
very
end
you
will
create,
you
will
have
the
modern
site
created
for
you
once
you
have
the
modern
site
created
still
using
the
same
access
token
as
before,
keep
in
mind
that
an
access
token
expires.
So
if
I'm
not
mistaken,
it
has
a
timeout
of
thirty
mean.
B
If
so,
you
will
have
to
complete
the
full
process
in
30
minutes.
Otherwise,
you
will
have
to
slightly
review
the
architecture
of
the
solution
and
you
will
have
to
provide
not
only
the
access
token,
but
also
the
refresh
token,
to
refresh
to
be
able
to
refresh
the
access
token
when
it
will
expire.
But
as
long
as
you
stay
shorter
than
thirty
minutes,
you
can
just
use
the
one
actually
something
that
you
have
to
do.
The
full
process
also.
A
B
So
it
is
not
a
ready-to-go
solution,
so
here
we
decided
to
reuse
the
same
access
token
and
the
same
approach
with
the
authorization
manager
to
have
a
new
context
which
will
be
the
client
contact
of
the
just
created
site
so
that
once
we
have
the
new
client
context,
we
can
apply
a
provisioning
template
onto
the
target
web
site
that
we
just
created
and
that's
all
the
same
story
applies
for
the
web
job.
So
it's
really
easy
to
figure
out
how
it
works,
because
it
does
exactly
the
same
story
but
on
the
web
job
side.
B
So
we
still
have
a
method
which
will
be
cue,
triggered
based
on
another
cue,
and
once
we
have
a
new
message
in
the
queue
we
still
use
the
create
modern
site,
helper
method
of
the
helper
class,
and
we
do
the
same
as
before.
So
really
easy
and
simple.
Let
me
say
architecture
once
you
understand
the
key
elements
of
the
architecture.
B
Now
few
more
words
about
the
solution.
Before
going
back
to
the
slide
back,
let
me
open
one
more
time
my
browser
and
let
me
switch
to
another
account
to
show
you
on
the
either
side
the
registration
of
the
application
that
we
have
here.
I'm
in
the
target
payment
in
which
I
created
the
application
I
will
go
to
a
drug
directory
and
to
the
app
registration
section
here.
I
will
use
the
client
ID
of
my
web
application,
which
is
this
one
oops.
B
Search
for
my
target
application-
and
here
it
is
this-
is
the
application
we
are
using
from
the
asp.net
perspective,
as
well
as
from
the
background
jobs
perspective
or
function
perspective.
If
we
go
to
the
required
permissions
section
of
this
application,
you
can
see
that
here
we
have
the
permission
from
a
micrograph
perspective,
which
is
the
delegated
permission
to
read
and
write
directory
data.
Moreover,
from
a
SharePoint
Online
perspective,
we
have
to
delegate
permissions.
One
is
weed
management,
Anita
and
one
is
F
full
control
of
all
site
collections.
B
Using
these
permissions,
as
well
as
having
the
permission
to
sign
in
the
currently
connected
user,
we
can
run
the
full
application,
so
you
will
find
all
of
these
information
well
documented
in
the
TMP
repo.
But
in
order
to
have
this
solution
to
run
properly,
you
will
need
to
configure
those
permissions
for
your
application
in
your
target.
Tenant.
Ok,
so
I,
don't
know
if
you
have
any
other
feedback
or
addendum
visa,
or
if
we
can
just
come
back
to
this
light,
that.
A
You
went
the
truth
really
really
well
so
I
think
we
can
go
back
on
the
slides
and
the
webcast
I
think
it's
clear.
What's
the
difference
between
the
Asha
functions
and
the
web
shops
and
and
like
I
said
that
the
underlying
technology
and
usher
sign
is
slightly
different,
so
there's
your
functions
for
the
shorter
operations
as
a
web
charge
for
long-running
operations,
which
can
adjust
a
slightly
more
detail
to
their
timeouts
on
that
one,
but
other
than
that.
I
think
that
the
sample
is
great.
A
Considering
with
that,
we
do
have
a
lot
of
these
provisioning
solutions,
samples
in
BMP-
and
we
do
know
that
there's
a
lot
of
customers
who
have
implemented
this
kind
of
a
self-service
site,
collection
creation
story
and
and
provisioning
and
logic
in
their
tenants.
Now
one
thing
which
we
probably
want
to
talk
about
slightly
know
that
we're
on
this
last
slide
of
the
of
the
presentation
as
well
and
it's
the
round
the
hey.
A
Should
you
use
the
self-service
site,
collection
creation
story
or
the
other
two
box
provisioning
story,
because
in
the
other
box
provisioning
you
can
have
a
site
design
supplied?
And
you
can
you
have
the
nice
UI
for
selecting
the
site
the
morning
team
size?
That's
the
communication
sign
any
feelings
from
your
site
power
on
this
one
and
I
can't
reiterate
on
ten
on
that
and
yeah.
B
However,
there
are
scenarios
in
which,
for
example,
you
want
to
have
an
approval
process
when
you
create
or
when
you
have
to
create
a
new
site,
or
maybe
you
want
to
do
more
than
applying
a
site,
design
and
eventually
P&P
provision
templates.
So
in
such
scenarios
having
a
custom
developed
solutions
on
top
of
the
tenant
still
works
in
my
mind,
but
for
real,
simple
solutions
which
and
users
simply
need
to
create
self-service,
create
more
and
sighs,
I
think
the
site
design
approach
is
the
best
one.
My
understanding
at
least
yep.
A
So
and
and
absolutely
agree
on
that,
so
so
the
out
of
the
box
story.
Absolutely
if
you
can
take
advantage
of
that
one
please
do
because
that's
the
most
cost
efficient
model
out
there.
Now
there's
a
lot
of
customers
who
have
invested
on
the
on
the
existing
platforms
before
we
provided
that
new
nice.you
is
in
the
in
SharePoint
home
for
creating
the
sites
and
I'm
the
site
designs
and
they
might
have
invested
on
this
custom
solutions.
The
key
story
of
this
sample
is
to
show
how
you
can
modernize
those
solutions.
A
They're
also
provision
modern
theme
sites,
a
modern
communication
sites,
and
it
still
used
to
be
a
provisioning
behind
of
that
now
for
the
upper
and
the
reasons
might
be
to
approve
our
process
like
mentioned,
and
yes,
we're
looking
into
having
approval
process
in
the
native
side,
design
process
as
well
or
it
might
be,
and
that
it's
much
more
complex
story.
It
might
be
something
which
is
depending
on
on-premises
data
hybrid
data.
A
There
might
be
long-running
much
more
long-running
operations
and
you
don't
want
to
have
the
end
user
arriving
to
the
side
until
the
whole
proper
Asian
is
complaining,
but
again
and
debatable.
Absolutely
but
I
think
that's
it
for
this
one.
So
thank
you
borrow
for
a
crate
demo
and
a
crate
solution
will
have
the
sample
sample
reference
in
the
webcast
notes
and
all
of
the
other
material
available.
But
thank
you
for
Paula
for
this
one
and
we'll
come
up
with
a
make.