Tuesday, June 26, 2018

Speaking at Developer Week Community Night 2018

I'm looking forward to giving my first talk at the Developer Week Community Night as part of our Office 365 & SharePoint User Group Nuremberg. The talk will be about provisioning SharePoint sites using site design and site script and will be held at Nuremberg’s exhibition center on 26th June 2018.

At the end of this session you will be able to:
  • Distinguish between different provision engines
  • Understand Site Script’s anatomy
  • Create Site Scripts
  • Create and use Site Designs

Event information in German:

Sunday, June 3, 2018

Attending the SharePoint Saturday Madrid 2018

I'm looking forward to attending the SharePoint Saturday in Madrid on 9th June 2018.

2017 me uní a la comunidad Microsoft de Madrid en el segundo SharePoint y Office 365 Saturday. Este año voy a hacer lo mismo :) Tanto el contenido de las sesiones como la atmosfera del evento hacen la SPS Madrid una experiencia encantadora. Hay muchas sesiones en español y el evento es realizado en la ubicación de Microsoft Ibérica.

El año pasado aprendí mucho sobre el desarrollo de soluciones de SharePoint Framework. Este año atenderé a sesiones sobre Graph, Flow, Teams y SharePoint Framework.

¡Quieres aprender de primera mano, entonces únete a nosotros!

Let us get in touch if you're also going to participate in the event!!!

Event information:

Monday, May 21, 2018

Speaking at Office 365 & SharePoint User Group Nuremberg - Governance and Apps in Microsoft Teams - Recap

I spoke at the Office 365 & SharePoint User Group Nuremberg about applying governance and creating apps in Microsoft Teams on 16th May 2018.

The event was held at Forum:Idea:Solution in Nuremberg.

I added below a couple of links which could be useful while developing apps for Microsoft Teams:

Thanks to the event organizers and all the attendees!

Event information in German

The next user group's meetup will be at the Developer Week (DWX) in Nuremberg. Check it out here!

Event image source

Sunday, May 13, 2018

Attending the European Collaboration Summit (ECS) 2018

I'm looking forward to attending the European Collaboration Summit in Mainz from 29th to 30th May 2018.

More than 1000 attendees, more than 90 speakers, more than 100 sessions and more than 50 sponsors. We are still talking about just one event :)

Well-known speakers such as Chris O'Brien, Nicki Borell, Vesa Juvonen and Waldek Mastykarz are going to cover topics like SharePoint 2019, Microsoft Teams, Microsoft Azure, PnP and so on. As a SharePoint person you can't afford to miss this. ECS is a landmark event in European SharePoint conferences.

As you can see, there will be a lot of people to meet and a lot of knowledge to acquire. Let's get in touch if you're also going to participate in ECS!!! Since my company, Solutions2Share, is sponsoring this event, you can find me at our exhibition stand. Just drop by!

Event information:


Tuesday, May 1, 2018

Managing SharePoint Hub Sites

At the Ignite 2017 Microsoft announced a new Office 365 capability of connecting collaboration and communication. SharePoint Hub Sites is now rolling out to targeted release customers in Office 365 and should be available to all those organizations by the end of May 2018.

SharePoint Hub Sites is a handy way to organize the intranet since you can associate sites together in a hub site and benefit from advantages such as:
  • Cross-site navigation: Common navigation that appears on all associated sites
  • Content rollup: Access to news and activities from associated sites
  • Consistent look and feel: Common theme across associated sites
  • Scoped search: Search across all associated sites

In this blogpost, I will show you different advantages you get when working with hub sites. I also will demonstrate to you how to register and manage SharePoint hub sites.

Important: You may need to update your SharePoint Online Management Shell to the version 16.0.7521.1200 or later, in order to use the demonstrated PowerShell commands below.


  1. Register a site as a hub site
  2. Manage access to hub site associations
  3. Associate a site with a hub site
  4. Migrate an associated site to another hub site
  5. Trying out the hub site’s benefits

1. Register a site as a hub site

Hub sites are created based on existing sites. There are two recommended kinds of sites which SharePoint supports to be registered as a hub site:
  • Communication Site
  • Group/Modern Site

A classic site can also be registered as a hub site. However, because of the classic site’s limitations, the hub site navigation and hub site settings will only appear on modern pages, including document libraries, lists and site contents when the new experience is activated. So, you could define a modern page as the homepage of your classic site in order to have easier access to the missing components. Here is what the hub site settings button looks like:

Unfortunately, it’s not possible to register a hub site directly from the SharePoint UI yet. For that reason, you must work with a solution which supports this SharePoint API _api/site/RegisterHubSite. The code below shows how to use PowerShell to register an existing site as a hub site:

