Hope to See You at SPTechCon Boston!

I'm thrilled to be selected as a speaker for SPTechCon Boston this year!
This is a great event with a lot of excellent speakers who really know what their topics!
I will present 2 sessions:

  • Develop Once, Use Twice - SharePoint Framework in Microsoft Teams - Tuesday, August 27, 1:15 PM, Constitution B
  • SharePoint Online Customization Toolset - Wednesday, August 28, 1:45 PM, Constitution B
I'll also take part in great Expert Panel How We Keep Up With Changes in Microsoft 365 Ecosystem on Tuesday, August 27 at 9:45 held by Matt Wade. Other participants are: 
So, please, join me on this event!
There is still time to register... And you can use code TerentievB19 to save $200!


Step by Step: Configure Bot to Work in Teams and with Microsoft Graph

This blog post is a step-by-step instruction on how to create a Bot from scratch using Microsoft Bot Framework v4, configure it to work with Microsoft Teams, and authenticate it to make Microsoft Graph requests.
There are a lot of resources around bots, authentication in bots and Microsoft Teams (and I'll list resources at the end of the post). But during my investigation I couldn't find an example or an article that walks through all 3 topics at the same time. And especially "from scratch" which is important if you want to understand the technology and the flow.
So this post is kind of a cheat sheet for myself, and hopefully for others.
All the steps described are for Bot Framework v4 and ASP.NET Core.
Code is available here.
Keep in mind that except of code there are different configurations to be done in Azure and MS Teams.
So, it might worth reading the post.


React Templates Using SPFx Library Components. Part II. Implementation.

In the first post we've already discussed the objective, as well as basics, or strategy, of how to create fully functional React templates (with props, events handling etc.) and dynamically load them using new SharePoint Framework project type - Library Component.
This post covers implementation details: main web part, dynamic template factory loading, and library component with alternative UI.
If you don't want to read the post - the code is available here. Feel free to use it in any way you want.


React Templates Using SPFx Library Components. Part I. Basics.

Templating is a pretty powerful approach to provide extensibility to a project/component/library. It can be used to deliver different behaviors and/or look and feel to different customers, or provide extendable open-source libraries.
There are a lot of template libraries out there that can be used in your project. One of the most popular is Handlebars.js. The problem with these libraries is that in most cases they provide you an ability to define "static" content (basically, HTML and CSS). And if you want to include some actionable content (e.g. handle events from outside the template, etc.) - it might be either tricky or impossible.
In the next several blog posts I want to showcase how to create fully functional React templates (with props, events handling etc.) and dynamically load them using new SharePoint Framework project type - Library Component.
Technically, this approach can be exposed to non-SPFx projects as well, but it is not the purpose of this blog posts series.
If you don't want to read the posts - the code is available here. Feel free to use it in any way you want.


Remember: Web GUID is NOT UNIQUE

It may seem weird, but yes - SharePoint Web GUID is not unique across the tenant/farm. And it has never been.
It is unique only inside a site collection.
It can be confusing (everyone knows what acronym means), most of us probably has never noticed that... But it is what it is.
And you'll probably notice it more often with fast site creation for modern Team and Comm sites in SharePoint Online.
So remember that fact... and modify your code if it based on assumption that the Guid is unique.
Few more words by Wictor Wilen: http://www.wictorwilen.se/when-a-guid-is-not-really-unique-i-m-looking-at-you-sharepoint

That's all for today!
Have fun!


MS Graph, Events, and Time Zones in SPFx

Working with time zones is always a mess, whatever language, technology stack or environment you're in. There are always different issues on how to convert dates, get correct time zone and so on.
Currently I'm working on SPFx solution that should create an event in Outlook calendar.
User should be able to select date, time, and time zone of the event.
Time zone selection dropdown should display friendly names like that:

And the dropdown initial selection should be based on browser's (computer) time zone.
Below I'm providing some thoughts on the implementation, unfortunately without final solution for now. All the thoughts are based on the SPFx stack.


MS Graph: Get DriveItem by File Absolute Url

Microsoft Graph allows to work with OneDrive files and SharePoint documents using DriveItem resource type. Using this entity you can read information about a file, such as size, content, file type, and so on (here is a link to the resource type documentation).
You can get DriveItem object from a specific Drive, Site, Group, or user's connected OneDrive. But for all of these operations you need to know identifiers of parent resources, e.g. drive id, or site id (documentation on how to get drive item).
But what if the file is located in a custom document library, in a subfolder, and on a subsite? And you have only absolute url for the document, like https://your-tenant.sharepoint.com/sites/your-site/your-subsite/DocLibrary/subfolder/file.ext?