The property Principals plays an important role in registering hub sites since it gives the specified users the rights to manage the hub site. It means that only these users can:
  • edit hub site settings
  • associate a site with a hub site

Leaving this property empty results in a scenario where everyone has permission to manage the hub site, since it is public by default.

Important: You can’t register more than 50 hub sites in your tenant.

Update 01.09.2018: You can now create up to 100 hub sites in your tenant. This update will gradually roll out to targeted release customers in early September 2018.

Update 11.06.2019: SharePoint hubs limit raised from 100 to 2,000. This update will gradually roll out in mid-June. The roll out will be completed worldwide by the end of July 2019.

2. Manage access to hub site associations

If you didn’t set up permissions during the process of registering a hub site, you can restrict the access later so that only specified users can associate sites with a hub site. The code below shows how to use PowerShell to allow the user Master to associate his sites with the Project Alice hub site:

The specified user must be a site collection administrator in the sites he wants to associate with a hub site. Otherwise, he won’t have access to the Hub Site Association property which allows him to set up the site association using the SharePoint UI. Here is how it looks:

Of course, you can also revoke permissions so that specified users will no longer be able to associate sites with a hub site. The PowerShell code below reaches this goal:

3. Associate a site with a hub site

The following SharePoint site types can be associated with a hub site:
  • Communication sites
  • Group/Modern sites
  • Classic sites
  • Team’s modern site which is behind the scenes

To associate a site with a hub site, you can either use the SharePoint UI (as demonstrated in step 2 of this blog post) or you can use the SharePoint API /_api/site/JoinHubSite(hubSiteId). The PowerShell code below demonstrates how to associate the site Marketing with the hub site Project Alice:

Important: You can’t associate a hub site with another hub site.

4. Migrate an associated site to another hub site

SharePoint sites can’t be associated with multiple hub sites at the same time. Migrating already associated sites is as easy as associating sites for the first time. The only thing you need is to run the SharePoint API /_api/site/JoinHubSite(hubSiteId) again. This transforms your intranet into a dynamic digital workplace.

Running the PowerShell command Add-SPOHubSiteAssociation as demonstrated in the step 3 migrates an already associated site to another hub site.

5. Trying out the hub site’s benefits

Some of the functionalities below are gradually introduced to organizations. Perhaps you may not see these features working on your tenant yet.

Important: Some changes (e.g. theme, hub site logo etc.) can take very long (more than 1 hour) until they are rolled out to all associated sites.

5.1. Cross-site navigation: Common navigation that appears on all associated sites

When I started trying hub sites, I thought that sites were automatically added to the global navigation when they are associated with the hub site, but this is not what happens!

The global navigation is unique across all sites from the hub and it can be edited depending on your needs. The picture below shows this feature in an associated site:

5.2. Content rollup: Access to news and activities from associated sites

By using default SharePoint Framework web parts, the hub site’s homepage can be configured to give users access to content from all sites in the hub. For instance:
  • News web part: See news from associated sites
  • Sites web part: Overview of all sites in the hub
  • Site activity web part: See what happen in your associated sites (It didn't work during my tests) 

5.3. Consistent look and feel: Common theme across associated sites

Consistent theme through all sites in the hub. To roll out a new theme to your associated sites, you just need to change the look of your hub site J

5.4. Scoped search: Search across all associated sites

For instance, searching for “sites” returns all the sites which are associated with my HR hub site. Here is how it looks in my environment:


The learning curve of working with hub sites is low because you use default SharePoint components that you’ve used in the past. For instance, searching for content across associated sites means triggering a search request from the hub site. Having access to news from associated sites means configuring the News web part in the hub site. It’s just about working with things that you already know.

SharePoint administrators benefit from simple PowerShell cmdlets to manage the hub sites. In this blog post I’ve just demonstrated a couple of PowerShell cmdlets. Check out this page to see all the supported cmdlets that are available for managing hub sites with PowerShell.

I know that hub sites are still under development, but there are already a couple of things that I’d like to have in the future:
  • Capability of registering hub sites using the SharePoint UI. For instance, through the Central Administration
  • Overview of existing hub sites
  • Overview of associated sites with a hub site

It’s amazing how fast Microsoft has been releasing new features in Office 365. Microsoft’s cloud strategy makes the work with SharePoint very pleasurable.


Sunday, April 29, 2018

Dotnet Day Franken 2018 - Recap

When the .net day flag is up, local geeks know that the .net community is ready for another amazing meetup.

The .net day Franken was held in a five star hotel in Nuremberg. Five stars also represent the quality and the atmosphere of this event. It's difficult to find the right words to explain how relaxed, informative and entertaining this event is. It's just an event you can't afford to miss! The picture below shows the Le Méridien Grand hotel and the event's flags on the hotel's entrance.

At 9 a.m. Andreas Draheim started the keynote explaining to us the opportunities and risks of blockchain. The answer to the question if blockchain is clear to us, surprised me since the majority of the attendees weren't able to explain what blockchain actually is. In fact, I didn't know a lot about this topic in detail. Attending the keynote was definitely worth it!

After the keynote, I attended five other sessions. Below you will find a short summary of my notes during the keynote and three sessions:

• Andreas Draheim - Blockchain - opportunities and risks of a new technology
- Decentralized
- Blockchain never forgets anything
- No standards and regulations
- Energy intensive
- Different types of blockchain (public, private, open, consortia and permissioned)

• Thorsten Hans - Microservices at scale
- YAML is a superset of JSON
- Kubernetes is used for managing containerized applications
- Azure Container Registry is similar to private Docker Hub Registry
- Azure Container Instances: Containers as a service; Possibility of using Windows images
- Docker repositories: https://hub.docker.com

• Constantin Klein - Data + Cloud: The modular system for modern software
- Power BI: Connect data from different sources and generate nice reports
- SQL Server 2017 offers graph database
- Microsoft Cognitive Services offers custom vision service: https://customvision.ai
- Microsoft Bot Framework: Chat instead of app

• Sebastian Achatz - Serverless Dream Team - Azure Functions and Logic Apps
- Azure Functions: Serverless; Supports different program languages. Check out this blog post for more information about Azure Functions
- Logic Apps: Defines workflows in a designer; No coding needed. Check out this blog post for more information about Logic Apps
- Possibility of creating custom connectors for Logic Apps
- Integrated interface which shows the workflow history

During the sessions attendees had a good time and between sessions the opportunity for networking. I enjoyed getting in touch with former colleagues and people from the .net community. The .net day Franken always ends with a very animated sponsored raffle and a send-off session. Fortunately, I was able to win a Microsoft T-shirt this year J Attending many IT events means having to buy fewer clothes J

Next year the .net day Franken will be celebrating 10 years. Girls and boys, this is going to be a fantastic event. Can't wait to see what is coming!

Sunday, April 1, 2018

Bring Microsoft Teams into your classroom

There are many tools you can use to improve collaboration and communication inside a project team. It took my classmates and I more than five appointments to choose the right one!

The Background:

2016 I started my Business Management studies. One of the main subjects in this area is Project Management. In order to learn about all of the relevant topics in project management, my teacher separated us into project teams, where each team is responsible for a different project. My team consists of five other project managers and our topic is Knowledge Management. In this project, we simulate working at a company which has problems handling information and knowledge. Our goal is to introduce a system which must solve the problem of creating, sharing, using and managing the knowledge and information of this organization. The real project's goal is to learn and practice the different project management tools, such as stakeholder analysis, risk analysis...

Our needs:

Each team member has their own IT background. Everyone has been working with the different tools for team communication. When we started working together, we first tried to find an unique tool everyone could use to reach the following requirements:
  • Manage project files (Word, Excel, Project etc.)
  • Chat (post links, post emojis J etc.)
  • Everyone must have access to the system
  • OneNote (protocols, brainstorming, notes etc.)

The tools we used:

After a short brainstorming session, we had the following tools for file sharing and instant messaging to choose from:
  • Google Drive
  • OneDrive
  • Dropbox
  • WhatsApp
  • Threema

At this point I was very proud that none of us suggested Facebook J

So, we ended up with Dropbox and WhatsApp because most of us know and use them. Here is where the problem started because most of us have been using these tools. We also had people in our group who didn’t have WhatsApp or Dropbox.

In the following appointments we noticed that Dropbox wasn't working as expected. Many of us didn't get the Dropbox link because they didn't have WhatsApp and other of us didn't have success accessing the Dropbox. Well, we moved from Dropbox to personal OneDrive which worked great. Everyone now had access to the project files, but we still had problems with the communication over chat. Those guys (actually ME) who didn't have WhatsApp weren't able to participate in the project’s conversation. A friendly classmate of mine started sending me SMS, so I could now join the conversation.

Lessons learned at this point:
  • Define the communication channels asap, so you can focus on essential topics.
  • Use communication and collaboration tools which people are familiarized with. It leads to high acceptance and short learning curve.
  • If necessary, spend time training people about how to use new tools, so no one gets left out.

Our OneDrive WhatsApp SMS solution for communication and collaboration was working and everyone could deal with it. Of course, we still had the following problems:
  • Only one person had full control over the files in the personal OneDrive.
  • Different tools for chat.

That couldn't be the final solution...

Microsoft Teams

I've been working with Microsoft Teams for the past six months and I’m very satisfied with the way small teams (I haven’t used it with more than 10 people in one team) can work together using that tool. Actually, it has all requirements we're looking for: integrated chat and file management. There was only one problem: “Full guest access”. At the time we started our project, Microsoft Teams didn’t support full guest access. It means that you weren’t able to invite people to Teams who had a Gmail or even an Outlook account.

Things change with the time!

At the end of February 2018, Microsoft announced support for full guest access in Teams. Oh my gosh J Since I have my own Office 365 tenant, I immediately created a team and started configuring it. Below I’ll demonstrate to you how to create a team based on my essential requirements.

1. Create a team

Open Microsoft Teams and click Add team, then Create team and fill in the form which pop up. Here is what my settings look like:

After the team was created, I removed the Wiki tab since I didn’t need that.

2. Migrate the existing data from OneDrive to Teams

At the time of the migration, our OneDrive had one OneNote and three Excel files. I just downloaded the files from OneDrive and uploaded them into Teams under Files / General. Since I wanted my team to use OneNote from an exclusive tab, I turned OneNote into a tab. Here are the steps: click Add a tab (+), then choose the OneNote tile. Select Paste a OneNote link and enter your OneNote’s WopiFrame URL. Unfortunately, I couldn’t use the option Browse notebooks for that. Here is what my settings look like:

Advice: In case you don’t have an extra OneNote notebook, you can either create a new notebook or use the default one. Since Teams has a SharePoint site in the background, you already have a default notebook which is stored in the SharePoint site under Site Assets.

3. Invite project members as guest users

Before inviting external users to Teams, you must enable it in Office 365. Navigate to Services & add-ins (https://portal.office.com/adminportal/home#/Settings/ServicesAndAddIns), then click Microsoft Teams. Under Settings by user/license type select Guest and finally turn Microsoft Teams on for all users of this type. Here is how it looks:

To invite people to your team as guest user, I’d suggest you use this Microsoft documentation.

4. Add a custom app

By default, you can’t add custom apps to Teams. Navigate to Services & add-ins (https://portal.office.com/adminportal/home#/Settings/ServicesAndAddIns), then click Microsoft Teams. Under Apps turn on Allow sideloading of external apps. Here is how it looks:

I created an app which gives my team access to the teacher’s website. This way we can directly access relevant files from a tab in Teams skipping a couple of steps to get there. To add a custom app in Teams, click the store link in the left navigation, then click Upload a custom app to upload your ZIP file.

Important: The button Upload a custom app only appears if you have turned on Allow sideloading of external apps in your Office 365 tenant.

5. The "big picture"

Here a short legend of the tabs:
  • Conversations: General posts which are visible to everyone in a channel. Chats are also possible through Teams  
  • Files: Can store files and folders. It supports uploading files using drag and drop
  • OneNote: Direct access to OneNote through Teams
  • Mexsos: Custom app


I’d have preferred my learning institution had supported Office 365 Education, so we wouldn’t have had this stress. Anyway, I listed here the good and bad of Teams from my point of view:

  • Communication and collaboration inside one tool. For instance, you don’t leave Teams when you open Excel files
  • Come as you are! It doesn’t matter if you have an Outlook or Gmail account. Anything works J No extra Microsoft licenses are needed when you’re added as a guest user
  • Very powerful and fast search which searches through all content (files, chats etc.) in Teams
  • Web and desktop clients

  • Teams app for Android (probably also for iOS):
    • Custom apps don’t appear in the tabs
    • External guests can’t use it
    • Adding external guests through the app doesn’t work if they’re being added for the first time in the tenant
  • It takes a long time until OneNote is loaded in Teams. Loading animation is missing!
  • When the team’s calendar is opened directly as a web site in Teams, this notification appears: Last time we checked, this site wouldn't load inside our web app
  • No templates for Teams: Don’t repeat yourself!

Microsoft Teams is a central point to many Office 365 functions which is being developed very fast. Here you find its roadmap. I’m happy to have Teams in Office 365 and I love the way communication and collaboration at work and in schools becomes easier with it.


Sunday, March 18, 2018

Attending the Dotnet Day Franken 2018

I'm looking forward to attending the Dotnet Day Franken in Nuremberg on 28th April 2018.

This one-day event covers topics around .Net and is organized by the Dodnedder User Group. I’ve been attending the Dotnet Day Franken since 2012. In my opinion, it’s a very good opportunity to network and to learn from IT specialists.

I can’t wait to participate in Thorsten Hans’s session about Microservices at scale. I’m also very interested in the event’s keynote about Blockchain - opportunities and risks of a new technology. This year we have many interesting sessions about Azure J It’s going to be a nice day in Nuremberg.

Let us get in touch if you're also going to participate in the event!!!

Event information in German:

Sunday, March 4, 2018

Provisioning sites using SharePoint Site Design and Site Script

The newest capability for creating SharePoint sites based on a template was rolled out in Office 365. Site designs and site scripts automatically apply custom configuration when new SharePoint sites are created. It’s completely integrated in the SharePoint UI and offers an alternative to the PnP provisioning engine. In this blogpost, I will demonstrate to you how to work with this new capability in different scenarios.

Important: You may need to update your SharePoint Online Management Shell to the version 16.0.7414.1200 or later, in order to use the demonstrated PowerShell commands below.


  1. Understanding site scripts
  2. Create a site script and a site design
  3. Manage access to site design
  4. Create a SharePoint site from a site design
  5. Apply site design to an existing SharePoint site

1. Understanding site scripts

If you have been working with PnP to provision content to SharePoint sites, you’ll notice that site scripts have no similarity to the PnP schema, which is ok, since PnP is an open source project maintained by the community and not by Microsoft. Now Microsoft brought his own toy to the site provisioning’s playground. It supports triggering Flow, but in terms of provisioning it includes much fewer functions than PnP.

The site script’s schema is not difficult to understand since it is based on a JSON structure which works with a list of actions. Each action is specified by a verb value which must be written correctly since they are treated as case sensitive values. Below you see a list of supported actions:
  • applyTheme: Applies a custom theme
  • setSiteExternalSharingCapability: Manages guest access
  • createSPList: Creates a new list
  • addNavLink: Adds a navigation link
  • triggerFlow: Triggers a Microsoft flow
  • setSiteLogo: Sets a logo to a communication site (Not supported in team sites)
  • joinHubSite: Joins a hub site

Here is what a site script schema configured with all the actions above looks like:

Here you find recent information about site scripts’ supported actions.

Important: SharePoint Hub Sites are expected to be rolled out to Office 365 First Release tenants in the first half of 2018.

Update 25.03.2018: SharePoint Hub Sites are now rolling out to targeted release customers in Office 365.

2. Create a site script and a site design

This step demonstrates to you how to add the site script above to SharePoint online and to create a site design which uses that site script.

The property WebTemplate provides the set up for the following templates:
  • 1:   Register this site design with the team site template (group-less)  - Not working yet - Issue has already been reported
  • 64: Register this site design with the team site template (modern site)
  • 68: Register this site design with the communicate site template

The property SiteScript is an array of site scripts which run the entered scripts in the listed order. Here is what the added site design looks like in SharePoint:

3. Manage access to site design

Image this scenario: only site collection administrators can create sites in your organization. Scoping was added to site designs to handle this business requirement exactly. You can configure site designs to only appear for specific groups or people in your tenant.

Site designs are by default available to everyone in your organization, but there are two different kinds of scopes you can set up:
  • User:                          Email address – e.g.: jarbas.horst@example.onmicrosoft.com
  • Security Group:       Group’s display name or principal – e.g.: Administrators or c:0t.c|tenant|5ec63687-daf1-4d36-8689-213cdf2f3767

The example below shows how to specify the scope by a security group:

The property Rights can only be set up to View which restricts the site design’s usage to the defined users/groups.

4. Create a SharePoint site from a site design

You can start creating your SharePoint sites based on the site design you’ve just created from the SharePoint UI. Below you'll find the steps needed:
  1. Navigate to your SharePoint site’s home page (https://example.sharepoint.com/_layouts/15/sharepoint.aspx)
  2. Click Create site
  3. Select Team site since we created a site design for team sites
  4. Choose the design we’ve just created (Project)
  5. Enter a site name, click Next than Finish
  6. Click View updated site after the script applied

5. Apply site design to an existing SharePoint site

Running a site design on an existing SharePoint site processes delta changes. This means that either changes apply to the site without corrupting existing data or that a full provision occurs. Of course, the full provision will occur if the provisioned data hasn't been available in the site before.

This can only be done programmatically since there is no UI support yet. The PowerShell script below demonstrates to you how to run the site design on an existing site.


I see two great advantages to SharePoint administrators in working with site design:
  1. Direct integration in the SharePoint UI: Anyone can create custom SharePoint sites without the need to run PowerShell scripts, such as PnP.
  2. Capability of triggering Flow: "Everything" is possible J For instance, you can continue using your PnP templates from Microsoft Flow.
I can't wait to see what Microsoft has planned for site designs.