From 2ae4a75d651dcd902d8ab612db00b49ec62df871 Mon Sep 17 00:00:00 2001
From: Roland
Date: Thu, 23 Nov 2023 20:13:26 +0100
Subject: [PATCH] Deployed 9993056d with MkDocs version: 1.4.2
---
index.html | 1 +
search/search_index.json | 2 +-
sitemap.xml.gz | Bin 260 -> 260 bytes
viva/viva-connections/index.html | 11 +++++++++++
4 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/index.html b/index.html
index 2d293662..2f0c2136 100755
--- a/index.html
+++ b/index.html
@@ -2706,6 +2706,7 @@ DEV-Tenant
+- microsoft-changelog
- SPFx Roadmap / Release Notes
- Microsoft 365 Roadmap
- Monthly Updates about M365 News
diff --git a/search/search_index.json b/search/search_index.json
index 82c8a46d..c56b7295 100755
--- a/search/search_index.json
+++ b/search/search_index.json
@@ -1 +1 @@
-{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Tips and tricks","text":" - Microsoft 365 help & learning
- PnP-SPFx-Blog
- Teams Developer Portal
- Pattern & Practises
- Sample Solution Gallery
- Microsoft 365 Extensibility look book gallery
- Microsoft 365 Community Content
- SharePoint For IT Professionals
- SharePoint development
- SharePoint Videos
- Etiquette of Microsoft 365
- Tips & Tricks Coding/SPFX/AzureAD
"},{"location":"#admin-shortcut-list","title":"Admin Shortcut List","text":" - cmd.ms | Installation cms.ms
- msportals
"},{"location":"#feedback","title":"Feedback","text":""},{"location":"#m365-docs","title":"M365 Docs","text":" - microsoft-365
- Microsoft 365 glossary
- SPFx-Json-Schemas
- Microsoft 365 and Office 365 service descriptions
- Microsoft 365 Community Content
"},{"location":"#start-spfx-training","title":"Start SPFx Training","text":" - SPFx documentation
- Why did Microsoft create the SharePoint Framework?
- What is the SharePoint Framework?
- SharePoint Framework - Getting started
- SharePoint Developer Community - Open-source projects
- Updated SharePoint Framework developer training package now available (2019)
- SharePoint Developer GitHub repositories
- Gateway to Office 365 Training Resources from Microsoft
- Set up an Office 365 developer subscription
- Frontend Workshop from HTML/CSS/JS to TypeScript/React/Redux
- Microsoft Learning Module
- HOW TO GET STARTED WITH REACT FOR BUILDING ADVANCED SPFX SOLUTIONS
- HOW TO USE THE SERVICE PATTERN IN SPFX REACT SOLUTIONS
- Nanddeepn-Getting Started Slides
- Recap of Getting Started SharePoint Framework (SPFx) Webinar Series 2020
- PiaSys: Conferences-Samples
- PnP Virtual Conference \u2013 September 2020 \u2013 Summary and Recordings
- Microsoft 365 learning pathways
"},{"location":"#start-spfx-react-development","title":"Start SPFx React Development","text":" - SPFx Essentials my Getting Started Video | E003
- How to Style your Custom SPFx Web Part to look OOB | E004
- PT2: Custom SPFx Web Part looking like it's OOB | E005
- SPFx, Post Request, React Hooks, and Fluent UI forms | E006
"},{"location":"#start-teams-development","title":"Start Teams Development","text":" - Microsoft Teams App Camp On Demand
- #30DaysOf Learning
- Microsoft Cloud Integration Scenarios
"},{"location":"#reference-samples","title":"Reference Samples","text":" - SPFx samples in the Microsoft 365 Unified Sample gallery
- SharePoint Framework Client-Side Web Part Samples
- Microsoft Teams Development Samples
- SafeDesk365
- SharePoint Framework DataTable
- Lead Assist Dashboard
- Executive Room Reservation Reference Microsoft Teams Personal App
- News article content at a glance
- react content query online
- Fakeflix - WebApp to learn React/Redux and more
- react-roomchat - Azure Communications Services Building SPFx solution with Azure Communication Services integration
- @pnp/js and ReactJS Functional Components
- React Flight Tracker
- Extend Teams app to other M365 host apps like Outlook, Office.com
- microsoft365dev
- Exposing business data in Microsoft 365 using Azure Data API builder
"},{"location":"#m365-full-stack-spfx","title":"M365 Full Stack / SPFx","text":" - spfx-wp-react-app
- The ultimate full stack project setup for M365 development
- epic-stack
"},{"location":"#enterprise-reference-samples","title":"Enterprise Reference Samples","text":" - Rhythm of Business Calendar - SPFx Solution Accelerator - Domain Driven Design
- Rhythm of Business Calendar - SPFx Solution Accelerator Deep Dive
- Contoso Retail Dashboard
- Video: Microsoft 365 & Power Platform weekly call \u2013 6th of June, 2023
"},{"location":"#pnpjs-v3","title":"PnPjs-V3","text":""},{"location":"#fluent-ui","title":"Fluent UI","text":" - fluent2.microsoft.design
- Fluent UI React Components
- Installing the fluent ui components
- Fluent UI 9 SPFx Sample
- Updated Fluent UI 9 Demo to latest SPFx and Fluent UI 9
"},{"location":"#learning-spfx-videos","title":"Learning SPFx Videos","text":" - SharePoint Framework for beginners 2021 | Episode 01 - Introduction
- SharePoint Framework for beginners 2021 | Episode 02 - Development Environment
"},{"location":"#dev-tenant","title":"DEV-Tenant","text":" - Welcome to the Office 365 Developer Program
- New renewable Office 365 developer subscriptions launch on April 3rd
- 10 Tips for Demo/Dev Tenant
- how-to-use-the-complimentary-azure-credits-in-a-microsoft-365-developer-tenant-step-by-step
- What is a \"Dev Tenant\" and why would you want one?
"},{"location":"#development-roadmap","title":"Development Roadmap","text":" - SPFx Roadmap / Release Notes
- Microsoft 365 Roadmap
- Monthly Updates about M365 News
"},{"location":"#code-guideline","title":"Code Guideline","text":" - Best practices in cloud applications
- Patterns and Practices for SPFx Development
- Typescriptlang - Handbook
- Airbnb React/JSX Style Guide
- Airbnb JavaScript Style Guide
- Office fabric react - Coding Guidelines
- Office fabric react - React-Guideline
- Office fabric react - TypeScript-Guidelines
- react-typescript-cheatsheet
- Setup TypeScript with React
- Design Patterns
- Awesome React Components & Libraries
"},{"location":"#performance-guideline","title":"Performance Guideline","text":" - PnP Virtual Conference - 09/2020 - Ways to optimize SharePoint Framework highly custom Intranet
- SharePoint Framework performance optimization list
- Performance guidance for SharePoint Online portals
- Optimize SPFx Sample
"},{"location":"#design-guideline","title":"Design Guideline","text":" - sharepoint look book
- Official product colors for Microsoft apps
- Teams UI Component Library
- Figma UI Kit for Teams
"},{"location":"#code-review-checklist","title":"Code Review Checklist","text":" - React-JS-Checklist
- Front-end Code Review Checklist
"},{"location":"#security-guideline","title":"Security Guideline","text":" - Basic Security Set Up for Microsoft 365
- Security Scanning a SharePoint Framework Solution
- Security Engineering Portal
- Automate Azure DevOps code security analysis with the Microsoft Security Code Analysis extensions
"},{"location":"#granting-permission","title":"Granting Permission","text":"
m365 spo login https://<tenant>-admin.sharepoint.com\n
- spo serviceprincipal grant add
spo serviceprincipal grant add --resource 'Microsoft Graph' --scope 'Mail.Read'\n
"},{"location":"#content-style-guide","title":"Content Style Guide","text":" - Microsoft Writing Style Guide
"},{"location":"#coding-patterns","title":"Coding Patterns","text":" - React Design Principles
- Design patterns
- React inpatterns
- design patterns and component patterns
"},{"location":"#spfx-workflow","title":"SPFx Workflow","text":" - Walkthrough: use Azure DevOps with SPFx, GitFlow and GitVersion
"},{"location":"#sharepoint-pnp-community","title":"SharePoint PNP Community","text":" - SharePoint PnP resources
- Sharepoint Glossar
"},{"location":"#create-project-pnpm","title":"Create Project (pnpm)","text":" - Scaffold projects by using Yeoman SharePoint generator
with pnpm manager
yo @microsoft/sharepoint \u2013package-manager pnpm\n
pnpm i tslint@5.9.1 -DE\n
pnpm i typescript@2.4.2 -DE\n
"},{"location":"#check-package-version","title":"Check Package Version","text":"node \u2013v\nnpm \u2013v\nyo --generators\ngulp \u2013v\ntsc \u2013v\ntsd --version\n
"},{"location":"#git-basics","title":"Git Basics","text":"Init local repo
git init\n
Add all Files to local repo
git add -A\ngit commit -m \"init repo\"\n
Show last commit
git show --name-only\n
show full history
git log --full-history --src/path/to/file.js\n
- The Smart Ways to Correct Mistakes in Git
- A successful Git branching model
- GitHub cheat sheet for PnP contributions
- Illustrated Notes on Fixing Git Mistakes
"},{"location":"#developmentlocal-workbench","title":"Development(local workbench)","text":"Importend: only for spfx < 13.1
gulp serve\n
https://localhost:4321/temp/workbench.html\n
"},{"location":"#developmentonline-workbench","title":"Development(online workbench)","text":" - Update your project's hosted workbench URL
gulp serve --nobrowser\n
/_layouts/15/workbench.aspx?forceLocale=de-de\n
/_layouts/workbench.aspx\n
"},{"location":"#prepare-deployment-solution","title":"Prepare Deployment Solution","text":"gulp clean\n
gulp build --ship\n
gulp bundle --ship\n
gulp package-solution --ship\n
"},{"location":"#debug-in-vscode","title":"Debug in vs.code","text":" - https://docs.microsoft.com/en-us/sharepoint/dev/spfx/debug-in-vscode
"},{"location":"#checklist-spfx-initial","title":"Checklist SPFx initial","text":" - SharePoint Framework \u2013 new project checklist
"},{"location":"#update-version","title":"Update Version","text":" - Use
npm version
to upgrade the version of your SPFx solution - spfxappdev-init
npm version major\n
npm version minor\n
npm version patch\n
"},{"location":"#add-imported-pnp-modules","title":"Add imported pnp modules","text":" - https://pnp.github.io/pnpjs/
- https://github.com/SharePoint/PnP-JS-Core/wiki/Developer-Guide
npm install @pnp/logging @pnp/common @pnp/odata @pnp/sp @pnp/graph --save\n
- https://sharepoint.github.io/sp-dev-fx-controls-react/
npm install @pnp/spfx-controls-react@latest --save --save-exact\n
- https://sharepoint.github.io/sp-dev-fx-property-controls/
npm install @pnp/spfx-property-controls@latest --save --save-exact\n
"},{"location":"#localizations","title":"Localizations","text":" - Location files are in JSON format
- They work similar as Resources files (XML) on VS Solution
- The default language is English (en-us)
- Developers can test the locale by:
- Updating write-manifests.json file
{\n\"cdnBasePath\": \"<!-- PATH TO CDN -->\",\n\"debugLocale\": \"de-de\"\n}\n
or by using the \"locale\" command argument
gulp serve --locale=de-de\n
"},{"location":"#app-permission","title":"App Permission","text":" - Working with Application Permissions (App-Only Auth) in SharePoint Online and the Microsoft Graph
- SharePoint lifehacks: create SharePoint app registration with client secret which never expires
"},{"location":"#sharepoint-online-data","title":"SharePoint Online Data","text":" - Granting access via Azure AD App-Only
- Granting access using SharePoint App-Only
"},{"location":"#msgraph-data","title":"MSGraph Data","text":" - Get application ID and authentication key
"},{"location":"#scoped-service","title":"Scoped service","text":" - Elegant Dependency Injection in SPFx
- SPFx WebPart scoped service
- Using React hooks to globally share service scope between components
- SPFX Service Scopes Hooks
"},{"location":"#data-service","title":"Data Service","text":" - APIs Everywhere
- RSS Reader
- Sample FieldVisitTab
- SPFx \u2013 How to handle large list items
- Filter large lists in SharePoint Online
Sample Folder structure
- barrel: each folder should has a index.ts file
-
prettify your imports
-
src
- models
- IHelpDeskItem.ts
- index.ts
- services
- IDataService.ts
- MockDataservice.ts
- SharepointDataService.ts
- index.ts
- webparts
- components
- loc
- WebpartNameWebPart.ts
"},{"location":"#data-model","title":"Data Model","text":"Interface to define our Data structure
export interface IHelpDeskItem {\n id?: number;\n title?: string;\n description?: string;\n level?: string;\n status?: string;\n assignedTo?: string;\n resolution?: string;\n}\n
Interface to define our Data Access services
import { IHelpDeskItem } from \"./../models/IHelpDeskItem\";\nimport { WebPartContext } from \"@microsoft/sp-webpart-base\";\n\nexport default interface IDataService {\n getTitle(): string;\n isConfigured(): boolean;\n getItems(context: WebPartContext): Promise<IHelpDeskItem[]>;\n addItem(item: IHelpDeskItem): Promise<void>;\n deleteItem(id: number): Promise<void>;\n}\n
Mocking Service for testing in local Workbench development
import { IHelpDeskItem } from \"./../models/IHelpDeskItem\";\nimport IDataService from \"./IDataService\";\nimport { IWebPartContext } from \"@microsoft/sp-webpart-base\";\n\nexport default class MockDataService implements IDataService {\n...\n private _webPartContext: IWebPartContext;\n private _listId: string;\n\n constructor(webPartContext: IWebPartContext, listId: string) {\n this._webPartContext = webPartContext;\n this._listId = listId;\n }\n...\n\n public getItems(context: IWebPartContext): Promise<IHelpDeskItem[]> {\n return new Promise<IHelpDeskItem[]>((resolve, reject) => {\n setTimeout(() => resolve([\n {\n id : 1,\n title : \"That doesn't work\",\n description : \"When I do that, it doesn't work\",\n level : \"Low\",\n status: \"Open\",\n resolution: \"Do this and it will work!\",\n assignedTo: \"S\u00e9bastien Levert\",\n }\n ]), 300);\n });\n }\n}\n
"},{"location":"#get-data-with-sharepoint-rest","title":"Get Data with Sharepoint REST","text":"Source
public getItems(context: WebPartContext): Promise<IHelpDeskItem[]> {\nreturn new Promise<IHelpDeskItem[]>((resolve, reject) => {\n context.spHttpClient\n .get( `${this._webPartContext.pageContext.web.absoluteUrl}/_api/web/lists/GetById('${this._listId}')/items` +\n `?$select=*,HelpDeskAssignedTo/Title&$expand=HelpDeskAssignedTo`, SPHttpClient.configurations.v1)\n .then(res => res.json())\n .then(res => {\n let helpDeskItems:IHelpDeskItem[] = [];\n\n for(let helpDeskListItem of res.value) {\n helpDeskItems.push(this.buildHelpDeskItem(helpDeskListItem));\n }\n\n resolve(helpDeskItems);\n })\n .catch(err => console.log(err));\n});\n}\n
"},{"location":"#get-data-with-pnp-js-core","title":"Get Data with Pnp-JS-Core","text":"Reference Sample
Advantages
- Type safe so you get your errors while you code and not when you execute and test
- Works on all versions of SharePoint (On-Premises, Online, etc.)
- Offers built-in caching mechanisms
- Heavily used in the SharePoint Development Community
Init context in react webpart component source
public onInit(): Promise<void> {\n return super.onInit().then(_ => {\n pnpSetup({\n spfxContext: this.context\n });\n });\n}\n
init service in react webpart component
public render(): void {\n const element: React.ReactElement<IListContentProps> = React.createElement(\n ListContent,\n {\n context: this.context,\n dataService: this.getDataService(),\n list: this.properties.list\n }\n );\n\n ReactDom.render(element, this.domElement);\n}\n
Get items from list Source
public getItems(context: WebPartContext): Promise<IHelpDeskItem[]> {\nreturn new Promise<IHelpDeskItem[]>((resolve, reject) => {\n\n sp.web.lists.getById(this._listId).items\n .select(\"*\", \"HelpDeskAssignedTo/Title\")\n .expand(\"HelpDeskAssignedTo\").getAll().then((sessionItems: any[]) => {\n let helpDeskItems:IHelpDeskItem[] = [];\n\n for(let helpDeskListItem of sessionItems) {\n helpDeskItems.push(this.buildHelpDeskItem(helpDeskListItem));\n }\n\n resolve(helpDeskItems);\n });\n\n});\n}\n
"},{"location":"#get-search-data-with-asyncawait","title":"Get Search Data with async/await","text":"Using PnPJS and Async/Await to Really Simplify Your API Calls
async/await
private async _getSiteData(): Promise<ISPSite[]> {\n\n var thisDomain: string = location.host.split(\".\")[0];\n var exclusions: string[] = [\"https://\" + thisDomain + \"-my.sharepoint.com\", \"https://\" + thisDomain + \".sharepoint.com/portals/personal\"];\n var exclusionString: string = \" -Path:\" + exclusions.join(\" -Path:\");\n exclusionString += \" -Path=https://\" + thisDomain + \".sharepoint.com\";\n\n try {\n\n let result = await sp.search(<SearchQuery>{\n Querytext: \"contentclass:sts_site \" + exclusionString,\n RowLimit: 500,\n TrimDuplicates: false,\n Properties: [{\n Name:\"EnableDynamicGroups\",\n Value: {\n BoolVal: true,\n QueryPropertyValueTypeIndex: QueryPropertyValueType.BooleanType\n }\n }],\n SelectProperties: [\"Title\", \"Path\", \"SiteLogo\"]\n });\n\n return this.processSearchResults(result);\n\n } catch (e) {\n\n console.error(e);\n return null;\n\n }\n\n }\n
public async getShipmentStatuses(serviceProps: IServiceProperties): Promise<IStatus[]> {\n\n try {\n\n let items = await sp\n .web\n .lists\n .getByTitle(\"SL_ShippingStatuses\")\n .items\n .select(\"Id\", \"Title\", \"SortOrder\", \"CanBeCancelled\")\n .orderBy(\"SortOrder\")\n .get(spODataEntityArray<Item, IStatus>(Item));\n\n return items;\n\n } catch (e) {\n\n console.error(e);\n return null;\n\n }\n}\n
joelfmrodrigues - demos
private async _getItems() {\n let select = '*';\n let expand = 'File';\n let filter = '';\n\n // filter by selected term if required\n if (this.props.term !== undefined && this.props.term !== null && this.props.term.length > 0) {\n const term = this.props.term[0];\n\n select = `${select},TaxCatchAll/Term`;\n expand = `${expand},TaxCatchAll`;\n filter = `TaxCatchAll/Term eq '${term.name}'`;\n }\n\n const items = await sp.web.lists.getById(this.props.list).items\n .select(select)\n .expand(expand)\n .filter(filter)\n .get();\n\n // update state\n this.setState({\n items: items ? items : []\n });\n console.log('List Items:', this.state.items);\n}\n
"},{"location":"#get-data-from-msgraph","title":"Get Data from MSGraph","text":" - Using PnPjs to send requests to MS Graph with SharePoint Framework 1.6
- Example of wrapper to ease usage of Graph calls in SPFx
- msgraph-helper
- SPFx webpart with MS Graph and PnPjs: step by step guide
"},{"location":"#start-office-fabric-react","title":"Start Office Fabric React","text":"Create Sample
- Use Office UI Fabric React components in your SharePoint client-side web part
- TypeScript React Starter
- React app with an Office UI Fabric React DocumentCard
create-react-app demo-office-fabric-react-ts --scripts-version=react-scripts-ts\n
init git
git init\ngit add .\ngit commit -m \"Initial commit.\"\n
add office fabric react
- office-ui-fabric-react@5.131.0
- Use Office UI Fabric React components in your SharePoint client-side web part
npm install office-ui-fabric-react@5.132.0 --save\n
"},{"location":"#generator-for-sp-applications","title":"Generator for SP applications","text":" - SP Pull-n-Push - Yeoman generator for SharePoint client-side applications
"},{"location":"#upgrade-yo-generator-spfx","title":"Upgrade yo generator SPFx","text":" - Use the Yeoman SharePoint generator
npm list -g --depth=0\n
npm ls -g --depth=0 @microsoft/generator-sharepoint\n
npm outdated --global\n
npm install @microsoft/generator-sharepoint@latest --global\n
"},{"location":"#spfx-version-upgrade","title":"SPFx Version Upgrade","text":" - Project-upgrade
- Easily upgrade SharePoint Framework projects with the Office 365 CLI
"},{"location":"#office-365-cli","title":"Office 365 CLI","text":" - Office 365 User Guide
- Comparison to SharePoint PowerShell
- Office 365 GitHhub Actions
- GETTING STARTED WITH THE OFFICE 365 CLI
- Working with Office365 CLI and JSON parameters
- CLI.Microsoft365.PowerShell.Predictor
Latest version
npm i -g @pnp/cli-microsoft365@latest\n
Latest Beta version
npm i -g @pnp/cli-microsoft365@next\n
Create report for upgrade
m365 spfx project upgrade --shell powershell --toVersion 1.12.1 --output md > report.md\n
"},{"location":"#update-spfx-packages","title":"Update SPFx packages","text":" - Update SharePoint Framework packages
"},{"location":"#custom-yo-spfx-generator","title":"Custom yo spfx generator","text":" - PnP SPFx Yeoman generator
"},{"location":"#add-external-js-frameworks","title":"Add External JS-Frameworks","text":" - How to add external libraries and assets in SharePoint client-side web part
- Loading dependent JS files into SPFx Solution in right order
- How To Include JavaScript Files In SharePoint Framework Solutions?
"},{"location":"#spfx-utilities","title":"SPFx Utilities","text":" - Utility functions which you might not know existed in SPFx
- SPFx Fast Serve Tool
- sp-formatter
- SP Formatter: the big update
- SharePoint produtivity tools
- Ultimate Developer Tool List for SPFx
"},{"location":"#team-development-tools","title":"Team Development Tools","text":" - Guides and tools to design your Microsoft Teams app effectively
- @fluentui/react-teams
- Microsoft Teams UI templates sample app
"},{"location":"about/about/","title":"About","text":""},{"location":"about/about/#author","title":"Author","text":"Roland Oechslin
"},{"location":"about/about/#work","title":"Work","text":"Senior Sharepoint/M365 Expert and Developer, BLS AG, Bern, Switzerland
"},{"location":"about/about/#interests","title":"Interests","text":"Programming, New Technologies
"},{"location":"about/about/#twitter","title":"Twitter","text":"@rolandoechslin
"},{"location":"about/help/","title":"Help mkdocs","text":" - For full documentation visit - mkdocs.org.
- Themes Material
- Markdown Syntax
- Markdown guide
"},{"location":"about/help/#deployment-to-github-pages","title":"Deployment to GitHub Pages","text":" - https://www.mkdocs.org/user-guide/deploying-your-docs/
mkdocs gh-deploy\n
"},{"location":"angular/elements/","title":"Angular","text":""},{"location":"angular/elements/#elements","title":"Elements","text":" - a-practical-guide-to-angular-elements
"},{"location":"angular/elements/#angularjs","title":"AngularJS","text":" - html-templates-in-spfx
- building-sharepoint-framework-client-side-web-parts-angular
"},{"location":"articles/sitecollection-versus-subsite/","title":"Sitecollection versus subsite","text":""},{"location":"articles/sitecollection-versus-subsite/#advantages-of-subsites","title":"Advantages of Subsites","text":" - A subsite can be provisioned by anyone with at least Full Control permission (more specifically, the Create Subsites permission level) on the parent site. I.e. You don\u2019t require a farm or tenant admin to provision one for you. (Although in SharePoint Online, anyone in a specified AD group can provision an Office 365 Group site collection; to provision a standard SharePoint site collection on SharePoint Server requires membership in the Farm Administrators SharePoint group on the machine running the Central Administration website. To provision a Classic SharePoint site collection in Office 365 requires you to be a Global Admin or SharePoint Online administrator)
- A subsite can automatically be added to the navigation of the parent site if you have the navigation settings configured that way.
- A subsite can automatically inherit settings from its parent site including permissions, features, and navigation (Ironically this can also be a disadvantage as well as I describe in the section below). You can optionally adjust some of the settings at the subsite level. (for example, decide not to inherit navigation settings)
- This is quick and easy to setup which is attractive for small organizations who don\u2019t have a lot of resources to spend maintaining site collections. (although in SharePoint Online, the provisioning process for an Office 365 Group site collection is very quick and easy, it is not that easy in SharePoint on-premises)
- [Update January 18, 2018] A subsite automatically inherits content types and site columns from its parent site. This is more straight-forward to setup than a Content Type Hub which is what is required to do the same across site collections.
- [Update January 18, 2018] Managed Term sets can easily be shared across all subsites within a Site Collection if the term set is created at the site collection level. Term sets cannot be shared across site collections unless it is created at the farm/tenant level.
"},{"location":"articles/sitecollection-versus-subsite/#disadvantages-of-site-collections","title":"Disadvantages of Site Collections","text":" - It is a boundary for navigation which means navigation is not shared across site collections. To visually tie together your site collections in a \u201cvirtual hierarchy\u201d (i.e. navigation), you will need to handle this separately. (Code, manually configured, etc.) **See my comment about the new SharePoint Hub site below to address this disadvantage however which will turn this into an advantage where you can \u2018plug and play\u2019 your site collections into whatever kind of navigation is required.
- Content types and site columns can be defined at a site collection level but cannot be easily shared across site collections. The Content Type hub is a feature built with the intent of this, but in my experience it has some usability issues, particularly in SharePoint Online.
- If you are a small company, you may find it difficult to manage multiple site collections if you have advanced branding, navigation, feature requirements.
"},{"location":"articles/sitecollection-versus-subsite/#my-thoughts","title":"My thoughts","text":"Let\u2019s get back to the quote from Ignite\u2026 why are subsites the spawn of the devil?
Generally speaking, it\u2019s hard to argue with the fact that site collections are more flexible. Each site collection can be viewed as a granular \u2018unit of work\u2019. They allow you to control permissions, features, storage, branding and target data protection and retention controls at a more targeted level. A flat architecture like this allows you to \u2018plug and play\u2019 site collections into whatever kind of navigational hierarchy is required \u2013 the announcement of the SharePoint Hub site at Microsoft Ignite is a feature being built to allow you to build this navigation thru the User Interface. You will be able to associate a site collection with a SharePoint Hub by the click of a button and easily move it from one Hub to another if required. This is great news.
Source: https://joannecklein.com/2017/11/03/sharepoint-site-collection-advantages/
"},{"location":"deployment/guide/","title":"Deployment","text":" - Lessons learned from deploying my first full-stack web application
"},{"location":"js/guide/","title":"Guide","text":""},{"location":"js/guide/#ref","title":"Ref","text":" - https://developer.mozilla.org/en-US/docs/Web/JavaScript
"},{"location":"js/guide/#styleguide","title":"Styleguide","text":" - https://google.github.io/styleguide/jsguide.html
- https://github.com/airbnb/javascript
- http://2ality.com/2011/10/javascript-overview.html
"},{"location":"js/guide/#books","title":"Books","text":" - Front-End Developer Handbook 2018
- Front-End Developer Handbook 2018
- You Don't Know JS
"},{"location":"js/guide/#arrays","title":"Arrays","text":" - Eleven Ways To Learn Javascript Array Iteration Effectively
"},{"location":"js/guide/#technologie-radar","title":"Technologie Radar","text":" - https://lihsmi.ch/learning/2015/04/25/skill-radar-technology-radar.html
- https://github.com/schoeffm/techradar
- https://github.com/zalando/tech-radar
- https://github.com/bdargan/techradar
"},{"location":"js/pwa/","title":"PWA","text":""},{"location":"js/pwa/#overview","title":"Overview","text":" - https://scotch.io/tutorials/the-ultimate-guide-to-progressive-web-applications
"},{"location":"powershell/graphsdk-ps/","title":"Graph SDK Powershell","text":" - Microsoft Graph PowerShell SDK
"},{"location":"powershell/graphsdk-ps/#learning","title":"Learning","text":" - Get to know the Microsoft Graph PowerShell SDK better with the Graph Explorer
- Microsoft PowerShell Graph SDK \u2013 Woes
- Pluralsight: Using the Microsoft Graph PowerShell SDK
"},{"location":"powershell/graphsdk-ps/#security","title":"Security","text":" - Using a Certificate for Authentication with the Microsoft Graph SDK for PowerShell
"},{"location":"powershell/graphsdk-ps/#azure-automation","title":"Azure Automation","text":" - Using Azure Automation to Process Exchange Online Data with PowerShell
- Using the Microsoft Graph SDK for PowerShell with Azure Automation
- Updating Microsoft Graph PowerShell Modules for Azure Automation
"},{"location":"powershell/graphsdk-ps/#uddate-process","title":"Uddate Process","text":" - Updating Microsoft Graph PowerShell Modules for Azure Automation
"},{"location":"powershell/graphsdk-ps/#work","title":"Work","text":" - How to Connect to Microsoft Graph API from PowerShell
Check
Get-InstalledModule | Where-Object {$_.Name -match \"Microsoft.Graph\"}\n
Install
Install-Module -Name \"Microsoft.Graph\"\n
Update
Update-Module Microsoft.Graph\n
Uninstall (all)
Uninstall-Module Microsoft.Graph\n\n# Uninstall all Sub-modules of Graph\nGet-InstalledModule Microsoft.Graph.* | ForEach-Object { if($_.Name -ne \"Microsoft.Graph.Authentication\") {\n Uninstall-Module $_.Name }\n}\n\n# Uninstall the dependant module\nUninstall-Module Microsoft.Graph.Authentication\n
Connect with Delegated Access
# Connect to Microsoft Graph\nConnect-MgGraph -Scopes \"User.Read.All\"\n\n# Get All users\n$users = Get-MgUser\n$users | Select-Object DisplayName, UserPrincipalName, Mail\n
Connect with App ID and Certificate
# App Config\n$TenantID = \"<placeholder>\"\n$ClientID = \"<placeholder>\" # App ID\n$CertThumbPrint = \"<placeholder>\"\n\n# Connect to Microsoft Graph using App\nConnect-MgGraph -ClientID $ClientID -TenantId $TenantID -CertificateThumbprint $CertThumbPrint\n
Connect with Client Secret
# App Registration details\n$TenantID = \"<placeholder>\"\n$ClientID = \"<placeholder>\"\n$ClientSecret = \"<placeholder>\"\n\n$Body = @{\n Grant_Type = \"client_credentials\"\n Scope = \"https://graph.microsoft.com/.default\"\n Client_Id = $ClientID\n Client_Secret = $ClientSecret\n}\n\n$Connection = Invoke-RestMethod `\n -Uri https://login.microsoftonline.com/$TenantID/oauth2/v2.0/token `\n -Method POST `\n -Body $body\n\n# Get the Access Token\n$Token = $Connection.access_token\n\n# Connect to Microsoft Graph\nConnect-MgGraph -AccessToken $Token\n
"},{"location":"powershell/graphsdk-ps/#check-size","title":"Check Size","text":" - FUNCTION CANNOT BE CREATED BECAUSE FUNCTION CAPACITY 4096 HAS BEEN EXCEEDED FOR THIS SCOPE
Get-Variable Max*Count\n
$Modules = Get-Module -ListAvailable\n$ListModules = foreach ($Module in $Modules) {\n [PScustomObject] @{\n Name = $Module.Name\n Version = $Module.Version\n FunctionCount = ($Module.ExportedFunctions).Count\n }\n}\n$ListModules | Sort-Object -Property FunctionCount -Descending | Format-Table -AutoSize\n
"},{"location":"powershell/graphsdk-ps/#azuread-module-migration","title":"AzureAD Module Migration","text":" - PSAzureMigrationAdvisor
- Challenges of PowerShell Scripting with Microsoft 365
"},{"location":"powershell/pnp-ps/","title":"PnP Powershell","text":""},{"location":"powershell/pnp-ps/#information","title":"Information","text":" - New version of PnP PowerShell \u2013 v2.1.1
- Updating from PnP PowerShell 1.x to 2.x
"},{"location":"powershell/pnp-ps/#references","title":"References","text":" - Documentation
- Script Samples
- Script Samples - matrix
"},{"location":"powershell/pnp-ps/#security-authentication","title":"Security / Authentication","text":" - PnP PowerShell - Consent and Authentication
- Learn How Authentication Works in the latest PnP.PowerShell Module
- PnP PowerShell \u2013 take control of the service principal permissions
- Using Managed Identity with PnP PowerShell instead of SharePoint App-Only Principal
"},{"location":"powershell/pnp-ps/#tools-plugin","title":"Tools / Plugin","text":""},{"location":"powershell/pnp-ps/#login-with-an-application-admin","title":"Login with an Application admin","text":"-The required Office 365 role to run PnP Powershell with Scopes
"},{"location":"powershell/pnp-ps/#installation-options","title":"Installation Options","text":" - Running multiple versions of PnP-PowerShell
- Manage SharePoint & Microsoft Teams on PowerShell Core using the PnP.PowerShell module
- Making the move from SharePointPnPPowerShellOnline to PnP.PowerShell
"},{"location":"powershell/pnp-ps/#documentation","title":"Documentation","text":""},{"location":"powershell/pnp-ps/#specific-version","title":"Specific Version","text":" - Import a specific module from the installed SharePoint PnP PowerShell modules (2013, 2016, 2019 & Online)
- Run PnP PowerShell with saved module
"},{"location":"powershell/pnp-ps/#latest-version","title":"Latest Version","text":" - Latest Release Version
- Change Log
"},{"location":"powershell/pnp-ps/#check","title":"Check","text":"Get-InstalledModule | foreach { $b = (find-module $_.name).version ; if ($b -ne $_.version) { Write-host \"$($_.name) has an update from $($_.version) to $b\" } }\n
Get-Module SharePointPnPPowerShell* -ListAvailable | Select-Object Name,Version | Sort-Object Version -Descending\n
"},{"location":"powershell/pnp-ps/#update-module-to-the-latest-version","title":"Update Module to the latest version","text":"Update-Module SharePointPnPPowerShell*\n
"},{"location":"powershell/pnp-ps/#delete-the-old-version","title":"Delete the old version","text":"Get-InstalledModule -Name \"SharePointPnPPowerShellOnline\" -RequiredVersion 3.8.1904.0 | Uninstall-Module\n
"},{"location":"powershell/pnp-ps/#install-a-specific-version","title":"Install a specific version","text":"Install-Module -Name SharePointPnPPowerShellOnline -RequiredVersion 3.0.1808.1\n
"},{"location":"powershell/pnp-ps/#connect-with-app-permission","title":"Connect with App Permission","text":" - Introduction to Initialize-PnPPowerShellAuthentication cmdlet
Initialize-PnPPowerShellAuthentication -ApplicationName DemoApp -Tenant tenant.onmicrosoft.com -Store CurrentUser\n\n$url = \"https://tenant.sharepoint.com\"\n$clientid = \"<placeholder>\"\n$thumbprint = \"<placeholder>\"\n$tenant = 'tenant.onmicrosoft.com'\n\nConnect-PnPOnline -Url $url -ClientId $clientid -Thumbprint $thumbprint -Tenant $tenant\n
# Load PNP the Right Way\n$pnp = Get-Command Connect-Stuff -ErrorAction SilentlyContinue\nif (!$pnp) {Install-Module SharePointPnPPowerShellOnline -Force}\nImport-Module SharePointPnPPowerShellOnline\n
"},{"location":"powershell/pnp-ps/#list-all-commands","title":"List all commands","text":"Get-Command | ? { $_.ModuleName -eq \"SharePointPnPPowerShellOnline\" }\n
"},{"location":"powershell/pnp-ps/#create-guid","title":"Create Guid","text":"[guid]::NewGuid() | Select-Object -ExpandProperty Guid | clip\n
"},{"location":"powershell/pnp-ps/#delete-all-listitems","title":"Delete all listitems","text":"Get-PnPList -Identity Lists/MyList | Get-PnPListItem -PageSize 100 -ScriptBlock { Param($items) \n$items.Context.ExecuteQuery() } | % {$_.DeleteObject()}\n
"},{"location":"powershell/pnp-ps/#upload-documents","title":"Upload Documents","text":" - https://gallery.technet.microsoft.com/office/Upload-Multiple-Documents-4c4aa989
function UploadDocuments(){\nParam(\n [ValidateScript({If(Test-Path $_){$true}else{Throw \"Invalid path given: $_\"}})] \n $LocalFolderLocation,\n [String] \n $siteUrl,\n [String]\n $documentLibraryName\n)\nProcess{\n $path = $LocalFolderLocation.TrimEnd('\\')\n\n Write-Host \"Provided Site :\"$siteUrl -ForegroundColor Green\n Write-Host \"Provided Path :\"$path -ForegroundColor Green\n Write-Host \"Provided Document Library name :\"$documentLibraryName -ForegroundColor Green\n\n try{\n $credentials = Get-Credential\n\n Connect-PnPOnline -Url $siteUrl -CreateDrive -Credentials $credentials\n\n $file = Get-ChildItem -Path $LocalFolderLocation -Recurse\n $i = 0;\n Write-Host \"Uploading documents to Site..\" -ForegroundColor Cyan\n (dir $path -Recurse) | %{\n try{\n $i++\n if($_.GetType().Name -eq \"FileInfo\"){\n $SPFolderName = $documentLibraryName + $_.DirectoryName.Substring($path.Length);\n $status = \"Uploading Files :'\" + $_.Name + \"' to Location :\" + $SPFolderName\n Write-Progress -activity \"Uploading Documents..\" -status $status -PercentComplete (($i / $file.length) * 100)\n $te = Add-PnPFile -Path $_.FullName -Folder $SPFolderName\n } \n }\n catch{\n }\n }\n }\n catch{\n Write-Host $_.Exception.Message -ForegroundColor Red\n }\n\n }\n}\n\n\n#UploadDocuments -LocalFolderLocation {Local Folder Location} -siteUrl {Site collection URL} -documentLibraryName {Document Library Name}\n
"},{"location":"powershell/pnp-ps/#site-classification","title":"Site Classification","text":" - https://www.jijitechnologies.com/blogs/site-classification-using-pnp-powershell
Connect-PnPOnline -Scopes \"Directory.ReadWrite.All\"\n
Enable-PnPSiteClassification -Classifications \"HBI\",\"LBI\",\"Top Secret\" -UsageGuidelinesUrl ```\n\"http://aka.ms/sppnp\" -DefaultClassification \"HBI\"\n
Add-PnPSiteClassification -Classifications \"SBI\",\"MBI\"\n
Remove-PnPSiteClassification -Classifications \"SBI\"\n
Update-PnPSiteClassification -Classifications \"HBI\",\"LBI\",\"Top Secret\" -UsageGuidelinesUrl http://aka.ms/sppnp\" -DefaultClassification \"HBI\"\n
Disable-PnPSiteClassification\n
"},{"location":"powershell/pnp-ps/#tips","title":"Tips","text":" - Add QuickLinks with powershell-pnp
"},{"location":"powershell/pnp-ps/#documents-list","title":"Documents List","text":" - Change the New Menu in SharePoint Online Documents List
"},{"location":"powershell/pnp-ps/#list-properties","title":"List Properties","text":" - Finding Missing Properties in PnP PowerShell
Connect-PnPOnline -Url https://toddklindt.sharepoint.com/sites/8884aced -Credentials Me\nGet-PnPView -List Documents\nGet-PnPView -List Documents -Identity 3c4126aa-d2fe-4b57-9a70-e03ebb9c76ef\n$view = Get-PnPView -List Documents -Identity 3c4126aa-d2fe-4b57-9a70-e03ebb9c76ef\n$view\n$view | select *\n$view.ViewQuery\nGet-PnPProperty -ClientObject $view -Property ViewQuery\n$view.ViewQuery\n$view\n$view | select *\n
"},{"location":"powershell/pnp-ps/#fields","title":"Fields","text":" - How to: Provision Lookup Columns and Projected Fields using PnP PowerShell
- PnPPowerShellLookupColumns
- Add-PNPField: Add SharePoint columns with PowerShell
"},{"location":"powershell/pnp-ps/#copy-list","title":"Copy-List","text":" - Copy a SharePoint list with PnP PowerShell
"},{"location":"powershell/powerapps/","title":"Teams Powershell","text":" - PowerShell support for Power Apps
- PowerShell Cmdlets for PowerApps and Flow creators and administrators
"},{"location":"powershell/powerapps/#check-version","title":"Check Version","text":"Latest Version
- History - Microsoft.PowerApps.Administration.PowerShell
Get-Module Microsoft.PowerApps* -ListAvailable | Select-Object Name,Version | Sort-Object Version -Descending\n
"},{"location":"powershell/powerapps/#update-module-to-latest-version","title":"Update Module to latest version","text":"Update-Module Microsoft.PowerApps*\n
"},{"location":"powershell/powerapps/#delete-old-version","title":"Delete old version","text":"# Admin\nGet-InstalledModule -Name \"Microsoft.PowerApps.Administration.PowerShell\" -RequiredVersion 2.0.56 | Uninstall-Module\n\n## Maker\nGet-InstalledModule -Name \"Microsoft.PowerApps.PowerShell\" -RequiredVersion 1.0.9 | Uninstall-Module\n
"},{"location":"powershell/powerapps/#connect","title":"Connect","text":"Add-PowerAppsAccount\n
"},{"location":"powershell/powerapps/#disconnect","title":"Disconnect","text":""},{"location":"powershell/powershell/","title":"Links","text":""},{"location":"powershell/powershell/#profile","title":"Profile","text":"code $PROFILE\n
Import-Module -Name CLI.Microsoft365.PowerShell.Predictor\nImport-Module posh-git\nImport-Module -Name Terminal-Icons\noh-my-posh init pwsh --config \"$env:POSH_THEMES_PATH/jandedobbeleer.omp.json\" | Invoke-Expression\n
- My Ultimate PowerShell prompt with Oh My Posh and the Windows Terminal
- Sanselman - PowerShell_profile
"},{"location":"powershell/powershell/#resources","title":"Resources","text":" - Windows PowerShell
- The PowerShell Gallery
- janikvonrotz-awesome-powershell
- How to: SnipScripts
- Andres Bohren - PowerShellScripts
- Report on Microsoft 365
- Office 365 for IT Pros PowerShell examples
- admindroid-community
"},{"location":"powershell/powershell/#syntax","title":"Syntax","text":" - Powershell Best Practices
- About Preference Variables
- powershell basic cheat sheet
- powershell-ref
- PowerShell Cheat Sheet
- awesome-powershell
- Highway to PowerShell - Ep 1
- PowerShellGeek Quickreference
Get-Command -Name Get-PnPSite -Syntax\n
"},{"location":"powershell/powershell/#hashtable","title":"Hashtable","text":" - Everything you wanted to know about hashtables
"},{"location":"powershell/powershell/#coding-tips","title":"Coding Tips","text":" - Backticks vs. Splatting vs. Class Objects
- 10 suggestions to improve your next PowerShell script
- PowerShell Tips & Tricks / jdhitsolutions
"},{"location":"powershell/powershell/#testing-tips","title":"Testing Tips","text":" - Performing Static Code Analysis on PowerShell Module and Scripts
"},{"location":"powershell/powershell/#performance-tips","title":"Performance Tips","text":" - PowerShell performance tips
"},{"location":"powershell/powershell/#vscode-settings","title":"VS.Code Settings","text":" - How To Make Visual Studio Code Look And Behave Like The PowerShell ISE
"},{"location":"powershell/powershell/#blogs","title":"Blogs","text":""},{"location":"powershell/powershell/#office-365-groups","title":"Office 365 Groups","text":" - Adding a New Office 365 Group to an Existing (Classic) SharePoint Online Site
- Useful PowerShell cmdlets to administer Office 365 Groups
- MY MOST USED POWERSHELL SCRIPTS FOR MANAGING SHAREPOINT ONLINE
- Undocumented Features
"},{"location":"powershell/powershell/#sharepoint-2016","title":"SharePoint 2016","text":" - https://github.com/harbars/PnP-Tools/tree/master/Scripts
- https://github.com/harbars/SPAT16
"},{"location":"powershell/powershell/#modules","title":"Modules","text":" - http://bobmixon.com/2018/06/powershell-and-sharepoint-modules-part-1/
- https://github.com/mikefrobbins/Plaster/tree/master/Template
$env:PSModulePath\n(Get-Module -ListAvailable Pnp.*).path\n\nGet-InstalledModule | select name, version\n
"},{"location":"powershell/powershell/#slides","title":"Slides","text":" - Code & Slides from my Presentations
"},{"location":"powershell/powershell/#azuread","title":"AzureAD","text":" - The PowerShell Gallery- Overview
- Powershellgallery - Module - AzureAD
- Get Azure AD audit and sign-in Logs using PowerShell and AzureADPreview module
- How to Upgrade Office 365 PowerShell Scripts to Use the Graph API
Install-Module -Name AzureAD\n
"},{"location":"powershell/powershell/#loaded-modules","title":"Loaded Modules","text":" - How to list all of the assemblies loaded in a PowerShell session?
[System.AppDomain]::CurrentDomain.GetAssemblies() | Where-Object Location | Sort-Object -Property FullName | Select-Object -Property FullName, Location, GlobalAssemblyCache, IsFullyTrusted | Out-GridView\n
"},{"location":"powershell/spo-ps/","title":"SPO Powershell","text":" - SPO Index
- Getting started with SharePoint Online Management Shell
"},{"location":"powershell/spo-ps/#check-version","title":"Check Version","text":"Latest Version - https://www.powershellgallery.com/packages/Microsoft.Online.SharePoint.PowerShell/16.0.8119.0
Get-Module Microsoft.Online.SharePoint.PowerShell* -ListAvailable | Select-Object Name,Version | Sort-Object Version -Descending\n
"},{"location":"powershell/spo-ps/#update-module-to-the-latest-version","title":"Update Module to the latest version","text":"Update-Module Microsoft.Online.SharePoint.PowerShell\n
"},{"location":"powershell/spo-ps/#delete-the-old-version","title":"Delete the old version","text":"Get-InstalledModule -Name \"Microsoft.Online.SharePoint.PowerShell\" -RequiredVersion 16.0.8119.0 | Uninstall-Module\n
"},{"location":"powershell/spo-ps/#check-different-file-version","title":"Check Different File Version","text":" - The term \u2018Connect-SPOService\u2019 is not recognized
Get-ChildItem -Path 'C:\\Program Files\\WindowsPowerShell\\Modules\\Microsoft.Online.SharePoint.PowerShell\\*Microsoft.SharePoint*.dll' -Recurse | ft Name,@{Label=\"Version\";Expression={$_.VersionInfo.FileVersion}} -AutoSize\n\n# Search in GAC_MSIL\nGet-ChildItem -Path C:\\Windows\\Microsoft.NET\\assembly\\GAC_MSIL\\*Microsoft.SharePoint*.dll -Recurse | ft Name,@{Label=\"Version\";Expression={$_.VersionInfo.FileVersion}} -AutoSize\n
"},{"location":"powershell/spo-ps/#credential-manager","title":"Credential Manager","text":" - How-to-use-the-Windows-Credential-Manager-to-ease-authentication-with-PnP-PowerShell
"},{"location":"powershell/spo-ps/#connect","title":"Connect","text":" - connecting-to-all-office-365-services-with-powershell-and-multi-factor-authentication
- Connect to Office 365/Exchange Services Functions
Connect-SPOService https://devro-admin.sharepoint.com -Credential admin@devro.onmicrosoft.com\n
"},{"location":"powershell/spo-ps/#disconnect","title":"Disconnect","text":"Disconnect-SPOService\n
"},{"location":"powershell/spo-ps/#uls-correlation-id","title":"ULS-Correlation ID","text":"get-splogevent -starttime (get-date).addminutes(-20) | where-object { $_.correlation -eq \"e434f79b-68bb-40d2-0000-03a47eae1bf9\" } | fl message > c:\\errors1.txt\n
"},{"location":"powershell/spo-ps/#security","title":"Security","text":" - SPO Authentication in Powershell for CSOM when Legacy Authentication is disabled for tenant or Multi Factor Authentication is enabled for user
- sharepoint-framework-and-microsoft-graph-access-%E2%80%93-convenient-but-be-very-careful
get-sposite | ?{$_.DenyAddAndCustomizePages -eq 'Disabled'}\n ```\n\n## Ressources\n\n- [resources-to-learn-powershell-for-office-365](https://absolute-sharepoint.com/2018/03/resources-to-learn-powershell-for-office-365.html)\n\n## Tenant Configuration\n\n### Remove Feedback Button\n\n```Powershell\nSet-SPOTenant -UserVoiceForFeedbackEnabled:$false\n
"},{"location":"powershell/teams/","title":"Teams Powershell","text":" - PowerShell Reference for Office Products
"},{"location":"powershell/teams/#check-version","title":"Check Version","text":"Latest Version
- https://www.powershellgallery.com/packages/MicrosoftTeams/0.9.6
Get-Module MicrosoftTeams* -ListAvailable | Select-Object Name,Version | Sort-Object Version -Descending\n
"},{"location":"powershell/teams/#update-module-to-latest-version","title":"Update Module to latest version","text":"Update-Module MicrosoftTeams\n
"},{"location":"powershell/teams/#delete-old-version","title":"Delete old version","text":"Get-InstalledModule -Name \"MicrosoftTeams\" -RequiredVersion 0.9.0 | Uninstall-Module\n
"},{"location":"powershell/teams/#connect","title":"Connect","text":" - https://docs.microsoft.com/en-us/powershell/module/teams/connect-microsoftteams?view=teams-ps
"},{"location":"powershell/teams/#disconnect","title":"Disconnect","text":" - https://docs.microsoft.com/en-us/powershell/module/teams/disconnect-microsoftteams?view=teams-ps
"},{"location":"powershell/teams/#teamsmanagment","title":"Teamsmanagment","text":" - Managing Teams \u2013 Movers and Leavers
- TeamsManagement Powershell
- Replace the membership of a user in a Microsoft Group or Microsoft Team
- Managing Microsoft Teams using the Microsoft Graph PowerShell
"},{"location":"rezepte/kochtips/","title":"Kochtips","text":""},{"location":"rezepte/kochtips/#salzkartoffel","title":"Salzkartoffel","text":" - Grundrezept: Salzkartoffeln
"},{"location":"rezepte/kochtips/#salate","title":"Salate","text":" - Schwarze Linesen mit Zitonen
"},{"location":"security/learning/","title":"Security","text":""},{"location":"security/learning/#check-pw","title":"Check PW","text":" - NCSC Check Tool
- haveibeenpwned
- Is someone spying on you?
"},{"location":"security/learning/#training","title":"Training","text":" - Resources for Microsoft Security Exams
- Microsoft Security Ninja Training
"},{"location":"security/learning/#azure","title":"Azure","text":""},{"location":"security/learning/#azure-ad-breached","title":"Azure AD breached","text":" - My Azure AD has been breached! What now?
- DCToolbox PowerShell Module for Microsoft 365 Security, Conditional Access Automation, and more
"},{"location":"security/learning/#azure-sentinel","title":"Azure Sentinel","text":" - Monitor Office 365 Logs from Azure Sentinel
"},{"location":"security/learning/#resources","title":"Resources","text":" - OWASP\u2122 Foundation
- danielmiessler - Web Application Security Testing Resources
- Hacking-Security-Ebooks
- PEN-200 The official OSCP certification course
- MITRE ATT&CK\u00ae globally-accessible knowledge base
"},{"location":"security/learning/#checklist","title":"Checklist","text":" - OWASP Testing Checklist
- Security KB Issues - portswigger.net
"},{"location":"security/learning/#tools","title":"Tools","text":" - Wireshark
- Website security check
- Advanced Web Security Proxy
- OWASP Zed Attack Proxy (ZAP)
- Burp
- RSA - Open Source Tools
- exploit-db.com
- Intro netstat
- Open Port Checking Tools in 2021
- Top 10 Vulnerability Scanning Tools in 2023
"},{"location":"security/learning/#firewall","title":"Firewall","text":" - Using PowerShell To Maintain Windows Firewall Rules For Remote Access
"},{"location":"security/learning/#sharepoint-onprem","title":"Sharepoint OnPrem","text":" - Penetration Testing SharePoint
"},{"location":"security/learning/#sharepoint-online","title":"SharePoint Online","text":" - Managing SharePoint Online Security: A Team Effort
- Managing External Guests in SharePoint vs Teams
"},{"location":"security/learning/#office-365-azuread","title":"Office 365 / AzureAD","text":" - Basic Security Set Up for Microsoft 365
- Office 365 Security overview
- Use tenant restrictions to manage access to SaaS cloud applications
- Detect and Remediate Illicit Consent Grants
- Preventing M365 app bypass MFA
- Fast and Free Incident Response Tools in Microsoft 365
- How to Discover New Audit Events in the Office 365 Audit Log (Including App Consents)
- Consent Grant Attack
- Azure AD - Attack and Defense Playbook
- SimuLand
- Azure AD access reviews
"},{"location":"security/learning/#file","title":"File","text":" - 6 locations where you can set security for files in SharePoint and Office 365
"},{"location":"security/learning/#spfx-tooling","title":"SPFx Tooling","text":" - Security Scanning a SharePoint Framework Solution
- Is JavaScript Safe for SharePoint
"},{"location":"security/learning/#lockfiles","title":"Lockfiles","text":" - Why npm lockfiles can be a security blindspot for injecting malicious modules
"},{"location":"security/learning/#block-websites","title":"Block websites","text":" - How to Block a Single Website and more
"},{"location":"security/learning/#cookies","title":"Cookies","text":" - SameSite cookies explained
"},{"location":"security/learning/#blogger-and-sites","title":"Blogger and Sites","text":" - https://splintercod3.blogspot.com/
- swisscybersecurity.net
"},{"location":"spfx/ace/","title":"ACE","text":""},{"location":"spfx/ace/#github-samples","title":"Github Samples","text":" - PnP: sp-dev-fx-aces
- PiaSys: Conferences-Samples
- PnP: spfx-reference-scenarios
"},{"location":"spfx/adaptive-cards/","title":"Adaptive Cards","text":""},{"location":"spfx/adaptive-cards/#reference","title":"Reference","text":" - adaptivecards.io
- Get started with Adaptive Cards
- Actionable Message Designer
"},{"location":"spfx/adaptive-cards/#samples","title":"Samples","text":" - Teamify with Adaptive Cards and Microsoft Flow
- Using MS Graph API and Adaptive Cards for Search/Render User Details with SPFx solutions | nakkeerann/navspfxsoln
"},{"location":"spfx/adaptive-cards/#community-demo","title":"Community Demo","text":" - Community Demo - Image Gallery Web Part Built with Adaptive Cards
- SharePoint Control to Render Adaptive Cards
- Episode #134 - Working with Adaptive Cards in SharePoint Framework
"},{"location":"spfx/adaptive-cards/#images","title":"Images","text":" - Display images in Adaptive Cards
"},{"location":"spfx/ai/","title":"AI","text":""},{"location":"spfx/ai/#azure-openai-service","title":"Azure OpenAI Service","text":" - Azure OpenAI Service products
- Azure OpenAI Service Documentation
- ChatGPT + Enterprise data with Azure OpenAI and Cognitive Search
"},{"location":"spfx/ai/#gpt-prompts","title":"GPT Prompts","text":" - Awesome ChatGPT Prompts
- Power Platform GPT Prompts
- How generative language models work
- Prompt engineering cheatsheet (for JavaScript developers)upate
"},{"location":"spfx/ai/#samples","title":"Samples","text":" - openai-samples
- M365AIMate - Microsoft Graph and .NET
- Intelligent Kiosk Sample
"},{"location":"spfx/ai/#learning","title":"Learning","text":" - 30 Days Of Azure AI Roadmap
- Prompt Engineering Guide
"},{"location":"spfx/ai/#semantic-kernel","title":"Semantic Kernel","text":" - Introducing Semantic Kernel: Building AI-Based Apps
- Hello, Semantic Kernel!
"},{"location":"spfx/ai/#text-analyse","title":"Text Analyse","text":" - Sentiment of comments given on a SharePoint page
"},{"location":"spfx/ai/#frameworks","title":"Frameworks","text":" - mendable.ai
- langchain.js
- LlamaIndex
"},{"location":"spfx/ai/#monitor-azure-openai-service","title":"Monitor Azure OpenAI Service","text":" - manage costs azure openai chatgpt
"},{"location":"spfx/architecture/","title":"Architecture","text":" - Microsoft cloud IT architecture resources
- Azure Architecture Center
- Common Solution Architecture Requirement Descriptions you can use
- Microsoft 365 Application Architecture Patterns
"},{"location":"spfx/architecture/#checklist-solution","title":"Checklist Solution","text":" - Question / Checklist SPFx Solution
- SharePoint Framework \u2013 new project checklist
- https://rencore.com/software/tools/sharepoint-customizations-guide/
"},{"location":"spfx/architecture/#user-settings","title":"User Settings","text":" - The easiest way to store user settings of your Microsoft 365 app
"},{"location":"spfx/architecture/#build-applications","title":"Build applications","text":" - Build applications on the Microsoft Cloud
"},{"location":"spfx/architecture/#template-and-icons","title":"Template and Icons","text":" - Microsoft 365 architecture templates and icons
"},{"location":"spfx/azure/","title":"Azure","text":" - Azure documentation
- Azure Active Directory fundamentals documentation
"},{"location":"spfx/azure/#azure-account-identity-services","title":"Azure Account / Identity services","text":" - Introduction to tokens
- What's the difference between a personal Microsoft account and a work or school account?
"},{"location":"spfx/azure/#administration-with-azure-cli","title":"Administration with Azure-CLI","text":" - The Azure Command-Line Interface (CLI)
"},{"location":"spfx/azure/#bicep","title":"Bicep","text":" - How to get started with deploying Azure resources with Bicep
"},{"location":"spfx/azure/#granting-access-using-sharepoint-app-only","title":"Granting access using SharePoint App-Only","text":" - Setting up an app-only principal with tenant permissions
"},{"location":"spfx/azure/#keyvault","title":"KeyVault","text":" - Use Azure KeyVault Secrets when accessing Microsoft Graph
- Handle certificates with Azure KeyVault when accessing SharePoint Online
- Using Azure KeyVault to Secure Graph API Automation Scripts
"},{"location":"spfx/azure/#azure-managed-identities","title":"Azure Managed Identities","text":" - Managed Identities With Azure Container Apps
- Authentication in Azure Automation with Managed Identity on SharePoint and Microsoft Graph
- Using Managed Identities to Connect to Microsoft 365 & Azure
"},{"location":"spfx/azure/#azure-logic-app","title":"Azure Logic App","text":" - How to transition from Power Automate to Logic Apps
- Choose the right integration and automation services in Azure
- Export flows from Power Automate and deploy to Azure Logic Apps
- The friendly SMS reminder with Logic Apps, Azure Functions + Key Vault
- Estimate storage costs for workflows in single-tenant Azure Logic Apps
- Get notified of changes in your tenant with Microsoft Graph, Azure Event Hubs and Logic Apps
"},{"location":"spfx/azure/#azure-automation","title":"Azure-Automation","text":" - SharePoint Online PnP PowerShell Provisioning using Flow and Azure Automation
- Using Azure Automation for Modern SharePoint Site Provisioning
- Fun with Azure Automation and Table Service REST API
- Build your PnP Site Provisioning with PowerShell in Azure Functions and run it from Flow
- PROVISIONING TEAMS WITH A SITE DESIGN, FLOW AND MICROSOFT GRAPH
- https://blog.yannickreekmans.be/automate-governance-in-microsoft-teams-the-result/
- Provision Microsoft Teams with Azure Automation \u2013 Part I
- Provision Microsoft Teams with Azure Automation \u2013 Part II
- Community Demo - Using Azure automation for provisioning of your SharePoint and Teams structures
- From start to finish: How to create your modern SharePoint site provisioning solution - BRK3273
- BUILDING A MODERN FLAT PROJECT HUB USING SITE DESIGNS
- office365-azureautomation
- office365-azureautomation-runbooks
- Azure automation tips & tricks
- Azure automation limits
- Working with Microsoft Teams PowerShell in Azure Automation
"},{"location":"spfx/azure/#azure-automation-teams-powershell","title":"Azure Automation Teams Powershell","text":" - Working with Microsoft Teams PowerShell in Azure Automation
"},{"location":"spfx/azure/#azure-functions","title":"Azure-Functions","text":" - AUTO-CONFIGURING SHAREPOINT SITES WITH SITE TEMPLATES \u2014 THE SETUP FROM START TO FINISH
- HOW TO USE PNP POWERSHELL ON AZURE FUNCTIONS WITH APPLICATION PERMISSIONS
- An Azure Function to keep other Functions/URLs warmed up
- 3 ways to create and debug Azure Functions \u2013 CLI VS Code & Visual Studio
- Putting some more FUN into Azure Functions, Managed Identity & Microsoft Graph
- SharePoint PDF Merge Function
- Running .NET Function Apps or App Services accessing Microsoft 365
"},{"location":"spfx/azure/#app-register","title":"App Register","text":" - Running a PowerShell script in the cloud with an Azure Function, PnP and the Graph
- Control Office 365 Group creation \u2013 a simple no-code solution
"},{"location":"spfx/azure/#azure-services","title":"Azure Services","text":" - Get the Azure Quick Start Guide for .NET Developers
- 10 Azure Cloud services that every Developers, Consultant, and Architects should Know and Learn it well \u2013 Part I
- 10 Azure services that every .NET Developers, Consultant, and Architects should know and learn it well \u2013 Part II
"},{"location":"spfx/azure/#azure-log-analytics","title":"Azure Log Analytics","text":""},{"location":"spfx/azure/#tips","title":"Tips","text":" - Azure Readiness Checklist
"},{"location":"spfx/azure/#token","title":"Token","text":""},{"location":"spfx/azure/#manage-group-settings","title":"Manage Group Settings","text":" - https://support.office.com/en-us/article/manage-who-can-create-office-365-groups-4c46c8cb-17d0-44b5-9776-005fced8e618
- https://docs.microsoft.com/en-us/azure/active-directory/active-directory-accessmanagement-groups-settings-cmdlets
- How to grant all employees access to a SharePoint site via Everyone except external users Group
- How to grant the Everyone claim to external users in Office 365
- Dynamische Gruppen klingen super!
"},{"location":"spfx/azure/#naming-policy","title":"Naming Policy","text":" - https://drewmadelung.com/category/office-365/groups/
"},{"location":"spfx/azure/#permission-reference","title":"Permission Reference","text":" - Connect to Azure AD-secured APIs in SharePoint Framework solutions
- Microsoft Graph permissions reference
- User_impersonation scope issue when working with SharePoint Framework API permissions
- Sites.Selected Permission using Azure AD App
- Running applications with limited SharePoint permissions - Resource Specific Consent (RSC)
"},{"location":"spfx/azure/#microsoft-identity-platform","title":"Microsoft identity platform","text":" - What is the Microsoft identity platform?
- OAuth 2.0 and OpenID Connect (OIDC) in the Microsoft identity platform
"},{"location":"spfx/azure/#security","title":"Security","text":" - Basic Security Set Up for Microsoft 365
- What is Conditional Access?
- Minimizing the Risk of Compromise
- Why Using App Secrets in Production is a Bad Idea
- Cloud Forensics using Hawk
"},{"location":"spfx/azure/#scripts","title":"Scripts","text":" - https://github.com/dmadelung/O365GroupsScripts/blob/master/DrewO365GroupsScripts%20-%20Azure%20AD%20Cmdlets
"},{"location":"spfx/azure/#remote-working","title":"Remote working","text":" - Practical guide to securing remote work using Microsoft 365 Business Premium
"},{"location":"spfx/azure/#office-365-management-activity-api-m365-audit-logs","title":"Office 365 Management Activity API (M365 Audit Logs)","text":" - Office 365 Management Activity API with Power Automate \u2013 Part One
- Search the audit log in the compliance center
- Detailed properties in the audit log
"},{"location":"spfx/azure/#azure-ad-cross-tenant-migration","title":"Azure AD Cross Tenant Migration","text":" - Getting started with Azure AD cross-tenant synchronization
"},{"location":"spfx/azure/#azure-ad-assessment-tools","title":"Azure AD Assessment Tools","text":" - Azure AD Assessment Guide
- Azure AD Exporter
- Microsoft Identity Tools PowerShell Module
- Identity Power Toys
- Microsoft Graph Permission Explorer
- Graph X-Ray
- Graph PowerShell Conversion Analyzer
"},{"location":"spfx/azure/#azure-storage","title":"Azure Storage","text":" - How to Transfer Files from Local system Folder to Azure Storage via SFTP
"},{"location":"spfx/backup/","title":"Backup","text":" - Introducing Microsoft 365 Backup and Microsoft 365 Archive
- office365itpros: Microsoft 365 Backup for SharePoint Online and Exchange Online
- office365itpros: Microsoft Briefs Partners about Microsoft 365 Backup and Microsoft 365 Archive Products
"},{"location":"spfx/blogger/","title":"Blogger","text":""},{"location":"spfx/blogger/#o365","title":"O365","text":" - patrickrodgers
- blog.josequinto.com
- tricky-sharepoint.blogspot.ch
- blog.arvosys.com
- techwithnakkeeran.com
- afrait.com
"},{"location":"spfx/blogger/#teams","title":"Teams","text":""},{"location":"spfx/blogger/#list-formatting","title":"List Formatting","text":" - sharepointhd.wordpress.com
"},{"location":"spfx/blogger/#onprem","title":"OnPrem","text":""},{"location":"spfx/bot/","title":"BOT","text":" - building-a-microsoft-teams-bot
- Integrating Bot Framework v4 bots to SharePoint using SharePoint Framework
"},{"location":"spfx/bot/#bot-framework-cognitive-service","title":"Bot Framework & Cognitive Service","text":""},{"location":"spfx/bot/#ai","title":"AI","text":" - Microsoft Build 2019 updates on Conversational AI
- Ignite 2019 News on the Conversational AI Platform
"},{"location":"spfx/bot/#qna-makers","title":"QnA Makers","text":" - QnA Maker Lessons Learned + Limits Infographic
"},{"location":"spfx/bot/#bot-framework-composer","title":"Bot Framework Composer","text":" - Bot Framework Composer - Github
- Bot Framework Composer - Weather Bot
"},{"location":"spfx/bot/#samples","title":"Samples","text":" - Add AtBot to your SharePoint site using SPFx
- Github Source - AtBot Protype
- Microsoft Bot Framework Web Chat
- react-chat-widget
- spfx-react-bot-qna
- Search for your SharePoint content from a bot using the Bot Framework, OAuth2 and Node.js
- SPFx MSAL Bot Extension
- Bot Framework v4 SPFX Web Part Released
- react-bot-framework
"},{"location":"spfx/bot/#power-virtual-agent","title":"Power Virtual Agent","text":" - How to: create #nocode bots to teams super-easily in 5 minutes using Power Virtual Agents app in Teams
"},{"location":"spfx/bot/#patterns","title":"Patterns","text":" - Transition conversations from bot to human
- Create interactive conversational bots for Microsoft Teams
- Chatbot Human Handover with Microsoft Teams
"},{"location":"spfx/bot/#create-bot-in-teams","title":"Create Bot in Teams","text":" - Episode #108 - Creating a Teams Bot with Yo Team
- Chatbots in Microsoft-Teams | Erstellen Sie mit Power Virtual Agents
- Make a simple bot using Webhooks in Teams
- teams-webhook-weatherbot-sample
"},{"location":"spfx/branding/","title":"Branding","text":""},{"location":"spfx/branding/#overview","title":"Overview","text":" - Branding SharePoint - The New Normal
- SharePoint design principles
- SharePoint Look Book
"},{"location":"spfx/branding/#docs","title":"Docs","text":" - Designing great SharePoint experiences
- Customizing the \"modern\" experiences in SharePoint Online
"},{"location":"spfx/branding/#css","title":"CSS","text":" - Ignite 2016 - Customizing and Branding SharePoint Online Team Sites Demos
- SPTechCon2016-SanFrancisco
- Einf\u00fcgen von Bildern im RTE steuern
- How to use Bootstrap in SharePoint Framework projects
- SPFx WebParts responsive to Modern Page sections
- Prevent SCSS from changing your CSS class names
- Applying Multiple CSS Classes in SharePoint Framework
"},{"location":"spfx/branding/#designing-header","title":"Designing Header","text":" - Designing SharePoint sites with beautiful headers
- Designing SharePoint sites with beautiful headers
"},{"location":"spfx/businessobjects/","title":"Business-Objects","text":""},{"location":"spfx/businessobjects/#async","title":"Async","text":" - Understand promises before you start using async/await
- https://blog.josequinto.com/2017/05/19/why-do-we-should-use-custom-business-objects-models-in-pnp-js-core/
- https://github.com/jquintozamora/spfx-react-sp-pnp-js-property-decorators
- https://sharepoint.stackexchange.com/questions/221325/how-to-enable-async-wait-in-spfx-typescript-tslint-missing-semicolon-ts1005
private async loadScripts(): Promise<void> {\n return new Promise<void>(async (resolve) => {\n if(this._context) {\n resolve();\n }\n\n const response = this.loadScript(layoutsUrl + 'init.js', 'Sod');\n resolve();\n });\n }\n
Load Data from SP-List Code
private async _loadList(): Promise<void> {\n this.setState({\n loading: true\n });\n let items = await pnp.sp.web.lists.getByTitle(\"Events\").items.select(\"Id\", \"Title\", \"SPFxDescription\", \"SPFxThumbnail\")\n .orderBy(\"Modified\", false).get();\n _items = items.map((item: IList, index: number) => {\n return {\n thumbnail: item.SPFxThumbnail != null ? item.SPFxThumbnail.Url : \"\",\n key: item.Id,\n name: item.Title,\n description: item.SPFxDescription\n }\n });\n this.setState({\n sortedItems: _items,\n columns: _buildColumns(),\n loading: false,\n newsFeedVisible: false\n });\n _lastQueryDate = moment();\n}\n
"},{"location":"spfx/classic/","title":"Classic sites","text":" - https://rasper87.wordpress.com/2018/04/24/provision-spfx-web-parts-to-classic-sites-part-1-include-spfx-assets-package-inside-wsp/
"},{"location":"spfx/column-formating/","title":"Column Formating","text":""},{"location":"spfx/column-formating/#reference","title":"Reference","text":" - Use column formatting to customize SharePoint
- Special string values
- Getting started with SharePoint\u2019s custom column formatting (Part 1)
- Getting started with SharePoint's custom view formatting (Part 2)
- Links about List Formating
"},{"location":"spfx/column-formating/#tools","title":"Tools","text":" - HTML To Formatter
- What\u2019s new in Column Formatter 1.2
- SharePoint Online CSS Classes
- Microsoft-Lists-Hub
"},{"location":"spfx/column-formating/#ressources","title":"Ressources","text":" - http://www.sharepointing.co.uk/2017/11/10/customise-sharepoint-online-columns-using-json
- http://warner.digital/columnformattingintroduction
- http://warner.digital/sharepointcolumnformattinggettingstartedpart1/
- http://warner.digital/sharepointcolumnformattinggettingstartedpart2/
- http://warner.digital/sharepointcolumnformattinggettingstartedpart3/
"},{"location":"spfx/column-formating/#samples","title":"Samples","text":" - PnP SharePoint List Formatting Samples
- Show Holidays/Events, with no of days to go using ListView Formatting
"},{"location":"spfx/column-formating/#add-scripts-for-formating","title":"Add Scripts for formating","text":" - SharePoint List Formatting Tabs
"},{"location":"spfx/column-formating/#view-formating","title":"View formating","text":" - How to create a current week view in Microsoft Lists
"},{"location":"spfx/communication-site/","title":"Communication Site","text":""},{"location":"spfx/communication-site/#sitecoloums-format","title":"SiteColoums Format","text":" - [Show me the news (pages)] (https://capacreative.co.uk/2018/10/16/show-me-the-news-pages/)
"},{"location":"spfx/configuration/","title":"Configuration","text":" - https://www.sharepointeurope.com/read-manipulate-spfx-configuration-values-code-like-boss/
"},{"location":"spfx/cortex/","title":"Project Cortex","text":""},{"location":"spfx/cortex/#overview","title":"Overview","text":" - SharePoint Developer Monthly Community Call - January 2020 - Cortex
"},{"location":"spfx/cosmos-db/","title":"Cosmos DB","text":""},{"location":"spfx/cosmos-db/#tips","title":"Tips","text":" - Things You Need to Know Before Building Applications With Azure Cosmos DB
- How to: Using managed identities to access Cosmos DB data via RBAC and disabling authentication via keys
"},{"location":"spfx/custom-web-api/","title":"Custom Web API","text":""},{"location":"spfx/custom-web-api/#securing","title":"Securing","text":" - Connect to API secured with Azure Active Directory
"},{"location":"spfx/custom-web-api/#samples","title":"Samples","text":"-SharePoint add-in, custom Web API and SPFx (v1.1)
"},{"location":"spfx/debug/","title":"Debug","text":""},{"location":"spfx/debug/#debug-tricks","title":"Debug Tricks","text":""},{"location":"spfx/debug/#webcast","title":"Webcast","text":" - PnP Webcast - Debugging SharePoint Framework Solutions
"},{"location":"spfx/debug/#tips","title":"Tips","text":" - Testing and debugging your SPFx solutions in production without causing any impact
- SharePoint Framework bookmarklet tool for quick and easy debugging
- debug-production-version-sharepoint-framework-solution
- how-debug-sharepoint-framework-webpart-visual-studio-code
- debug-in-vscode
- SPFx-breakpoints-and-debugging-from-Visual-Studio-Code
- quick-tip-easily-test-sharepoint
- testing-and-debugging-your-spfx-solutions-in-production-without-causing-any-impact
- Be schizophrenic at debugging SPFx too
- SPFx/React DEBUG vs PRODUCTION builds
"},{"location":"spfx/debug/#exclude-mock-data","title":"Exclude mock data","text":" - https://www.eliostruyf.com/exclude-your-mock-data-and-other-modules-from-your-production-bundle-in-spfx/
"},{"location":"spfx/debug/#azure-token","title":"Azure Token","text":" - Easy trick to test your Azure Active Directory returned ID Tokens
"},{"location":"spfx/delve/","title":"Delve","text":""},{"location":"spfx/delve/#search-konfiguration","title":"Search Konfiguration","text":" - HIDING FROM DELVE IN OFFICE 365
"},{"location":"spfx/deployment/","title":"Deployment","text":""},{"location":"spfx/deployment/#app-catalog","title":"App Catalog","text":" - SharePoint App Catalog Development Tips
"},{"location":"spfx/deployment/#azure-devops-azure-pipline","title":"Azure DevOps / Azure Pipline","text":" - Getting Started with Git and Azure DevOps | Getting Started with Git and Azure DevOps: The Ultimate Guide
- Feature Branch Workflow and Pull Requests
- Setting up Azure DevOps Pipelines for SharePoint Framework solutions
- Setting up multiple environments with your DevOps pipeline
- Implement Continuous Integration and Continuous deployment using Azure DevOps
- Managing projects in a modern world (Part 1)
- Walkthrough: use Azure DevOps with SPFx, GitFlow and GitVersion
- How to: Setup CI / CD in Azure DevOps with the help of SPFx Generator
- Automate Building, Testing and Deploying SharePoint Framework Projects with Azure Pipelines in Four Steps
- How to: Use PnP.PowerShell to deploy SharePoint apps with Azure DevOps
"},{"location":"spfx/deployment/#alm","title":"ALM","text":" - node-sp-alm
- alm-for-widget-solutions
- http://julieturner.net/2016/09/code-creep-sharepoint-cdn/
- http://yannickborghmans.com/2017/12/28/sharepoint-application-lifecycle-management-api-how-to-use-it-in-your-code/
- https://github.com/estruyf/node-sp-alm
- https://docs.microsoft.com/en-us/sharepoint/dev/apis/alm-api-for-spfx-add-ins
- https://www.npmjs.com/package/node-sp-alm
- ALM API and installSolution SiteScript Action Demo
"},{"location":"spfx/deployment/#arm","title":"ARM","text":" - Reusable ARM template for Web Application
- GitHub - ARMTemplates
- Azure ARM Templates Explored
"},{"location":"spfx/deployment/#cicd","title":"CI/CD","text":" - CI/CD with SharePoint Framework (SPFx)
- Implement Continuous Integration and Continuous deployment using Azure DevOps
- Implement CI/CD with Office 365 CLI for SPFx Solution for MS Teams
- Apply a DevOps process to your SPFx project (Part 1)
- Apply a DevOps process to your SPFx project (Part 2)
- Apply a DevOps process to your SPFx project (Part 3)
- CI/CD for SPFx Deployment in Azure DevOps using M365 CLI
"},{"location":"spfx/deployment/#deployment-to-cdn","title":"Deployment to CDN","text":" - Choosing a CDN for SharePoint client-side solutions
- Deploy SPFx WebParts To Office 365 Public CDN
- Add Office 365 CDN rule to have a document library for each SharePoint site
- Office 365 Content Delivery Network (CDN) Quickstart
write-manifests.json
{\n\"cdnBasePath\": \"https://publiccdn.sharepointonline.com/cloud67.sharepoint.com/cdn/topnavmenu\"\n}\n
"},{"location":"spfx/deployment/#deployment-to-sp-library","title":"Deployment to SP Library","text":" - Deploy SPFx WebParts to SharePoint Library
"},{"location":"spfx/deployment/#deployment-to-azure-storage","title":"Deployment to Azure Storage","text":" - Automate publishing process of MkDocs to Static Website hosting in Azure Storage with VSTS
- Deploy SPFx WebParts To Azure CDN
"},{"location":"spfx/deployment/#appsettings","title":"AppSettings","text":" - SharePoint Framework app settings
- AppSettings in SharePoint Framework (SPFx) and Staging
"},{"location":"spfx/deployment/#automate-project-documentation","title":"Automate Project Documentation","text":" - DocsFx in SPO
- DocFx
- Automate project documentation from Azure DevOps to SharePoint on Microsoft 365
- The static site generator for SharePoint
"},{"location":"spfx/dev-ops/","title":"Dev-Ops","text":""},{"location":"spfx/dev-ops/#tips-tricks","title":"Tips & Tricks","text":"SPFx unit tests and code coverage quality gates in Azure DevOps \u2013 Velin Georgiev Apply a DevOps process to your SPFx project (Part 1)
"},{"location":"spfx/dev-ops/#sample","title":"Sample","text":""},{"location":"spfx/dev-ops/#jest-setup","title":"Jest Setup","text":"https://blog.velingeorgiev.com/unit-test-your-sharepoint-framework-solution-with-jest https://www.youtube.com/watch?v=iDt7MJX9Lj0&t=20s https://www.youtube.com/watch?v=lFkNqcf-Thg https://www.eliostruyf.com/sharepoint-framework-unit-tests-with-jest/
"},{"location":"spfx/dev-ops/#devops-pipelines-demos","title":"DevOps pipelines demos","text":"http://bit.ly/pnp-devops-1 http://bit.ly/pnp-devops-2 http://bit.ly/pnp-devops-3 http://bit.ly/pnp-devops-4
"},{"location":"spfx/dev-ops/#unit-tests","title":"Unit Tests","text":" - SharePoint Framework unit tests and code coverage quality gates in Azure DevOps
"},{"location":"spfx/docker/","title":"Docker","text":""},{"location":"spfx/docker/#spfx-images","title":"SPFx Images","text":" - SPFx Docker image for your team
- SPFx v1.5.0 Docker image available with some caveats
- SPFx GitHub Codespaces Container
"},{"location":"spfx/docker/#tips","title":"Tips","text":" - Develop with Docker
- A Docker Image for PnP SPFx Projects
"},{"location":"spfx/docker/#devcontainer","title":"DevContainer","text":" - Using custom certificates when debugging SPFx Solutions
"},{"location":"spfx/documentsets/","title":"Document Sets","text":""},{"location":"spfx/documentsets/#overview","title":"Overview","text":" - Introduction to Document Sets
- Document Sets for Fast Legacy Process Automation
- Document sets \u2013 the hidden gem of SharePoint
- Enabling Document Sets in SharePoint Online Sites
- Modern Document Sets
"},{"location":"spfx/documentsets/#issues","title":"Issues","text":" - SharePoint Online JavaScript creates folder instead of document set
- Document Set created programmatically not working anymore since 12 Jan 2021
"},{"location":"spfx/documentsets/#tools","title":"Tools","text":""},{"location":"spfx/documentsets/#metalogix-content-matrix-87","title":"Metalogix Content Matrix 8.7","text":" - How Document Sets are Migrated
- List Content Options
"},{"location":"spfx/events/","title":"Events/meetings","text":""},{"location":"spfx/events/#how-to-create-online-meetingsevents","title":"How to create online meetings/events","text":" - How to present at online meetings and events like an ignite superstar
- From PowerPoint to Demos Easily with Desktops
- How to Create Great Tech Demos and Presentations
"},{"location":"spfx/extensions/","title":"Extensions","text":""},{"location":"spfx/extensions/#forms-list-layout-formating","title":"Forms List Layout Formating","text":" - Configuring the Layout of SharePoint Forms
"},{"location":"spfx/extensions/#custom-forms-extensions","title":"Custom Forms Extensions","text":" - Building a SharePoint New Site Form Look-Alike
- AddValidateUpdateItemUsingPath deep dive
"},{"location":"spfx/extensions/#tipps","title":"Tipps","text":" - How to properly add an Application Customizer to an existing SPFx Web Part Project
"},{"location":"spfx/extensions/#samples","title":"Samples","text":" - React-application-profile-meter
- How to create news ticker, SPFx-extension
"},{"location":"spfx/extensions/#full-page","title":"Full Page","text":" - SharePoint Full Page Canvas App
- spfx-appcust-removeFeeback
- React slider field customizer
- Check the page display mode from within your SharePoint Framework extensions
"},{"location":"spfx/extensions/#site-footer","title":"Site footer","text":" - SharePoint Site Footer
- SharePoint Framework custom header and footer application customizer extension
"},{"location":"spfx/extensions/#listview","title":"ListView","text":" - Showing or hiding SharePoint Framework ListView custom actions based on permissions and selected items
- SPFX ListView Command Set and Panel
- Let users get a simple link to a document or folder
- Create Modern Page Model with PnP/PnPjs
- Create ECB Menu Items
- A modern Save List as Template
"},{"location":"spfx/extensions/#bots","title":"Bots","text":" - Add AtBot to your SharePoint site using SPFx
"},{"location":"spfx/extensions/#clarity","title":"Clarity","text":" - Microsoft SharePoint & Clarity
- Power Platform Canvas Apps & Clarity
"},{"location":"spfx/extensions/#comments","title":"Comments","text":" - Receive comment notifications by email in Modern SharePoint Pages
- Github: Receive comment notifications on Modern SharePoint pages by email
"},{"location":"spfx/extensions/#change-browser-favicon-icon","title":"Change browser favicon icon","text":" - Change favicon on Modern SharePoint sites
- SPFx-favicon
"},{"location":"spfx/extensions/#google-analytics","title":"Google Analytics","text":" - Tracking code in Tenant Wide Extensions list
- SPFx-Google-Analytics
- How to add Google Tag Manager to modern SharePoint
"},{"location":"spfx/extensions/#matamo-piwik-analytics","title":"Matamo (Piwik) Analytics","text":" - Setting up usage analytics to Modern SharePoint using Matomo Analytics and SharePoint Framework
"},{"location":"spfx/extensions/#inject-css","title":"Inject CSS","text":" - Inject Custom CSS on SharePoint Modern Pages using SPFx Application Extensions
- Add Google Analytics to SharePoint modern pages
- Whitespace \u2013 Regain distraction-free working in SharePoint
"},{"location":"spfx/extensions/#spa","title":"SPA","text":" - Single Page App In SharePoint Using React
"},{"location":"spfx/extensions/#navigations","title":"Navigations","text":" - Handling navigation in a SharePoint Framework application customizer
- SPFx Side Navigation Project for Modern Sites
"},{"location":"spfx/extensions/#placeholders","title":"Placeholders","text":" - Safely using Placeholders in an extension
private _topPlaceholder : PlaceholderContent;\npublic onInit(void){\n this.context.placeholderProvider.changedEvent.add(this, this._handlePlaceholderChange.bind(this));\n}\n\nprivate _handlePlaceholderChange(){\n if (!this._topPlaceholder)\n {\n // We don't have a placeholder populated yet. Let's try and get it.\n this._topPlaceholder = this.context.placeholderProvider.tryCreateContent(PlaceholderName.Top);\n } else {\n // We have a placeholder - let's make sure that it still exists.\n let index:number = this.context.placeholderProvider.placeholderNames.indexOf(PlaceholderName.Top);\n if ( index < 0)\n {\n // The placeholder is no longer here.\n this._topPlaceholder.dispose();\n this._topPlaceholder = undefined;\n }\n }\n if ( this._topPlaceholder )\n {\n this._topPlaceholder.innerText = 'Hello World!';\n }\n}\n
"},{"location":"spfx/flow/","title":"Power Automate (aka. Flow)","text":""},{"location":"spfx/flow/#support","title":"Support","text":" - Troubleshooting a flow
- Microsoft Power Automate Community
"},{"location":"spfx/flow/#video","title":"Video","text":" - Microsoft Flow Conference
"},{"location":"spfx/flow/#api","title":"API","text":" - Working with APIs in Power Platform for beginners
"},{"location":"spfx/flow/#connectors","title":"Connectors","text":" - What you should know about building Microsoft Flow connectors
- Working with Custom Connectors in Power Platform for beginners
"},{"location":"spfx/flow/#limits","title":"Limits","text":" - Limits and configuration in Power Automate
- Power Automate and Flow Connector limits
- Microsoft Flow \u2013 The hidden gems, are you aware of all of these
- Microsoft Flow \u2013 This is the limit!
"},{"location":"spfx/flow/#admin-security","title":"Admin Security","text":" - Management of Flows
- Power Automate Security
"},{"location":"spfx/flow/#export-import-flows","title":"Export / Import Flows","text":" - Export and import your flows across environments with packaging
- Flow & Power Apps Migrator
"},{"location":"spfx/flow/#samples","title":"Samples","text":" - Power Automate Cookbook
- https://github.com/johnnliu/flow
- Demo - Using Microsoft Flow to send monthly emails
- http://johnliu.net/blog/2018/4/run-any-pnp-powershell-in-one-azurefunction-from-microsoft-flow
- Calling Microsoft Flow from a site script
- Automating New User Account On-boarding Using SharePoint Online, Flow, and PowerApps
- control office365 group creation
- Building interactive feedback analysis system with MS Forms, MS Flow, Power BI and SharePoint Online
- RUN A FLOW AS PART OF A SHAREPOINT SITE DESIGN
- Creating a Formatted Identifier in Flow
- Disable event firing when flow updates
- How to add text to any part of a SharePoint Page using Power Automate
- Send email reminders from Microsoft Lists using Power Automate
"},{"location":"spfx/flow/#copy-move-documents","title":"Copy / Move Documents","text":" - A modern \u201ctransfer to another location\u201d in office 365
- Generate Word documents from a template using Power Automate
"},{"location":"spfx/flow/#error-messages","title":"Error Messages","text":" - SharePoint / Microsoft Flow \u2013 Common error message when using Send an HTTP request to SharePoint action in Microsoft Flow
"},{"location":"spfx/flow/#json-in-flow","title":"JSON in Flow","text":" - How to use Parse JSON action in Power Automate
"},{"location":"spfx/flow/#disable-flow","title":"Disable Flow","text":" - https://www.toddklindt.com/PoshDisableFlowButton
Connect-PnPOnline -Url https://<teantUrl>/sites/<name>\n\n# disable\nSet-PnPSite -DisableFlows:$true\n\n# enable\nSet-PnPSite -DisableFlows:$false\n
"},{"location":"spfx/flow/#azure-logic-app","title":"Azure Logic App","text":" - Azure Logic Apps vs Microsoft Flow, Why Not Both?
- Integrate Azure Logic Apps with SharePoint Site Designs
"},{"location":"spfx/fluidframework/","title":"Fluid Framework","text":""},{"location":"spfx/fluidframework/#overview","title":"Overview","text":" - 5 reasons or thoughts on Fluent UI Web
- Fluid Framework
- Microsoft Ignite Blog: Microsoft Fluid Framework preview
"},{"location":"spfx/fluidframework/#samples","title":"Samples","text":" - Building real-time collaborative apps with Microsoft 365, Azure and Power Platform
"},{"location":"spfx/forms/","title":"Forms Tools","text":""},{"location":"spfx/forms/#microsoft-forms","title":"Microsoft Forms","text":""},{"location":"spfx/forms/#limits","title":"Limits","text":" - Getting started guidelines to microsoft forms limits and boundaries
"},{"location":"spfx/forms/#frameworks","title":"Frameworks","text":" - https://github.com/olegrumiancev/sp-listform-react
- Classic-to-Modern ListForm UI Transform Tool
- react-hook-form
"},{"location":"spfx/forms/#redux-forms","title":"Redux-Forms","text":" - React Redux Form
- Create an intelligent Form with React Redux Form
- https://blogs.perficient.com/2017/08/10/using-react-and-redux-in-sharepoint-frameworkspfx/
- https://github.com/SharePoint/sp-dev-fx-webparts/tree/master/samples/react-reduxform
"},{"location":"spfx/forms/#tips","title":"Tips","text":" - Tips for building a custom form
"},{"location":"spfx/governance/","title":"Governance","text":""},{"location":"spfx/governance/#collaboration","title":"Collaboration","text":" - Planning intranet governance
- Overview of collaboration governance in Microsoft 365
- Groups services interactions
"},{"location":"spfx/governance/#overview","title":"Overview","text":" - SharePoint governance questions
- Plan for governance in Office 365 Groups
- Plan for governance to transform teamwork with Microsoft 365
- How to implement SharePoint Governance
- overview-best-practices-for-managing-how-people-use-your-team-site
- Naming policy features
- The Ultimate SharePoint Governance Template
- Office 365 Group Naming Policy: Deciding if it\u2019s Right For You
- 8 Ways to Create Office 365 Groups \u2013 Overview and Differences
"},{"location":"spfx/governance/#information-architecture","title":"Information Architecture","text":" - Information architecture in modern SharePoint
- One Size Does Not Fit All
- 3 Dimensions of IA
- The Logical Dimension
- The Metadata Dimension
- Content Type Hub. What\u2019s vNext
"},{"location":"spfx/governance/#sharepoint-home-site","title":"SharePoint Home Site","text":" - SharePoint Home, Hub, Sites, Start\u2026 What?
- SHAREPOINT HOME SITES AND HUBS: A PRIMER
"},{"location":"spfx/governance/#content-type","title":"Content Type","text":" - Content Type Benefits in Modern SharePoint
- CHOICE, LOOKUP OR MANAGED METADATA?
- BUILD TARGETED TRAINING ON OFFICE 365 ADOPTION CENTER
- BUILD A MODERN COMPANY LOCATIONS PAGE IN MINUTES
- CONTENT TYPE FILTERS IN MODERN SHAREPOINT
- MULTIPLE LIBRARIES, FOLDERS OR METADATA
"},{"location":"spfx/governance/#imagemap","title":"ImageMap","text":"-Create Simple ImageMap in SPO
"},{"location":"spfx/governance/#permission","title":"Permission","text":" - 28 REASONS WHY MODERN SHAREPOINT ONLINE SITE PERMISSIONS ARE A HOT MESS
- Sharing and permissions in the SharePoint modern experience
- How Broken Are Office 365 SharePoint Permissions
- Azure AD Internal - GDPR Tool
- Making a real world sharing strategy for SharePoint, OneDrive & Teams
- SharePoint Modern Sites permission difference handling (Communication versus Teamsite)
- MS Teams Channel / SharePoint permission inconsistency
- Modern Authentication
"},{"location":"spfx/governance/#external-sharing","title":"External Sharing","text":" - A quick guide to secure Office 365_DE.pdf
- Coaching your users through the External Sharing Experience
- How to secure external sharing in SharePoint Online and Office 365
- Change External Sharing Settings Across a Hub Site with PowerShell
- Microsoft 365 guest sharing settings reference
- How to properly configure sharing settings in the SharePoint Admin Center
- Export Office 365 External User Reports for Secure External Collaboration
"},{"location":"spfx/governance/#organization-asset-libraries","title":"Organization Asset Libraries","text":" - SharePoint Organization Asset Libraries Explained
- Enable Organization assets on SharePoint Online
- How to create an Organisation Assets library in SharePoint Online to store Office Templates
- Use SharePoint Libraries to distribute Office Templates and Company images
"},{"location":"spfx/governance/#user-profile-delete-user","title":"User profile / Delete user","text":" - User Profile Automated Removal when User is Deleted from Active Directory
"},{"location":"spfx/governance/#external-user","title":"External user","text":" - 4 ways to setup external users in SharePoint
"},{"location":"spfx/governance/#sitecollections-versus-subsites","title":"SiteCollections versus SubSites","text":" - ADVANTAGES OF A FLAT SHAREPOINT SITE ARCHITECTURE
- Benefits to creating a flat site structure
"},{"location":"spfx/governance/#tips-creating-sites","title":"Tips Creating Sites","text":" - Exploring creating SharePoint TeamSites using SiteDesign and the REST API
- Balancing Self-Service with Governance and Control in Office 365
"},{"location":"spfx/governance/#backup","title":"Backup","text":" - Does Office 365 require a backup solution?
- Compare Backup Solutions SkyKick and Veeam
- Does Office 365, hosted by Microsoft requires a data backup solution
"},{"location":"spfx/governance/#auditusage-reports-scripts","title":"Audit/Usage Reports Scripts","text":" - Admindroid - Office 365 Management Made Easy
- 6 ways to check SharePoint Usage reports
- How to audit employees in SharePoint Online and Office 365
- Get SPO sites with filter using SPOSitePropertiesEnumerableFilter
- Retrieve Office 365 Audit logs using PowerShell and store in Azure table for quick retrieval
- Office 365 Groups and Teams Activity Report - obsolete groups
- Top 50 PowerShell Scripts for Microsoft 365 Admins
- SPC18: What Options do You Have to Govern the Lifecycle of Office 365 Groups / Teams Ignite2018GroupsGovernanceToolkit
- PowerShell scripts for Microsoft Office 365
- Useful PowerShell cmdlets to administer Office 365 Groups \u2013 Part 1
- Useful PowerShell cmdlets to administer Office 365 Groups \u2013 Part 2
- THR2131 - Three PowerShell reports every Office 365 admin needs to have
- Manage your SharePoint Team Sites to Excel
- Extract information of Communication sites to Excel
- Five-PowerShell-Reports-For-Office365
- ADEssentials - AzureAD Reporting
- M365 Powershell Reporting Scripts
- Microsoft Replaces User Data Search with Standard eDiscovery
- Azure AD audit logs latency
- REPORT ACTIVE DIRECTORY ACCOUNTS THAT ARE SYNCHRONIZED WITH AZURE AD
- How to Monitor New Members Added to Teams
"},{"location":"spfx/governance/#ad-mistakes","title":"AD Mistakes","text":" - Most Common Mistakes in Active Directory and Domain Services \u2013 Part 1
- Most Common Mistakes in Active Directory and Domain Services \u2013 Part 2
- Most Common Mistakes in Active Directory and Domain Services - Part 3
"},{"location":"spfx/governance/#handling-teams-and-groups","title":"Handling Teams and Groups","text":" - Governance and consciousness around handling Teams and Groups
- Three reasons why you should take control of Office 365 Groups creation
- Automating Office 365 Groups Lifecycle/Expiration management
- Stop using Power Automate to govern Microsoft Teams
- Microsoft Teams Naming Best Practices
"},{"location":"spfx/governance/#tips","title":"Tips","text":" - SharePoint Online Can Now Rename Site URLs
"},{"location":"spfx/governance/#sam","title":"SAM","text":" - A primer on SharePoint Advanced Management
- Govern and Secure SharePoint and OneDrive with Microsoft Syntex \u2013 SharePoint Advanced Management
"},{"location":"spfx/governance/#security-and-compliance-dlp","title":"Security and Compliance - DLP","text":" - Overview of data loss prevention
- Security and Compliance - DLP - Notes
- Compliance Customer Experience Engineering (CxE)
"},{"location":"spfx/governance/#records-management-rm","title":"Records Management (RM)","text":" - Managing and applying Purview retention labels using code
- Working with Purview event-based retention using code
- Finding incorrectly applied Purview retention labels
- Implications of applying Purview retention labels to folders
- Compliance Customer Experience Engineering (CxE) - (MIG/RM)
- Understanding Compliance and Records Management in Office 365- Video
- A Complete Guide to Office 365 Retention! - Video
- MIGScripts
- Microsoft 365 Compliancefeatures
- MIP and compliance capabilities - illustrations
"},{"location":"spfx/governance/#practise-german","title":"Practise (German)","text":" - Datensatzverwaltung in Microsoft 365
- Versionsverwaltung zur Aktualisierung von Datens\u00e4tzen verwenden
- Datenschutzressourcen
"},{"location":"spfx/governance/#practise-english","title":"Practise (English)","text":" - Lifecycle of an item in SharePoint: Where does it go?
- Use retention labels to manage the lifecycle of documents stored in SharePoint
- RETENTION IN SHAREPOINT ONLINE: THE WHERE, WHAT, HOW, AND WHEN
- ROLE TOUCHPOINTS DURING INFORMATION GOVERNANCE AND RECORDS MANAGEMENT IMPLEMENTATION
"},{"location":"spfx/graph/","title":"Microsoft Graph","text":""},{"location":"spfx/graph/#top-links","title":"Top Links","text":" - Graph Explorer
- Microsoft Graph permissions reference
- Use query parameters to customize responses
"},{"location":"spfx/graph/#best-practise","title":"Best Practise","text":" - Best practices for working with Microsoft Graph
- Using MS Graph Sandbox proxy to speed up development
"},{"location":"spfx/graph/#permission","title":"Permission","text":" - Microsoft Graph permissions reference
"},{"location":"spfx/graph/#learning","title":"Learning","text":" - 30 Days of Microsoft Graph
- Consuming SharePoint Online via the Microsoft Graph
- graph explorer - start
- graph webhooks - subscription
- Use the Microsoft Graph API
"},{"location":"spfx/graph/#working-with-sharepoint","title":"Working with Sharepoint","text":" - Microsoft Graph API or SharePoint REST API?
- SharePoint API in Microsoft Graph
"},{"location":"spfx/graph/#query-count-filter-search-orderby","title":"Query (Count / Filter / Search / OrderBy)","text":" - Use query parameters to customize responses
- Build advanced queries in Microsoft Graph with $count, $filter, $search, and $orderby
- Microsoft Graph PowerShell Filtering Working and Failures
"},{"location":"spfx/graph/#azure-functions","title":"Azure Functions","text":" - Getting started with PnP Core SDK
- How to access SharePoint data from Azure Function with SPFx and PnP Core SDK
- Azure Functions project that implements Microsoft Teams provisioning via Microsoft Graph
"},{"location":"spfx/graph/#samples","title":"Samples","text":" - Using Microsoft Graph API to convert the format of your documents
- How to get data from Microsoft Graph \u2013 SPFx
"},{"location":"spfx/graph/#spfx-samples","title":"SPFx Samples","text":" - Building business applications to Microsoft Teams using Microsoft Graph and SPFx
- Get DriveItem by File Absolute Url
"},{"location":"spfx/graph/#microsoft-graph-toolkit-mgt","title":"Microsoft Graph Toolkit (MGT)","text":" - microsoft-graph-toolkit
- Microsoft Graph Toolkit Playground
- A Lap Around Microsoft Graph Toolkit
- Microsoft Graph Toolkit
- Exploring The Microsoft Graph Toolkit
- Exploring Microsoft Graph Toolkit Lap as non Developer
- Exploring Microsoft Graph Toolkit Lap as a non-developer \u2014 Part 2
- Exploring Microsoft Graph Toolkit Lap as a non-developer -Part 3
- Exploring Microsoft Graph Toolkit as a non-Developer \u2014 Part 4
- Bulding a Moderator App
- A Lap around Microsoft Graph Toolkit Day 13 \u2013 Using Microsoft Graph Toolkit with React
"},{"location":"spfx/graph/#mgt-samples","title":"MGT Samples","text":" - How to start a new SPFx web part project with Microsoft Graph Toolkit and React
- msgraphtoolkitsamples
- SPFx - ms-graph-toolkit-agenda-panel
- SPFx - Exploring Microsoft Graph Toolkit
- SPFx-MSGraph using the Toolkit
"},{"location":"spfx/graph/#files-handling","title":"Files Handling","text":" - Accessing Files with Microsoft Graph
"},{"location":"spfx/graph/#granular-permission","title":"Granular Permission","text":" - SharePoint Site Collection Level Permissions
- Use Microsoft Graph to Set Granular Permissions to SharePoint Online Sites for Azure AD Application
"},{"location":"spfx/graph/#graph-developer-proxy","title":"Graph Developer Proxy","text":" - Microsoft Graph Developer Proxy
- Improving your Microsoft Graph PowerShell Scripts with the Graph Developer Proxy
- Mocking API Responses Made Easy with Graph Developer Proxy
"},{"location":"spfx/groups/","title":"Groups","text":""},{"location":"spfx/groups/#must-read","title":"Must read","text":" - An overview of different types of security groups in SharePoint and Office 365
"},{"location":"spfx/groups/#overview","title":"Overview","text":" - Infographic - An everyday guide to Office 365 Groups
- http://www.techmikael.com/2017/03/enable-usage-policy-for-office-365.html
- http://www.techmikael.com/2017/03/controlling-groups-creation-in-tenant.html
- http://www.techmikael.com/2017/05/three-reasons-why-you-should-take.html
- https://www.sharepointeurope.com/defining-good-governance-office-365-groups/
- http://icansharepoint.com/everyday-guide-office-365-groups/
- https://en.share-gate.com/blog/office-365-groups-explained
- https://www.avepoint.com/blog/technical-blog/office-365-groups-vs-teams/
- http://sympmarc.com/2017/04/09/dear-microsoft-in-office-365-groups-are-groups-are-groups-unless-they-arent/
- http://blog.fpweb.net/get-excited-about-office-365-groups-then-relax/#.WOvyNdLyjZs
- https://techcommunity.microsoft.com/t5/Microsoft-Teams/Office-365-Groups-vs-Microsoft-Teams-blog-post/m-p/60743#M3798
- http://blog.ioz.ch/productivity-news-beyond-groups-ein-einblick-und-ausblick/
- https://channel9.msdn.com/Events/Ignite/Australia-2017/PROD225
- https://channel9.msdn.com/Events/Ignite/Australia-2017/PROD222
- https://vigneshsharepointthoughts.com/2018/03/30/office-365-groups-what-you-need-to-know
"},{"location":"spfx/groups/#provisioning","title":"Provisioning","text":"https://github.com/SharePoint/PnP-PowerShell/tree/master/Samples/Provisioning.SelfHostedWithAzureWebJob/Engine
"},{"location":"spfx/groups/#permissions","title":"Permissions","text":" - Copying Office 365 Group Permissions with PowerShell
"},{"location":"spfx/groups/#tipps","title":"Tipps","text":" - Generic URLs for all Office 365 Group connected workloads
# SiteCollection URL <site>\n<site>/_layouts/15/groupstatus.aspx?Target=PLANNER\n\n# XML Provisioning Engine - SiteCollection Token {site}\n{site}/_layouts/15/groupstatus.aspx?Target=PLANNER\n
"},{"location":"spfx/groups/#powershell","title":"Powershell","text":" - https://github.com/mikemcleanlive/Ignite-2018-BRK3098-Demo-Scripts
- https://vigneshsharepointthoughts.com/2018/05/16/useful-powershell-cmdlets-to-administer-office-365-groups/
- https://www.sharepointeurope.com/useful-powershell-cmdlets-administer-office-365-groups
To get the list of all the Office 365 groups in descending order:
Get-UnifiedGroup | Select Id, DisplayName, ManagedBy, Alias, AccessType, WhenCreated, @{Expression={([array](Get-UnifiedGroupLinks -Identity $_.Id -LinkType Members)).Count }; Label=\u2019Members\u2019} | Sort-Object whencreated | Format-Table displayname, alias, managedby, Members, accesstype, whencreated\n
To get the list of all private Office 365 groups in your tenant:
Get-UnifiedGroup | Where-Object {$_.AccessType -eq \u2018Private\u2019} | Sort-Object whencreated | Format-Table displayname, alias, managedby, accesstype, whencreated\n
To get list of deleted Office 365 groups in descending order:
Get-AzureADMSDeletedGroup | Sort-Object DeletedDateTime -Descending | Format-Table Id, DisplayName, Description, Visibility, DeletedDateTime\n
How to resolve the error The alias is being used by another group in your organization
Get-AzureADMSDeletedGroup -All:$true | Remove-AzureADMSDeletedDirectoryObject\n
To get the list of orphaned Office 365 groups in your tenant:
$Groups = Get-UnifiedGroup | Where-Object {([array](Get-UnifiedGroupLinks -Identity $_.Id -LinkType Owners)).Count -eq 0} `\n\n| Select Id, DisplayName, ManagedBy, WhenCreated\n\nForEach ($G in $Groups) {\n\nWrite-Host \u201cWarning! The following group has no owner:\u201d $G.DisplayName\n\n}\n
To determine where a group was provisioned (Planner, Yammer, Teams etc.)
Get-UnifiedGroup |Where-Object {$_.ProvisioningOption -eq \u2018YammerProvisioning\u2019} |select DisplayName,Alias,ProvisioningOption,GroupSKU,SharePointSiteUrl,SharePointDocumentsUrl,AccessType\n
To get the list of Teams integrated Office 365 group list:
Get-UnifiedGroup |Where-Object {$_.ProvisioningOption -eq \u2018ExchangeProvisioningFlags:481\u2019}|select DisplayName,Alias,ProvisioningOption,GroupSKU,SharePointSiteUrl,SharePointDocumentsUrl,AccessType\n
"},{"location":"spfx/hubsite/","title":"HubSite","text":" - What is a SharePoint hub site
- Video - SharePoint hub sites \u2014 What intranet managers need to know
- spsnyc-how-hub-sites-raise-sharepoints-intranet-potential
- the-intranet-managers-guide-to-office-365-sharepoint-hub-sites
- common-use-cases-for-office-365-sharepoint-hub-sites
- architecture-considerations-and-quick-reference-tips-for-office-365s-sharepoint-hub-sites
- How to Create Hub Sites in SharePoint Online
"},{"location":"spfx/hubsite/#planning","title":"Planning","text":" - Planning your SharePoint hub sites
- Tips for getting started with SharePoint hubs
"},{"location":"spfx/hubsite/#integration","title":"Integration","text":" - sharepoint-hub-sites-make-their-debut
- Organize-your-intranet-with-SharePoint-hub-sites
- Planning your SharePoint hub sites
"},{"location":"spfx/hubsite/#navigation","title":"Navigation","text":" - Security Trimmed Hub Site Navigation Updates!
- security-trimmed-hub-navigation
- manage-sharepoint-communication-sites-megamenu-with-csom-and-powershell
- 6 tips to get mega value from the new megamenu navigation for SharePoint
"},{"location":"spfx/hubsite/#tips","title":"Tips","text":"-Introducing the idea of Archive Hub Sites - How to get the hubId in SharePoint Framework - Fix broken Hub Sites in SharePoint Online
cls\n\n$tenantAdmin = \"https://contoso-admin.sharepoint.com\"\n$hubSite = \"https://contoso.sharepoint.com/sites/hub\"\n$extensionGUID = \"6da1a9e8-471d-4f39-80e6-a7ded02e8881\"\n$extensionName = \"Extension Name\"\n$extensionTitle = \"Extension Title\"\n\ntry\n{\nConnect-PnPOnline -Url $tenantAdmin -UseWebLogin\n} catch {\nWrite-Host \"Unable to connect.\"\nexit\n}\n\n$HubSite = Get-PnPHubSite $hubSite\n$HubSiteId = $HubSite.SiteId\n$ModernSites = (Get-PnPTenantSite -Template 'GROUP#0') + (Get-PnPTenantSite -Template 'SITEPAGEPUBLISHING#0')\n$SitesFromHub = New-Object System.Collections.ArrayList\n\nWrite-Host (\"Searching {0} sites:\" -f $HubSite.Title) -BackgroundColor Gray\nforeach ($ModernSite in $ModernSites){\n $site = Get-PnPHubSite $ModernSite.Url\n if($site.SiteUrl){\n if($site.SiteId -eq $HubSiteId){\n Write-Host (\"* {0} - {1}\" -f $ModernSite.Title, $ModernSite.Url)\n $SitesFromHub.Add($ModernSite) | Out-Null\n }\n }\n}\n\nWrite-Host \"\"\nWrite-Host \"Installing at:\" -BackgroundColor Gray\nforeach ($SiteHub in $SitesFromHub){\n Write-Host (\"* {0} - {1} ... \" -f $SiteHub.Title, $SiteHub.Url) -NoNewline\n Connect-PnPOnline -Url $SiteHub.Url -UseWebLogin\n Add-PnPCustomAction -ClientSideComponentId $extensionGUID -Name $extensionName -Title $extensionTitle -Location ClientSideExtension.ApplicationCustomizer -Scope site\n Write-Host \"Done\" -BackgroundColor Green\n Disconnect-PnPOnline\n}\n\nWrite-Host \"All Done\"\n
"},{"location":"spfx/hubsite/#csom","title":"CSOM","text":" - working-with-sharepoint-online-hub
"},{"location":"spfx/hubsite/#search-api","title":"Search API","text":" - working-with-hub-sites-and-search-api
- How to get all sites
# List all sites being a hub site or associate to a hub site\n$results = Submit-PnPSearchQuery -Query 'contentclass=sts_site' -RefinementFilters 'departmentid:string(\"{*\",linguistics=off)' -TrimDuplicates $false -SelectProperties @(\"Title\",\"Path\",\"DepartmentId\",\"SiteId\") -All -RelevantResults\n\n# Filter out the hub sites\n$hubSites = $results |? { $_.DepartmentId.Trim('{','}') -eq $_.SiteId }\n\n# Loop over the hub sites\nforeach( $hub in $hubSites ) {\n Write-Host $hub.Title - $hub.Path -ForegroundColor Green\n # Filter out sites associated to the current hub\n $associatedSites = ($results |? { $_.DepartmentId -eq $hub.DepartmentId -and $_.SiteId -ne $hub.SiteId })\n foreach($site in $associatedSites) {\n Write-Host \"`t\"$site.Title - $site.Path -ForegroundColor Yellow\n }\n}\n
"},{"location":"spfx/intranet/","title":"Intranet","text":""},{"location":"spfx/intranet/#homepage","title":"Homepage","text":" - https://sympmarc.com/2018/07/23/whither-a-new-intranet-on-modern-office-365
"},{"location":"spfx/js/","title":"JS","text":""},{"location":"spfx/js/#frameworks","title":"Frameworks","text":" - State of JS-Frameworks
- JavaScript library that creates PowerPoint presentations
"},{"location":"spfx/js/#common-cheatsheets","title":"Common Cheatsheets","text":" - modern-frontend-hacking-cheatsheets
- https://devhints.io/moment
"},{"location":"spfx/js/#es6","title":"ES6","text":""},{"location":"spfx/js/#interview-questions","title":"Interview Questions","text":" - yangshun - tech-interview-handbook
- https://github.com/ganqqwerty/123-Essential-JavaScript-Interview-Questions
- https://github.com/Pau1fitz/react-interview
- https://www.edureka.co/blog/interview-questions/react-interview-questions/
"},{"location":"spfx/js/#helper","title":"Helper","text":""},{"location":"spfx/js/#local-storage","title":"Local Storage","text":""},{"location":"spfx/libraries/","title":"Libraries Components","text":""},{"location":"spfx/libraries/#intro","title":"Intro","text":" - SharePoint Library Components \u2013 Introduction
- Community Call Demo - Introduction on using the library component in SharePoint Framework solutions
"},{"location":"spfx/libraries/#service-locator-pattern","title":"Service Locator pattern","text":" - Service Locator pattern in SPFx: Using Service Scopes
"},{"location":"spfx/libraries/#tips","title":"Tips","text":" - Step by Step: Create SPFx library component
- concept of a library component and start developing
- A new beast in SharePoint Framework development: library component
- SharePoint Library Components \u2013 Simultaneous Parallel Development
- Tips and Tricks working with SPFx library components
"},{"location":"spfx/libraries/#samples","title":"Samples","text":" - React Templates using SPFx Library Component
- SVG Library Helper
"},{"location":"spfx/listitem/","title":"Listitem","text":""},{"location":"spfx/listitem/#system-upddate","title":"System Upddate","text":" - http://blog.arvosys.com/2018/07/06/list-items-system-update-options-in-sharepoint-online/
- https://www.linkedin.com/pulse/list-items-system-update-options-sharepoint-online-andrew-koltyakov/
- https://github.com/koltyakov/sp-sig-20180705-demo/blob/master/src/02-clientSvc/helper.ts
"},{"location":"spfx/listitem/#managing-lists","title":"Managing Lists","text":" - Managing Lists with SharePoint PnP JS in SPFx
"},{"location":"spfx/listitem/#audience-targeting","title":"Audience Targeting","text":" - Target Content on Modern SharePoint
- SharePoint Audience Targeting - How to (german version)
"},{"location":"spfx/logging/","title":"Logging","text":""},{"location":"spfx/logging/#logging-with-sp-core-library","title":"Logging with sp-core-library","text":" - Working with the Logging API
Reference the Log class
import { Log } from \"@microsoft/sp-core-library\";\n
Log your message from your WebPart
Log.verbose(\"HelloWorld\", \"Here is a verbose log\", this.context.serviceScope);\nLog.info(\"HelloWorld\", \"Here is an informational message.\", this.context.serviceScope);\nLog.warn(\"HelloWorld\", \"Oh Oh, this might be bad\", this.context.serviceScope);\nLog.error(\"HelloWorld\", new Error(\"Oh No! Error! Ahhhhhh!!!!\"), this.context.serviceScope);\n
"},{"location":"spfx/logging/#logging-with-pnp-logging","title":"Logging with pnp-logging","text":" - Resolve to Log-PnPLogger
- Resolve to Log
- Working With: Logging
- Integrate Logging
- Flexible and powerful logging using PnP Logging in SPFx
"},{"location":"spfx/logging/#logging-with-appinsights","title":"Logging with AppInsights","text":" - Add Azure App Insights or Google Analytics to your SharePoint pages with an SPFx Application Customizer
- Use Azure App Insights to track events in your app/web part/provisioning code
- Deploy Application Insights globally on modern SharePoint
"},{"location":"spfx/loop/","title":"Loop","text":""},{"location":"spfx/loop/#loop-components","title":"Loop Components","text":" - Learn - Overview of Loop components in the Microsoft 365 ecosystem
"},{"location":"spfx/metadata/","title":"Metadata","text":""},{"location":"spfx/metadata/#colums","title":"Colums","text":" - How to Work with Managed Metadata Columns by Using the SharePoint Client Object Model
- Configuring SharePoint Online managed metadata defaults for folders
- Configuring metadata defaults with CSOM
- How to sync taxonomy hidden list using PowerShell
"},{"location":"spfx/metadata/#design","title":"Design","text":" - How to come up with metadata?
- Struggling with Metadata? Use SharePoint Enterprise Keywords!
- METADATA PROS AND CONS IN MODERN SHAREPOINT
"},{"location":"spfx/metadata/#journal","title":"Journal","text":""},{"location":"spfx/migration/","title":"Migration","text":""},{"location":"spfx/migration/#overview","title":"Overview","text":" - Best practices for migrating to SharePoint and OneDrive
- All the ways to migrate the files to SharePoint Online
"},{"location":"spfx/migration/#good-to-know","title":"Good to know","text":" - Surefire ways to fail a SharePoint migration to Office 365
- Compilation of SharePoint to Office 365 Migration Best Practices
- 33 things that can cause a hassle when migrating to SharePoint Online
- SharePoint Migration Infographic
- Cloud Migration
"},{"location":"spfx/migration/#sharegate","title":"ShareGate","text":" - ShareGate Limits
- File share to SharePoint migration diagram
- SharePoint to SharePoint migration diagram
- Tales of a Microsoft 365 migration \u2013 file shares
"},{"location":"spfx/migration/#sharepoint-migration-tool-spmt","title":"SharePoint Migration Tool (SPMT)","text":" - Overview of the SharePoint Migration Tool
- Download and install the SharePoint Migration Tool (SPMT)
- Migrating to Microsoft Teams using the SharePoint Migration Tool
"},{"location":"spfx/migration/#mover","title":"Mover","text":" - How to migrate files from cloud storage to SharePoint using the Mover Migration Tool
"},{"location":"spfx/migration/#sharepoint-manager","title":"SharePoint Manager","text":" - Walkthrough: Migration Manager
"},{"location":"spfx/migration/#documentid","title":"DocumentID","text":" - SHAREPOINT ONLINE AND DOCUMENT ID. THE GOODS
"},{"location":"spfx/migration/#permission","title":"Permission","text":" - Leave Those SharePoint Permissions for Office 365 Groups Alone
"},{"location":"spfx/migration/#wsp-repackage","title":"WSP Repackage","text":""},{"location":"spfx/migration/#tipps","title":"Tipps","text":" - SharePoint Migration: Mind the URL Length
- Migrating to Office 365 Checklist
- Restrictions and limitations in OneDrive and SharePoint
"},{"location":"spfx/migration/#showcase","title":"Showcase","text":" - Learn how Microsoft ran its own migration
"},{"location":"spfx/migration/#google-drive","title":"Google Drive","text":" - Data Clean-up Activities to Consider Before Google Drive Migration
"},{"location":"spfx/migration/#tenant-to-teanant","title":"Tenant to Teanant","text":" - How to merge Office 365 tenants \u2013 migrate to another Microsoft 365 organization
"},{"location":"spfx/migration/#migration-streams-classic","title":"Migration Streams (Classic)","text":" - Migration Overview - Stream (Classic) to Stream (on SharePoint)
"},{"location":"spfx/modernpage/","title":"Modern page","text":""},{"location":"spfx/modernpage/#news-pages","title":"News pages","text":" - What makes a page to be a news page on SharePoint Online
- How to read the SharePoint news using Rest API in SPFx
- Keep your team in the loop with modern SharePoint news
/_api/search/query?querytext='IsDocument:True AND FileExtension:aspx AND PromotedState:2'\n
"},{"location":"spfx/modernpage/#news-digest","title":"News digest","text":" - SharePoint News Digest Features and Limitations
- How to create and promote Newsletters in SharePoint & Office 365
- How to enable/disable the automatic SharePoint news digest
- How to create an internal newsletter
- 10 things to know about the SharePoint News digest
"},{"location":"spfx/mui/","title":"MUI","text":""},{"location":"spfx/mui/#testing-language","title":"Testing Language","text":" - Testing user preferred language of SharePoint site
"},{"location":"spfx/mui/#multilingual-pages","title":"Multilingual Pages","text":" - Multilingual publishing for pages and news posts
"},{"location":"spfx/mui/#localisation-of-the-user-interface","title":"Localisation of the user interface","text":" - SPFx & react-localization, an easy alternative?
- Understanding the Multilingual User Interface (MUI)
- Demystifying the mystery behind the UI language in SharePoint
"},{"location":"spfx/mui/#definition-multilingual-intranet","title":"Definition Multilingual Intranet","text":" - MULTILINGUAL AND MODERN SHAREPOINT
- Building Multilingual SharePoint views using SPFx Field Customizers
- SharePoint Online Multi-language Modern Sites \u2013 real case, pros and cons
- SharePoint Localization \u2013 a (somewhat) comprehensive how-to!
- Creating a Multi-lingual Intranet using Communication Sites
- CUSTOMIZE SHAREPOINT MODERN PAGES USING MICROSOFT FLOW
- Using the SFPx library component for simplifying the localization experience
- Webinar Recording: Deep Dive into SharePoint Multilingual with Divyachapan (DC) Padur
- Using the new multilingual APIs in Modern SharePoint
- Working with SharePoint Online modern multilingual with the search Keyword Query Language, Query variables and the modern search webpart
- 7 tips to help create and manage multilingual SharePoint communication sites
Search Query for multilingual news
PromotedState:2 AND (SPTranslationLanguage:{CurrentDisplayLanguage} OR (NOT SPTranslatedLanguages:{CurrentDisplayLanguage} AND NOT SPIsTranslation:true))\n
"},{"location":"spfx/mui/#samples","title":"Samples","text":""},{"location":"spfx/network/","title":"Network","text":" - URLs-und-IP-Adressbereiche-von-Office-365
- Office365NetworkTools
- How to quickly optimize Office 365 traffic for remote staff & reduce the load on your infrastructure
"},{"location":"spfx/network/#dns-basics","title":"DNS-Basics","text":" - Clientkonnektivit\u00e4t
- Office 365 Connectivity Guidance
- office-365-connectivity-guidance-part-2
- office-365-connectivity-guidance-part-3
- office-365-connectivity-guidance-part-4
"},{"location":"spfx/network/#tools","title":"Tools","text":""},{"location":"spfx/network/#it-pro","title":"IT Pro","text":" - provisioning-office-365-services
"},{"location":"spfx/network/#ssl","title":"SSL","text":" - generating-wildcard-ssl-certs-for-development
"},{"location":"spfx/onedrive/","title":"OneDrive","text":""},{"location":"spfx/onedrive/#pre-provision","title":"Pre Provision","text":" - How to provision OneDrive for Microsoft 365 users
"},{"location":"spfx/onedrive/#sync","title":"Sync","text":" - How sync works
- How to disable sync in SharePoint and OneDrive
- Only sync what you need
- Check you're not syncing too many files
- Use PowerShell to get your OneDrive Sync status
- OneDrive sync error \u201cSorry, OneDrive can\u2019t add your folder right now\u201d
"},{"location":"spfx/onedrive/#support","title":"Support","text":" - OneDrive for Business troubleshooting
"},{"location":"spfx/patterns/","title":"Patterns","text":""},{"location":"spfx/patterns/#dependency-injection","title":"Dependency Injection","text":" - https://ypcode.wordpress.com/2018/07/30/elegant-di-in-spfx/
- https://github.com/ypcode/spfx-lab
"},{"location":"spfx/patterns/#slides","title":"Slides","text":" - https://www.slideshare.net/sharepointpnp
"},{"location":"spfx/planner/","title":"Planner","text":""},{"location":"spfx/planner/#planer-api","title":"Planer API","text":" - Create plans, buckets, and tasks in Planner
- Use the Planner REST API
"},{"location":"spfx/planner/#support","title":"Support","text":" - Microsoft Planner for admins
"},{"location":"spfx/planner/#creating-planner","title":"Creating Planner","text":" - Creating a Planner with Flow
- A Change Management Solution for Office 365 -Office 365 Message Center to Planner
- Github - O365 Message Center to Planner integration
- Duplicate Microsoft Planner Plans
"},{"location":"spfx/planner/#powershell-module","title":"Powershell Module","text":" - Getting started with Microsoft Graph and PowerShell
- PowerShell and the Microsoft Graph API : Part 1, signing in
- PowerShell and the Microsoft Graph API : Part 2 \u2013 Starting to explore
- PowerShell formatting [not just] Part 3 of the Graph API series
- MsftGraph
- Unified PowerShell experience for Microsoft Graph
"},{"location":"spfx/planner/#reports","title":"Reports","text":" - Reporting Plans in a Microsoft 365 Tenant with the Planner Graph API
"},{"location":"spfx/planner/#blogs","title":"Blogs","text":" - MS Planner Blog
- HOW TO SORT PLANNER TASKS USING ORDER HINT AND MICROSOFT GRAPH
"},{"location":"spfx/planner/#video","title":"Video","text":" - Planner APIs in Microsoft Graph
"},{"location":"spfx/planner/#planner-architecture","title":"Planner Architecture","text":""},{"location":"spfx/planner/#tips","title":"Tips","text":" - Make Sure to Add Owners as Members When Creating New Teams
- Planner Does Multiplan
- Planner Supports Export to Excel
"},{"location":"spfx/planner/#tools-frameworks","title":"Tools / Frameworks","text":" - Apps4.Pro Planner Manager
- DHTMLX
- react-jsgantt
"},{"location":"spfx/provisioning/","title":"Provisioning","text":""},{"location":"spfx/provisioning/#reference","title":"Reference","text":" - Remote Provisioning Schema
- PnP Core Component Provisioning Engine Tokens
- Template Provisioning - Handlers
"},{"location":"spfx/provisioning/#pnp-provisining-template","title":"PnP-Provisining Template","text":" - Walkthrough of Site Provisioning process using PnP PowerShell
"},{"location":"spfx/provisioning/#custom-list-template","title":"Custom List Template","text":" - SharePoint Custom List Templates
- PnP PowerShell to manage list designs and create lists/libraries using list designs
"},{"location":"spfx/provisioning/#site-templateid","title":"Site TemplateId","text":" - SharePoint Online Site Template ID list for PowerShell
"},{"location":"spfx/provisioning/#fields","title":"Fields","text":" - How to: Provision Lookup Columns and Projected Fields using PnP PowerShell
- How to do column validation in SharePoint
- SharePoint Column Validation Examples
- Setting a SharePoint Image Column Value with PnP PowerShell
"},{"location":"spfx/provisioning/#app-bar","title":"App Bar","text":" - Introduction to the SharePoint app bar
- Best practices for using global navigation in the SharePoint app bar
"},{"location":"spfx/provisioning/#links","title":"Links","text":" - https://www.techmikael.com/2017/04/sharepoint-pnp-webcast-provisioning.html
- https://github.com/SharePoint/PnP-PowerShell/tree/master/Samples/Provisioning.SelfHostedWithAzureWebJob
- https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/convert-pnpfoldertoprovisioningtemplate?view=sharepoint-ps
- https://www.techmikael.com/2017/04/creating-pnp-provisioning-file.html
- https://de.slideshare.net/sharePTkarm/how-to-automate-the-sharepoint-provisioning
- https://de.slideshare.net/DIWUG/spsnl17-be-more-effective-with-the-pnp-provisioning-engine-erwin-van-hunen
- Categories, organize and layout your Office 365 intranet with PnP Templates
"},{"location":"spfx/provisioning/#export-multiple-pages","title":"Export multiple pages","text":" - Create a modern SharePoint site template with multiple pages using PnP provisioning engine
- Exporting PnP Site Templates Including Modern Pages
"},{"location":"spfx/provisioning/#convert-pnp-files","title":"Convert PnP Files","text":" - https://github.com/Puzzlepart/prosjektportalen-program/tree/dev/.scripts
- https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/convert-pnpfoldertoprovisioningtemplate?view=sharepoint-ps
"},{"location":"spfx/provisioning/#create-page-templates","title":"Create Page-Templates","text":" - Creating modern page templates
- Hide the template gallery from newly created sites in SharePoint
"},{"location":"spfx/provisioning/#flow-azure-function","title":"Flow / Azure Function","text":" - O365ModernProvisioning
- Provisioning an Office 365 group with an approval flow and Azure functions-part 1
- Provisioning an Office 365 group with an approval flow and Azure functions-part 2
- Provisioning an Office 365 group with an approval flow and Azure functions-part 3
- https://thomasdaly.net/2021/04/09/pnp-powershell-v4-provisioning-with-azure-functions-v3-and-power-automate/
"},{"location":"spfx/provisioning/#onedrive-for-business","title":"OneDrive for Business","text":" - How to provision OneDrive for Microsoft 365 users
- Create OneDrive for Business Site Collections using PowerShell
"},{"location":"spfx/provisioning/#tools","title":"Tools","text":""},{"location":"spfx/provisioning/#logic-app-azure-queue","title":"Logic App & Azure Queue","text":" - SharePoint event receiver to Azure storage queue
"},{"location":"spfx/provisioning/#find-empty-general-folder","title":"Find Empty General Folder","text":" - Error on first navigation to the files tab
"},{"location":"spfx/recipes/","title":"Recipes","text":""},{"location":"spfx/recipes/#timezones","title":"Timezones","text":" - MS Graph, Events, and Time Zones in SPFx
- Change the time zone of existing SharePoint site,
"},{"location":"spfx/rest/","title":"REST","text":""},{"location":"spfx/rest/#reference","title":"Reference","text":" - How the SharePoint REST service works
- Determine SharePoint REST service endpoint URIs
- Use OData query operations in SharePoint REST requests
- SharePoint & Office 365 REST API Resources
- Using REST API For Selecting, Filtering, Sorting And Pagination in SharePoint List
"},{"location":"spfx/rest/#api-guidlines","title":"API Guidlines","text":" - Microsoft REST API Guidelines
"},{"location":"spfx/rest/#tools","title":"Tools","text":" - SharePoint REST API Metadata Explorer
- Powerful HTTP and GraphQL tool belt
- Explore SharePoint REST API with Chrome F12 cURL (bash) to Postman
- SharePoint Framework - Rest API Tester
"},{"location":"spfx/rest/#postman","title":"Postman","text":" - postman-and-office-365
- Using Postman with the Microsoft Graph
- Configure Postman to be easily used with any Azure AD protected API (SharePoint, Graph, custom etc.)
- Announcing Microsoft Graph Postman Collections
- Microsoft Graph Mailbag \u2013 Explore Microsoft Graph with Postman
- Advanced Testing with Postman - Bearer Token Authentication via scripting
"},{"location":"spfx/rest/#testing","title":"Testing","text":"Testing in chrome console
fetch(`/sites/gridworks/_api/web/lists/getbytitle('SiteRequestsQueue')/items?$select=Id,Title,gwRequestSiteAlias&$orderby=Id desc`, {\nheaders: {\nAccept: 'application/json;odata=verbose;'\n}\n}).then(res => res.json().then(json => {\njson.d.results.forEach(item => {\nconsole.log(`item: ${item.Title}`);\n});\n}));\n
"},{"location":"spfx/search/","title":"Search","text":" - Overview of Microsoft Search
- Manage the search schema in SharePoint
- Sharepoint search Queries explained - Basics
"},{"location":"spfx/search/#tools","title":"Tools","text":" - MS Search Layout Designer
"},{"location":"spfx/search/#custom-search-result-page","title":"Custom Search Result Page","text":" - Create a custom search results page in SharePoint Online
"},{"location":"spfx/search/#pnp-modern-search","title":"PnP Modern Search","text":" - PnP Modern Search solution
- PnP Webcast - SharePoint Framework Modern Search Web Part
- How to Implement SharePoint Modern Search Refiners
- GalacticSummit Agnes Molnar - No Code Search Applications in SharePoint Online
- How to set up your first PnP Search Page
- PnP Modern Search Filters web part
- Using the PnP Modern Search Web Parts
- How to customize the handlebars template in PnP modern search web part?
- Image Search with PnP Modern Search v4
- How to connect two search results Web Parts together
- Using the PnP Modern Search Web Parts
- Customizing the PnP people search handlebar template in SharePoint online
"},{"location":"spfx/search/#microsoft-search","title":"Microsoft Search","text":" - Microsoft Search
- MICROSOFT SEARCH BOOKMARKS
"},{"location":"spfx/search/#search-tips","title":"Search Tips","text":" - what makes sharepoint column searchable
- How to improve your SharePoint search results
- How to search in SharePoint
- How to use Boolean Operators in SharePoint Search
- 4 Levels of Search in SharePoint Online
- 7 ways to search for content in SharePoint and Office 365
- SharePoint Knowledge Base: Search
"},{"location":"spfx/search/#managed-properties","title":"Managed Properties","text":" - Display Search Results in SharePoint Online
- Crawled Properties Not Created From Site Columns in Modern Team Sites
- Mapping or clearing crawled property
- SearchConfiguration
- How to create a Managed Property in SharePoint Online
- Hide content from delve but not from search
- Manage the search schema in SharePoint
- Managed Properties characteristics explained: Searchable vs. Queryable vs. Retrievable vs. Refinable
"},{"location":"spfx/search/#keyword-query-language-kql-syntax-reference","title":"Keyword Query Language (KQL) syntax reference","text":" - Keyword Query Language (KQL) syntax reference
- Keyword queries and search conditions for Content Search
- Customizing ranking models to improve relevance in SharePoint
- Create a Simple SharePoint 2013 Employee Directory on Office365
- Keyword Query Language (KQL) syntax reference
"},{"location":"spfx/search/#crawl-logs","title":"Crawl Logs","text":" - http://blogs.catapultsystems.com/eskaggs/archive/2015/05/20/microsoft-guidance-on-search-crawls-in-sharepoint-online/
- https://blogs.technet.microsoft.com/o365totd/2015/10/30/viewing-crawl-logs-in-sharepoint-online-office-365/
"},{"location":"spfx/search/#reindex","title":"Reindex","text":" - Scripts to trigger re-indexing of user profiles and content in SharePoint Online
- How to Trigger Full Reindex using PowerShell
"},{"location":"spfx/search/#content-source","title":"Content Source","text":""},{"location":"spfx/search/#onenote","title":"OneNote","text":" - https://blog.ioz.ch/onenote-notizbuecher-ueber-search-anzeigen/
- http://www.techmikael.com/2015/07/how-to-do-light-weight-search-center_21.html
- http://www.techmikael.com/2017/01/clarification-on-automatic-managed.html
"},{"location":"spfx/search/#documentid","title":"DocumentID","text":" - http://www.nubo.eu/en/blog/2017/02/Improve-Search-Experience-Documents-With-DocumentId/
"},{"location":"spfx/search/#ranking","title":"Ranking","text":" - https://github.com/wobba/SearchConfiguration
- https://msdn.microsoft.com/en-us/library/office/dn169052.aspx
- https://msdn.microsoft.com/library/dn169052.aspx
- http://mosshowto.blogspot.ch/2016/05/sharepoint2013-improve-search-relevance.html
- https://blog.mastykarz.nl/understanding-item-ranking-sharepoint-2013-search/
"},{"location":"spfx/search/#fileshare","title":"FileShare","text":" - https://social.technet.microsoft.com/wiki/contents/articles/2209.sharepoint-201020132016-best-practices-for-indexing-file-share-content.aspx
- https://blogs.msdn.microsoft.com/nicolasu/2013/07/24/sp2013-how-to-better-balance-your-distributed-file-system-dfs-crawl
- https://redmondmag.com/articles/2014/10/07/search-content-source-in-sharepoint.aspx
- https://technet.microsoft.com/en-us/library/dn535606.aspx#BKMK_UseContentSources
- http://www.bigdata-unleashed.com/20131205/crawling-von-fileshares-sharepoint-2013
- https://www.experts-exchange.com/questions/28918628/Unable-to-do-full-crawl-on-file-share-for-Sharepoint-2013-Content-Source.html
- http://kx.cloudingenium.com/microsoft/servers/sharepoint/sharepoint-2013/how-to-give-sharepoint-2013-crawler-sufficient-rightspermissions-to-crawl-file-shares
- https://social.technet.microsoft.com/Forums/office/en-US/a1eb205d-128a-46ff-967d-355dc13411d2/crawling-file-server-sharepoint-2013?forum=sharepointadmin
- https://social.technet.microsoft.com/Forums/sharepoint/en-US/942979d0-358a-4aac-9953-b2192decdfa4/creating-a-mapped-driveuser-folder-permission-problems?forum=winserverGP
- http://www.collabshow.com/2008/10/31/best-practices-for-enterprise-user-scalability-in-sharepoint
- https://profadmins.com/2014/04/07/sharepoint-doesnt-accept-the-universal-security-groups-for-granting-permissions
"},{"location":"spfx/search/#teamsites-groups","title":"Teamsites / Groups","text":" - Retrieving search results from private Groups in Office 365 via REST
"},{"location":"spfx/search/#search-hubsite","title":"Search HubSite","text":" - Search all Document under a hubsite
"},{"location":"spfx/search/#search-empty-terms-fields","title":"Search Empty Terms Fields","text":" - MONITORING FOR AN EMPTY MANAGED METADATA SHAREPOINT COLUMN
"},{"location":"spfx/search/#sharing-link","title":"Sharing Link","text":" # Managed Properties: SharedWithUsersOWSUSER, SharedWithDetails\n {SearchTerms} contentclass:STS_ListItem_DocumentLibrary IsContainer<>true SharedWithUsersOWSUSER=0\n
"},{"location":"spfx/search/#only-office-files","title":"Only Office Files","text":"{SearchTerms} ((FileExtension:mp4 OR FileExtension:doc OR FileExtension:docx OR FileExtension:xls OR FileExtension:xlsx OR FileExtension:ppt OR FileExtension:pptx OR FileExtension:pdf) AND (IsDocument:\"True\" OR contentclass:\"STS_ListItem\")) OR ContentType=\"Folder\"\n
"},{"location":"spfx/search/#search-query-filter","title":"Search Query Filter","text":" - query variable trick in ms search
- filter on managed properties in search
## News 2023
- Microsoft Search: Connecting You to Knowledge and Expertise
- How to configure Search Verticals on a SharePoint site
"},{"location":"spfx/search/#news-2021","title":"News 2021","text":" - We\u2019re making changes to search in SharePoint Online
"},{"location":"spfx/search/#news-2020","title":"News 2020","text":" - Make the most of Microsoft Search through Configuration and Administration
- What\u2019s new for Microsoft Search \u2013 Ignite 2020 Edition
- SharePoint Search REST API overview
- SharePoint Search REST API. GET and POST requests
"},{"location":"spfx/search/#search-all","title":"Search All","text":" - Tackling SharePoint's 5000 Item Limit with PowerShell and Search
"},{"location":"spfx/sitedesign/","title":"SiteDesign","text":""},{"location":"spfx/sitedesign/#best-practise","title":"Best practise","text":" - Best Practices on SharePoint Site Design
- SharePoint Modern Page Best Practices
- Site Designs for Good Information Architecture
- Site Design Deployment Made Easy
- How to create a Board of Directors Site in SharePoint Online
"},{"location":"spfx/sitedesign/#list-templates","title":"List templates","text":" - The broad world of templates when using Microsoft Lists
"},{"location":"spfx/sitedesign/#modern-site-provisioning","title":"Modern Site Provisioning","text":""},{"location":"spfx/sitedesign/#deploying","title":"Deploying","text":" - Deploying Application Customizers with a Site Design
"},{"location":"spfx/sitedesign/#flow-rest","title":"Flow / REST","text":" - Invoking a Site Design Task using REST
- Invoking unlimited actions with Site Design Tasks and Microsoft Flow
- Create Site Script and Site Template Using Power Automate in SharePoint
- How to Apply Site template (Site Design) via Power Automate
- SharePoint PnP Provisioning with Azure Logic Apps and Azure Automation
- Modern SharePoint site creation with site designs and REST
"},{"location":"spfx/sitedesign/#reports","title":"Reports","text":"Success runs
Get-SPOSite -Limit All | ForEach-Object { \n $failedRuns = Get-SPOSiteDesignRun $_.Url | Get-SPOSiteDesignRunStatus | Where-Object {$_.OutcomeCode -ne \"Success\"};\n\n if($failedRuns) {\n Write-Output $_.Url\n $failedRuns\n }\n}\n
Failed runs
Get-SPOSite -Limit All | ForEach-Object { \n $failedRuns = Get-SPOSiteDesignRun $_.Url | Get-SPOSiteDesignRunStatus | Where-Object {$_.OutcomeCode -eq \"Faulure\"};\n\n if($failedRuns) {\n Write-Output $_.Url\n $failedRuns\n }\n}\n
"},{"location":"spfx/sitedesign/#tips","title":"Tips","text":"Know how many Site Designs and Site Scripts you have:
(Get-SPOSiteDesign | Measure).Count\n
(Get-SPOSiteScript | Measure).Count\n
Delete a Site Design or a Site Script based on its unique identifier:
Remove-SPOSiteDesign -Identity $siteDesignId\n
Remove-SPOSiteScript -Identity $siteScriptId\n\nDelete all Site Designs or Site Scripts at once:\n\n```Powershell\nGet-SPOSiteDesign | foreach { Remove-SPOSiteDesign -Identity $_.Id }\n
Get-SPOSiteScript | foreach { Remove-SPOSiteScript -Identity $_.Id }\n
"},{"location":"spfx/sitescripts/","title":"SiteScripts","text":" - SharePoint Site Scripts and Site Designs - April 2018 release
- THE ULTIMATE GUIDE TO SHAREPOINT SITE DESIGNS AND SITE SCRIPTS
- How To: Create Modern SharePoint site templates using Office 365 Site Designs
"},{"location":"spfx/sitescripts/#pnp-or-site-scripts","title":"PnP or site scripts","text":" - Using Site Designs or PnP templates for SharePoint site provisioning
"},{"location":"spfx/sitescripts/#reference","title":"Reference","text":" - Site design JSON schema
- Calling the PnP provisioning engine from a site script
"},{"location":"spfx/sitescripts/#tools","title":"Tools","text":" - Site Designs Studio 1.0
- Convert CAML List Schema to Site Scripts
- Sharepoint Site Designer
"},{"location":"spfx/sitescripts/#samples","title":"Samples","text":" - SharePoint Site Script samples
- Triggers Flow to run an Azure function containing PnP PowerShell
"},{"location":"spfx/sitescripts/#fields","title":"Fields","text":""},{"location":"spfx/snippets/","title":"Code Snippets","text":""},{"location":"spfx/snippets/#tips-and-tricks","title":"Tips and Tricks","text":" - How to get Tenant & User\u2019s AD ID
"},{"location":"spfx/snippets/#check-url","title":"Check URL","text":"Use Microsoft Graph to evaluate SharePoint Urls
"},{"location":"spfx/snippets/#querystring","title":"QueryString","text":" - How to get a querystring value
import { UrlQueryParameterCollection } from '@microsoft/sp-core-library';\n\nif (queryParameters.getValue('id')) {\nid = parseInt(queryParameters.getValue('id'));\n}\n
"},{"location":"spfx/snippets/#pnp-js-core","title":"PNP JS-Core","text":""},{"location":"spfx/snippets/#list-permission","title":"List Permission","text":"private _checkProductsPermissions(productsList){\nreturn pnp.sp.web.lists.getByTitle(productsList).getCurrentUserEffectivePermissions()\n.then(perms => {\nlet canEdit = pnp.sp.web.lists.getByTitle(productsList).hasPermissions(perms, PermissionKind.EditListItems);\nlet canView = pnp.sp.web.lists.getByTitle(productsList).hasPermissions(perms, PermissionKind.ViewListItems);\nif(canEdit){\nreturn 'Edit';\n} else if(canView){\nreturn 'View';\n} else {\nreturn 'None';\n}\n})\n.catch((err) => {\nconsole.log('error:', err);\nreturn 'None';\n});\n}\n
"},{"location":"spfx/snippets/#admin-user","title":"Admin User","text":"// Ensure a user on site collection\nsp.web.ensureUser('john.doe@contoso.onmicrosoft.com').then(console.log);\n\n// Get site collection admins\nsp.web.siteUsers.filter(`IsSiteAdmin eq true`)\n.get().then(console.log);\n\n// Remove a user from site collection admins\nsp.web.siteUsers.getByLoginName('i:0#.f|membership|john.doe@contoso.onmicrosoft.com')\n.update({ IsSiteAdmin: false }).then(console.log);\n\n// Add a user to site collection admins\nsp.web.siteUsers.getByLoginName('i:0#.f|membership|john.doe@contoso.onmicrosoft.com')\n.update({ IsSiteAdmin: true }).then(console.log);\n
"},{"location":"spfx/sp2016/","title":"SP2016","text":""},{"location":"spfx/sp2016/#lifecycle","title":"Lifecycle","text":""},{"location":"spfx/sp2016/#overview-facts","title":"Overview Facts","text":" - SharePoint-Framework (SPFx): Enterprise-Leitfaden
- \u00dcbersicht \u00fcber das SharePoint-Framework
- SharePoint Framework development with SharePoint 2016 Feature Pack 2
- All about SharePoint Framework For SharePoint Server 2016
- How to use SharePoint FrameWork for SharePoint 2016 on premise
- Yes, you can use Modern React on SharePoint 2016
"},{"location":"spfx/sp2016/#setup-development","title":"Setup Development","text":" - Set up your SharePoint Framework development environment
- Build your first SharePoint client-side web part (Hello World part 1)
- Connect your client-side web part to SharePoint (Hello World part 2)
- Deploy your client-side web part to a SharePoint page (Hello World part 3)
"},{"location":"spfx/sp2016/#developmentlocal-workbench","title":"Development(local workbench)","text":"gulp serve\n
https://localhost:4321/temp/workbench.html\n
"},{"location":"spfx/sp2016/#developmentonline-workbench","title":"Development(online workbench)","text":"gulp serve --nobrowser\n
/_layouts/15/workbench.aspx\n
"},{"location":"spfx/sp2016/#deployment","title":"Deployment","text":"gulp clean\n
gulp build --ship\n
gulp bundle --ship\n
gulp package-solution --ship\n
"},{"location":"spfx/sp2016/#troubleshooting","title":"Troubleshooting","text":" - SharePoint 2016, 2019 & SharePoint Online: Which Version of the SharePoint Framework Should You Install?
- SPFx Development for SharePoint Server 2016
- TSLint, VS Cod
- Struggling with using SPFx on SharePoint 2016? Let me help!
"},{"location":"spfx/sp2016/#check-package-version","title":"Check Package Version","text":"node \u2013v\nnpm \u2013v\nyo --generators\ngulp \u2013v\ntsc \u2013v\ntsd --version\n
"},{"location":"spfx/sp2016/#react","title":"React","text":" - sharepoint-application-pages-with-react-office-fabric-ui-interface
"},{"location":"spfx/sp2016/#ie-support","title":"IE Support","text":" - Polyfills
- Planning IE11 compatibility with SPFx components and PnPJS library
- Perform other types of HTTP requests with HttpClient and SPHttpClient in SPFx projects
"},{"location":"spfx/sp2019/","title":"SP2019","text":""},{"location":"spfx/sp2019/#setup-development","title":"Setup Development","text":" - Getting started with creating SharePoint Framework solutions for SharePoint 2019 YouTube video
- Community call where SharePoint 2019 developer platform is covered YouTube video
- Definitive guide for developers: SharePoint Framework for SharePoint Server SE
"},{"location":"spfx/sp2019/#new-features","title":"New Features","text":" - 15 facts about SharePoint 2019 (German)
- New and improved features in SharePoint Server 2019
- Differences between SharePoint Server 2016 and 2019
"},{"location":"spfx/sp2019/#installation","title":"Installation","text":" - SharePointDSC Starter Template for SharePoint 2019
"},{"location":"spfx/sp2019/#upgrade","title":"Upgrade","text":" - High level overview to upgrade from SharePoint 2013 to SharePoint Server 2019
"},{"location":"spfx/sp2019/#webparts","title":"WebParts","text":" - Modern SPFx WebParts Comparison in SPOnline vs SP2019
"},{"location":"spfx/sp2019/#hybrid","title":"Hybrid","text":" - SharePoint Server hybrid configuration roadmaps
"},{"location":"spfx/sp2019/#configure-cloud-hybrid-search","title":"Configure cloud hybrid search","text":" - Configure cloud hybrid search - roadmap
- Cloud hybrid search service (Cloud SSA) FAQ
"},{"location":"spfx/sp2019/#applauncher","title":"AppLauncher","text":" - SharePoint Hybrid App Launcher Explained
"},{"location":"spfx/sp2019/#not-so-good","title":"Not so good","text":" - The TypeScript for SPFX is so out of date.... ( 2.4 ) really MS
"},{"location":"spfx/sp2019/#wsa-customer-experience-improvement-program","title":"WSA - Customer Experience Improvement Program","text":" - Disabling requests to WsaUpload.ashx (Customer Experience Improvement Program)
"},{"location":"spfx/sp2019/#content-script-webpart-typescript","title":"Content Script WebPart (TypeScript)","text":" - Using TypeScript with SharePoint Content/Script editor web parts
"},{"location":"spfx/sp2019/#custom-action","title":"Custom Action","text":" - SharePoint Sticky Footer for classic experience
- SharePoint.UI.StickyFooter
"},{"location":"spfx/sp2019/#certificates","title":"Certificates","text":"-Renewing SharePoint Certificates on premise
"},{"location":"spfx/sp2019/#userprofile","title":"Userprofile","text":" - All about non-imported user profiles
- Check user profiles
"},{"location":"spfx/sp2019/#code-tips","title":"Code Tips","text":" - Build SharePoint Framework solutions for on-premises SharePoint with ANY version of React, TypeScript or Office UI Fabric React
"},{"location":"spfx/sp2019/#architecture-online-sql-onprem","title":"Architecture Online - SQL OnPrem","text":" - Connecting SharePoint Online to On-Premise Databases with SharePoint Framework (SPFx)
"},{"location":"spfx/spaces/","title":"Spaces","text":""},{"location":"spfx/spaces/#intro","title":"Intro","text":" - First look at SharePoint Spaces using 3D printer files
"},{"location":"spfx/spaces/#pnp-template","title":"PnP-Template","text":" - Create SharePoint Spaces templates using PnP PowerShell
"},{"location":"spfx/start/","title":"Dev Start","text":""},{"location":"spfx/start/#history-of-sharepoint","title":"History of SharePoint","text":" - The Service That SharePoint Built \u2013 a cumulative evolution story
"},{"location":"spfx/start/#development-starting","title":"Development starting","text":" - Set up your Office 365 tenant
- Set up your SharePoint Framework development environment
- SPFx developer guide \u2013 setup and solution structure overview
"},{"location":"spfx/starterkit/","title":"Starter Kid","text":""},{"location":"spfx/starterkit/#github","title":"GitHub","text":" - https://github.com/SharePoint/sp-starter-kit
"},{"location":"spfx/starterkit/#tipps","title":"Tipps","text":" - https://beaucameron.net/2018/05/22/pnp-sp-starter-kit-hints-and-tips
- https://robertschouten.com/2018/05/25/pnp-starter-kit-my-experiences
"},{"location":"spfx/starterkit/#performance","title":"Performance","text":" - https://robertschouten.com/2018/07/06/pnp-starter-kit-optimisation-considerations
"},{"location":"spfx/starterkit/#extension","title":"Extension","text":" - https://beaucameron.net/2018/07/19/customizing-the-pnp-starter-kit-for-office-365-part-1-portal-footer
- https://beaucameron.net/2018/09/03/customizing-the-sharepoint-starter-kit-for-office-365-part-3-collab-footer/
"},{"location":"spfx/starterkit/#webpart","title":"WebPart","text":" - https://robertschouten.com/2018/07/18/pnp-starter-kit-people-directory-search-issue
- https://robertschouten.com/2018/09/03/sharepoint-pnp-starter-kit-people-directory-contribution
"},{"location":"spfx/stream/","title":"Stream","text":""},{"location":"spfx/stream/#links","title":"Links","text":"Stream (built on SharePoint), the new version of Microsoft Stream
"},{"location":"spfx/support/","title":"Support","text":""},{"location":"spfx/support/#top-limitations","title":"Top limitations","text":" - https://sharepointmaven.com/top-5-limitations-of-sharepoint-online/
- Top 10 limitations in Microsoft Teams
"},{"location":"spfx/support/#content-video","title":"Content & Video","text":" - How to present your video and content side by side in a Microsoft Teams meeting
"},{"location":"spfx/support/#troubleshoot","title":"Troubleshoot","text":" - SharePoint Online troubleshooting
"},{"location":"spfx/support/#sharepoint-documentation","title":"SharePoint Documentation","text":" - SharePoint help center
- SharePoint Online admin
- SharePoint Online Troubleshooting
- Office troubleshooting for admins and IT professionals
- SharePoint Server
"},{"location":"spfx/support/#licence-changes","title":"Licence Changes","text":" - Power Platform licensing, November 2021 updates
- Microsoft 365 Licensing
- Understanding Power Platform Licensing
- Neue Lizenzierung von PowerApps
- PowerApps Licence Changes in terms that Matt Weston understands!
- PowerApps and Microsoft Flow licensing FAQs for October 2019
- Microsoft 365 Compliance Licensing Comparison
- Compare Microsoft 365 Enterprise Plans
"},{"location":"spfx/support/#partner-secure-application-model","title":"Partner Secure Application Model","text":" - Enabling the Secure Application Model framework
- Security requirements for using Partner Center or Partner Center APIs
- Connect to Exchange Online automated when MFA is enabled (Using the SecureApp Model)
"},{"location":"spfx/support/#sharepoint-spo","title":"SharePoint SPO","text":" - SharePoint Online Support Info
- Sharepoint 2019 Feature Ids
- Change a site address
- Set up a home site for your organization
- SharePoint Admin API Access
"},{"location":"spfx/support/#storage-limits","title":"Storage Limits","text":" - Manage site storage limits
"},{"location":"spfx/support/#admin-o365","title":"Admin O365","text":" - TechNet Gallery - Office365
- http://aka.ms/Office-Developer (alle wichtigen Office DEV Links)
- http://aka.ms/Office-TechGuide
- https://support.office.com/?ui=de-DE&rs=de-CH&ad=CH&fromAR=1
- https://technet.microsoft.com/de-ch/
- https://products.office.com/de-CH/
- Admin-Help-O365
- https://support.office.com/en-us/
- free-ebooks-microsoft
- Click-2-Run
- URLs-und-IP-Adressbereiche-von-Office-365
- sharepoint-licensing-overview
- free-microsoft-training-resources
"},{"location":"spfx/support/#azure-error-codes","title":"Azure Error Codes","text":" - All AADSTS Errors
- Search AADSTS Nummer
- Resolving error AADSTS90056
- Breaking: Changes to app authentication on SharePoint!
"},{"location":"spfx/support/#spo","title":"SPO","text":" - Navigation options for SharePoint Online
"},{"location":"spfx/support/#guest-users","title":"Guest Users","text":" - Ultimate Admin Guide to Microsoft Teams Guest Users
- SHAREPOINT ONLINE GUEST USER TROUBLES AND HOW TO GET PAST THEM
"},{"location":"spfx/support/#external-access","title":"External Access","text":" - Troubleshooting external access to SharePoint sites
- SPFx Webpart \u2013 External User Access
"},{"location":"spfx/support/#diagnostics","title":"Diagnostics","text":" - use-the-page-diagnostics-tool-for-sharepoint-online
"},{"location":"spfx/support/#performance","title":"Performance","text":" - Creating and launching a healthy SharePoint portal
- Best practices for optimizing performance of SharePoint sites and portals in Microsoft 365
"},{"location":"spfx/support/#webparts","title":"WebParts","text":"Maintenance mode
- open-and-use-the-web-part-maintenance-page
- How to open SharePoint pages in maintenance mode
- Query String URL Tricks for SharePoint and Microsoft 365
- Generate Modern List Filter URL: Managed Metadata
?maintenancemode=true\n
- Disable SPFx web parts and extensions
?disable3PCode=1\n
DisableTelemetry
- Disabling Telemetry network traffic on SPFx workbench
?disableTelemetry=true\n
Debug localization
?forceLocale=fr-fr\n
Search vertical layout refresh
- View the vertical in the search result page
?cacheClear=true\n
Hide the navigation
- Hide the navigation and the header in modern SharePoint pages
?env=Embedded is the new ?isDlg=1 \n
?env=WebViewList\n
- SPFX webpart serving old files versions in Chrome
?Embed=true&sw=bypass\n```html\n\nFilter URL\n\n- [Generate Modern List Filter URL: Managed Metadata](https://piyushksingh.com/2019/05/24/generate-modern-list-filter-url-managed-metadata/)\n- [How to filter a SharePoint list or library using URL parameters](https://natechamberlain.com/2020/05/09/how-to-filter-a-sharepoint-list-or-library-using-url-parameters/)\n\n\nNews Links\n\n- [Edit news links](https://emilymancini.com/2020/01/16/editing-a-news-link-in-sharepoint-online/)\n\nto clear (debug) configs\n\n```html\n?stay=true\n
Error Handling
- simulating 429 throttling
- Simulating 429 Throttling in Microsoft Graph API (SharePoint/OneDrive workloads)
?test429=true\n
"},{"location":"spfx/support/#lists","title":"Lists","text":" - Switch to classic mode
- Organize-documents-and-sites-in-office-365
- Manage-large-lists-and-libraries-in-SharePoint
- Optimising Large List Updates with PnP Batch: Handling Throttling and Enhancing Efficiency
"},{"location":"spfx/support/#recyclebin","title":"RecycleBin","text":" - Bulk delete recycle bin items from a site in batch
"},{"location":"spfx/support/#create-documentation","title":"Create Documentation","text":" - article/ways-to-work-with-sharepoint
- Doctor - Creating SharePoint Documentation
"},{"location":"spfx/support/#login-error","title":"Login Error","text":" - How to log in to Microsoft\u2019s websites (MSDN forums, Azure Portal, SharePoint Online) when you get a 'Bad Request' error?
- Inconvenient Microsoft Teams Authentication Error \u2013 Clear all Cookies
- SPFx App webpart is blocked in various browsers
- Authenticating to Api\u2019s and Third Party Cookies
edge://settings/siteData?search=cookie\n
"},{"location":"spfx/support/#throttling","title":"Throttling","text":" - Avoid throttling in SharePoint Online by using RateLimit headers in API calls
- Using RateLimit headers to optimize the throttling behavior
"},{"location":"spfx/support/#graph-api-errors-429","title":"Graph API Errors 429","text":" - Simulating throttling in SharePoint
- How to use the Microsoft Graph SDK Chaos Handler to Simulate Graph API Errors
- Microsoft Graph Developer Proxy
"},{"location":"spfx/support/#tips","title":"Tips","text":" - The scientific methodology for troubleshooting SharePoint
- Open in Explorer or View with File Explorer in SharePoint
"},{"location":"spfx/support/#invalid-file-names-and-types","title":"Invalid File Names and Types","text":" - Invalid file names and file types in OneDrive, OneDrive for Business, and SharePoint
- File naming restrictions in SharePoint
- SharePoint Naming Guidelines
- File types supported for previewing files in OneDrive, SharePoint, and Teams
"},{"location":"spfx/support/#no-scripts-embedding-scripts","title":"No-Scripts / embedding-scripts","text":" - Don't allow embedding scripts on modern sites
- Advice on using unsupported customisations (and more) in a SharePoint Online environment
"},{"location":"spfx/support/#followed-sites","title":"Followed Sites","text":" - Social Following Sites on behalf of a user
"},{"location":"spfx/support/#o365-network-planning","title":"O365 Network planning","text":" - Network planning and performance tuning for Office 365
- Office 365 URLs and IP address ranges
"},{"location":"spfx/support/#clean-o365","title":"Clean O365","text":" - POWERSHELL SCRIPTS FOR KEEPING YOUR DEVELOPMENT ENVIRONMENT TIDY AND SPOTLESS
"},{"location":"spfx/support/#classic-features","title":"Classic Features","text":" - Classic Administration Links
"},{"location":"spfx/support/#webdav","title":"WebDAV","text":" - Troubleshooting Explorer view and mapped drives to SharePoint
- DrDAV - A PowerShell-based diagnostic script for Windows WebClient service.
- Zee Drive for Office 365
"},{"location":"spfx/support/#makros-vba","title":"Makros /VBA","text":" - [Readiness Toolkit to assess application compatibility for Mic
"},{"location":"spfx/support/#sway","title":"Sway","text":" - Your community for best practices and the latest news on Sway
"},{"location":"spfx/teams-adoption/","title":"Teams Adoption","text":""},{"location":"spfx/teams-adoption/#learning","title":"Learning","text":" - EDX: Microsoft Service Adoption Specialist
- Get started driving adoption of Microsoft Teams
- Tools and workshops: Plan, deliver, and adopt Microsoft Teams
"},{"location":"spfx/teams-adoption/#blog","title":"Blog","text":""},{"location":"spfx/teams-adoption/#material","title":"Material","text":" - Teamworktools
- Adoption Guide Book
- Adopt Microsoft Teams
- SharePoint and Office 365: Securely sharing, managing, governing, and protecting content at Microsoft
- Understand teams and channels in Microsoft Teams
"},{"location":"spfx/teams/","title":"Teams","text":" - An Everyday Guide to Office 365 Groups
- Microsoft Teams Platform Architecture Overview with Teams Founder, Bill Bliss
- Microsoft Teams developer documentation
"},{"location":"spfx/teams/#start-developing","title":"Start Developing","text":" - Prepare your Microsoft 365 tenant
- Get Started with the Getting Started Sample App
- App-Camp
- Enabling Dev Tools in the New Microsoft Teams Client
"},{"location":"spfx/teams/#support","title":"Support","text":" - Keyboard shortcuts for Microsoft Teams
- Microsoft Teams: How to clean cache
- A guide to troubleshooting Teams
"},{"location":"spfx/teams/#overview","title":"Overview","text":" - All-in-One Collaboration
- Teams and SharePoint: Better Together
- Everything You Need to Know About Microsoft Teams
- Inner Loop & Outer Loop
"},{"location":"spfx/teams/#planing","title":"Planing","text":" - Modern Governance f\u00fcr SharePoint Team Sites sind zu beachten
- Microsoft Teams planning guide
- Core components of Teams
- Limits and specifications for Microsoft Teams
- Difference in permission between an owner and a member
- Overview of Teams and SharePoint integration
"},{"location":"spfx/teams/#training-video","title":"Training video","text":" - Microsoft Teams video training
- Governance, management and lifecycle in Microsoft Teams
"},{"location":"spfx/teams/#developing","title":"Developing","text":" - Start building apps for Teams
- Build apps for Microsoft Teams
- Overview and Concepts - Part 1
- Do you need ngrok to develop Microsoft Teams apps?
- Features and Components analysis - Part 2
"},{"location":"spfx/teams/#coding","title":"Coding","text":" - A Yeoman Generator for Microsoft Teams
- Get started with Teams templates
- App Templates for Microsoft Teams
"},{"location":"spfx/teams/#azure-app-configuration","title":"Azure App Configuration","text":" - Configure Teams Applications with Azure App Configuration (nodeJS)
- teams-ext-action-azure-config
- General Microsoft 365 Developer SIG community call \u2013 8th of July, 2021
"},{"location":"spfx/teams/#personal-app-properties","title":"Personal App Properties","text":" - Store Microsoft Teams SPFx Personal App Properties
"},{"location":"spfx/teams/#deployment","title":"Deployment","text":" - How to deploy a Yo Teams generated project to Azure through Azure DevOps
- Team development for Microsoft Teams apps
"},{"location":"spfx/teams/#teams-toolkit-visual-studio-code","title":"Teams Toolkit Visual Studio Code","text":" - Teams Toolkit Visual Studio Code v5 Guide
- Bring your existing projects to Teams Toolkit for Visual Studio Code
"},{"location":"spfx/teams/#message-extensions","title":"Message Extensions","text":" - Where to start developing your messaging extension using Microsoft Teams Toolkit
"},{"location":"spfx/teams/#personal-apps","title":"Personal Apps","text":" - Personal apps
- Building Microsoft Teams tab using SharePoint Framework - Tutorial
- Create Microsoft Teams manifest manually for a web part and deploy it to Microsoft Teams
"},{"location":"spfx/teams/#administration","title":"Administration","text":" - Overview of Teams
- Which Office 365 Service to Use
- Selecting users for your Microsoft Teams pilot phase
- Top 10 Office 365 Best Practices Every Admin Should Know
- Getting Started with Microsoft Teams Administration
"},{"location":"spfx/teams/#teams-adviser","title":"Teams Adviser","text":" - Overview Microsoft Teams Advisor
"},{"location":"spfx/teams/#microsoft-teams-versus-sharepoint-teams","title":"Microsoft Teams versus Sharepoint Teams","text":" - http://blog.intlock.com/microsoft-teams-vs-sharepoint-teams-enhance-collaboration-work
- https://www.avepoint.com/blog/microsoft-teams/office-365-groups-vs-teams/
- http://blog.pixelmill.com/3580/microsoft-teams-sharepoint-destined-lifelong-partners/
"},{"location":"spfx/teams/#private-channels","title":"Private Channels","text":" - Top 5 things to know about private channels in Microsoft Teams
"},{"location":"spfx/teams/#deep-links","title":"Deep Links","text":" - Deep linking into a custom teams application
"},{"location":"spfx/teams/#tipps","title":"Tipps","text":" - https://collab365.community/microsoft-teams-hacks
- Office 365 Groups Naming Policy
- Get Office 365 Groups with Teams via PowerShell and the Microsoft Graph
- https://laurakokkarinen.com/useful-things-to-do-with-graph-api-teams-operations
- PowerShell scripts for managing Office 365 Groups and Microsoft Teams
"},{"location":"spfx/teams/#querys-reports","title":"Querys / Reports","text":" - How to find inactive Microsoft Teams you no longer need
- Get all Teams Groups
- Get Office 365 Groups with Teams via PowerShell and the Microsoft Graph
https://graph.microsoft.com/beta/groups?$filter=resourceProvisioningOptions/Any(x:x eq 'Team')\n
"},{"location":"spfx/teams/#blogs","title":"Blogs","text":""},{"location":"spfx/teams/#governance-with-teams","title":"Governance with teams","text":" - Automate governance in Microsoft Teams: Context and Goals
- Automate governance in Microsoft Teams: The Result
- Automate governance in Microsoft Teams: Implementation, v1
- Automate governance in Microsoft Teams: Implementation, v2
"},{"location":"spfx/teams/#governance-tools","title":"Governance Tools","text":""},{"location":"spfx/teams/#securing-teams","title":"Securing Teams","text":""},{"location":"spfx/teams/#devops","title":"DevOps","text":" - Create Azure DevOps pipelines for a Microsoft Teams app built with SPFx
"},{"location":"spfx/teams/#provisioning-with-template","title":"Provisioning with Template","text":" - Create Teams with template
- Provisioning Teams with Azure Functions and Microsoft Flow Part 1: Solution Overview
- Microsoft Teams \u2013 Automation of Teams Creation
- Provision Microsoft Teams with Azure Automation \u2013 Part I
- Episode #73 - Provisioning Teams with the PnP Provisioning Engine
- Episode #99 - Updates about Provisioning Teams with PnP Provisioning Engine
- Episode #120 - Microsoft Teams Templates
- Provisioning teams in Microsoft Teams using the PnP Provisioning Engine
- PiaSys/Conferences-Samples/Teams-Provisioning
- Manage Team Templates with PowerShell
"},{"location":"spfx/teams/#renaming-teams","title":"Renaming Teams","text":" - Renaming Teams and Channels Can Be Messy
- Renaming a Microsoft Team and the associated SharePoint site
"},{"location":"spfx/teams/#teams-for-education","title":"Teams for Education","text":" - Teams for Education, Fundamentals
"},{"location":"spfx/teams/#presenting-in-teams","title":"Presenting in Teams","text":" - The right way to present a PowerPoint file during a Microsoft Teams meeting
"},{"location":"spfx/teams/#dataverse","title":"Dataverse","text":" - Overview of Microsoft Dataverse for Teams
- Reshape the future of work with Microsoft Dataverse for Teams
- A Closer Look at Data Platform Capabilities in Project Oakdale
- Manage Microsoft Dataverse for Teams environments
- Power Platform in a Modern Data Platform Architecture
- Dataverse REST Builder
"},{"location":"spfx/teams/#pro-contra-sharepointdataverse","title":"Pro / Contra SharePoint/Dataverse","text":"Making Good Technology Decisions: Data Storage 8 top reasons to use Dataverse or SharePoint lists in the Power Platform Key considerations and differences between Lists, Dataverse for Teams, and Dataverse
"},{"location":"spfx/testing/","title":"Testing","text":""},{"location":"spfx/testing/#typescript-testing","title":"TypeScript Testing","text":" - Introduction to Test-Driven Development (TDD) with Classic TDD Example
- How to Setup a TypeScript + Node.js Project
- Simple TypeScript Starter | 2020
- Introduction to Test-Driven Development (TDD) with TypeScript | 2021
"},{"location":"spfx/testing/#toolchain-setup","title":"Toolchain Setup","text":" - automated code reviews ts-project 1
- automated code reviews ts-project 2
"},{"location":"spfx/testing/#playwright","title":"Playwright","text":""},{"location":"spfx/testing/#react-testing-library","title":"React Testing Library","text":" - React Testing Library
- Testing In React Tutorial - Jest and React Testing Library
"},{"location":"spfx/testing/#jest","title":"Jest","text":" - SharePoint Framework unit-tests with Jest
- Writing unit tests for your SharePoint Framework components
- Unit Test your SharePoint Framework solution with Jest
- Demo: Simplify SPFx test configuration with Jest Presets
- jest-preset-spfx-react16
- SPFx Deep Dive Webinar Series: Unit Test SPFx Solutions using Jest and Enzyme
- Community Demo - Simplify SPFx test configuration with Jest Presets
- Test-Driven Development with React, Jest, and Enzyme - Part 1
- PiaSys: Episode #33 - Testing SharePoint Framework Solutions with Jest and Enzyme
- PiaSys: spfx-testing-v-1-9-1
- Extend SPFx solution testability: Let\u2019s start
- Extend SPFx solution testability: TDD in Data Access Layer
- Extend SPFx solution testability: TDD in View Layer
- Extend SPFx solution testability: TDD in View Layer part 2
- Extend SPFx solution testability: dealing with legacy code and async components
- Mock teams library in SPFx project
- Publish Code Coverage Results in Azure DevOps Pipeline for React
- Mocking 3rd party libraries with jest for SPFx developers
- spfx-wp-react-app
- State of SPFx unit testing in 2023
"},{"location":"spfx/testing/#testing-hooks","title":"Testing Hooks","text":" - react-hooks-testing-library
- spfx-ut-library - Mocking library for SPFx
"},{"location":"spfx/testing/#samples","title":"Samples","text":" - SharePoint Framework Unit-Tests Sample with Jest
- PFx-Jest-Enzyme-Sinon unit testing starter kit
- React Inversion Of Control Web Part with Unit Tests using Jest and Enzyme
- message-bar
- Table Of Contents for SharePoint
- unit-test-samples
- mgwdev-spfx-utfx
- SharePoint Framework Unit Tests - Part 1
- Getting started with unit testing SPFx
"},{"location":"spfx/testing/#tdd","title":"TDD","text":" - Introduction to Test driven development(TDD) of SharePoint Framework solution using Jest & Enzyme
"},{"location":"spfx/testing/#generate-test-data","title":"Generate test data","text":" - Mockaroo
- Generatedata
- Public APIs
"},{"location":"spfx/testing/#frontend-testing-witd-playwright","title":"Frontend Testing witd Playwright","text":" - Getting started with Playwright component testing
- Test Your Site In Every Browser
"},{"location":"spfx/theme/","title":"Theme","text":" - How to create a multicolored theme fora modern sharepoint online site
- BRK3090 - Customizing Modern SharePoint Sites: Branding, Site Scripts and Site Designs
- https://github.com/SharePoint/sp-dev-fx-webparts/tree/master/samples/react-themes
- http://tricky-sharepoint.blogspot.ch/2017/04/using-sharepoint-themes-colors-in-spfx.html
- http://sass-lang.com/guideaspx
- How to: Use PowerShell to customize the theme of a SharePoint Modern Site
- How to make your web parts responsive to the parent container
- Brand modern SharePoint Online sites
- two approaches to applying modern theme
- SPFX integration for theme support
- Creating a Section Aware webpart in SPFx
- Adding support for theme variants in SPFx web parts
"},{"location":"spfx/theme/#get-theme","title":"Get Theme","text":"$t = Get-PnPTenantTheme -Name \"Contoso Team Theme\"\n$t.Palette | ConvertTo-Json | Clip\n
"},{"location":"spfx/theme/#section-backgrounds","title":"Section Backgrounds","text":" - Supporting section backgrounds
- Develop SPFx web parts for different section designs using CSS
- Using Custom Color for Section Backgrounds and Page Headers
- Adding support for theme variants in SPFx web parts
"},{"location":"spfx/theme/#office-fabric-tips","title":"Office Fabric Tips","text":" - How to handle table component of Office UI Fabric
- Office UI Fabric Table Example
- sp-modern-classes
"},{"location":"spfx/theme/#responsive-tips","title":"Responsive Tips","text":" - How to test responsiveness and user experience for SPFx web parts properly
- Simulate Mobile Devices with Device Mode in Chrome DevTools
"},{"location":"spfx/theme/#css-learning","title":"CSS Learning","text":""},{"location":"spfx/theme/#css-tips","title":"CSS Tips","text":" - CodyHouse is a library of HTML, CSS, JS nuggets
- A Complete Guide to Grid
- CSS Grid\u200a\u2014\u200aResponsive layouts and components
- MDN: Use CSS to solve common problems
- Part 1: Style Options & How to Import
- Part 2: Dynamic Bundling of Styles
- Guidance for CSS in SharePoint Framework
"},{"location":"spfx/theme/#css-grid","title":"CSS Grid","text":" - A Complete Guide to CSS Grid
- Grid - Einf\u00fchung in 4 Schritten
- CSS Grid \u2013 Einf\u00fchrung in Gestaltungsraster mit dem Grid Layout Module
- Grid by Examples
"},{"location":"spfx/theme/#flexbox","title":"Flexbox","text":" - An Interactive Guide to Flexbox
- A Complete Guide to Flexbox
- Interactive Flex Generator
"},{"location":"spfx/theme/#css-box-model","title":"CSS Box Model","text":""},{"location":"spfx/theme/#css-specification","title":"CSS Specification","text":" - Specificity Calculator
- Specificity
"},{"location":"spfx/theme/#tools","title":"Tools","text":" - SPFxThemeWiz
- codepen.io
- caniuse.com
- CSS Validation Service
- mozilla addon - web-developer
- open-ui.org
- shadcn/ui - Build your component library
"},{"location":"spfx/theme/#testing","title":"Testing","text":" - Panthema web part
- How to test SPFx web part theming
"},{"location":"spfx/theme/#debug","title":"Debug","text":""},{"location":"spfx/theme/#output-theme-variables","title":"Output theme variables","text":" var palette = window.__themeState__.theme;\nvar containerElement = document.createElement(\"div\");\ncontainerElement.style.padding = \"1em\";\ncontainerElement.style.fontFamily = \"sans-serif\";\ncontainerElement.style.columnCount = \"3\";\ndocument.body.appendChild(containerElement);\nvar arr = Object.keys(palette).map(k => {\nvar colorElement =document.createElement(\"div\");\ncolorElement.style.marginTop = \"1ex\";\nvar nameElement =document.createElement(\"span\");\nnameElement.style.display = \"inline-block\";\nnameElement.style.minWidth= \"150px\";\nnameElement.innerHTML = k\ncolorElement.appendChild(nameElement );\nvar squareElement = document.createElement(\"span\");\nsquareElement.style.display= \"inline-block\";\nsquareElement.style.border= \"solid 1px #888\";\nsquareElement.style.width = \"12px\";\nsquareElement.style.height = \"12px\";\nsquareElement.style.margin = \"0 2px 0 1ex\";\nsquareElement.style.backgroundColor = window.__themeState__.theme[k];\ncolorElement.appendChild(squareElement);\nvar hexElement =document.createElement(\"span\");\nhexElement.innerHTML = window.__themeState__.theme[k];\ncolorElement.appendChild(hexElement);\ncontainerElement.appendChild(colorElement);\n});\n
window.spModuleLoader._bundledComponents[\"b6917cb1-93a0-4b97-a84d-7cf49975d4ec\"].PageManager._instance.pageContext.legacyPageContext\n
"},{"location":"spfx/toolchain/","title":"Toolchain","text":""},{"location":"spfx/toolchain/#overview","title":"Overview","text":" - SharePoint Framework toolchain
- SharePoint Framework development tools and libraries
"},{"location":"spfx/toolchain/#from-classic-to-modern","title":"From classic to modern","text":" - Conquer your dev toolchain in 'Classic' SharePoint \u2013 Part 1
- Conquer your dev toolchain in 'Classic' SharePoint \u2013 Part 2
- Conquer your dev toolchain in 'Classic' SharePoint \u2013 Part 3
- Conquer your dev toolchain in 'Classic' SharePoint \u2013 Part 4
"},{"location":"spfx/toolchain/#webpack","title":"Webpack","text":" - webpack-basics-part-1
- getting-up-to-speed-with-webpack
- (Update the Webpack Config
"},{"location":"spfx/toolchain/#prepare","title":"Prepare","text":" - Preparing development machine for client-side SharePoint projects
"},{"location":"spfx/toolchain/#commands","title":"Commands","text":" - SPFx Commands Cheat Sheet
"},{"location":"spfx/toolchain/#gulp","title":"Gulp","text":" - Getting up to speed with Gulp
- Gulp: Basics
- SPFx Automatically Generating Revision Numbers
- SPFx Automatically Generating Revision Numbers + Versioning
- One command to create a clean solution package
"},{"location":"spfx/toolchain/#gulp-dist","title":"gulp dist","text":" - One command to create a clean solution package
install npm package
npm install gulp-sequence --save-dev\n
add to gulpfile.js
if (process.argv.indexOf('dist') !== -1){\nprocess.argv.push('--ship');\n}\n\nconst gulpSequence = require('gulp-sequence');\n\ngulp.task('dist', gulpSequence('clean', 'bundle', 'package-solution'));\n
"},{"location":"spfx/toolchain/#deployment","title":"Deployment","text":" - https://github.com/estruyf/UploadToOffice365SPFx/blob/master/gulpfile.js
- https://github.com/estruyf/gulp-spsync-creds
- https://n8d.at/blog/how-to-version-new-sharepoint-framework-projects/?platform=hootsuite
"},{"location":"spfx/toolchain/#npm","title":"NPM","text":""},{"location":"spfx/toolchain/#package-lockjson","title":"package-lock.json","text":" - https://medium.com/coinmonks/everything-you-wanted-to-know-about-package-lock-json-b81911aa8ab8
"},{"location":"spfx/toolchain/#optimization-packages","title":"Optimization packages","text":" - https://docs.microsoft.com/en-us/sharepoint/dev/spfx/toolchain/optimize-builds-for-production
- https://docs.microsoft.com/en-us/sharepoint/dev/spfx/toolchain/optimize-builds-for-production
- https://rencore.com/sharepoint-framework/script-check/
- https://www.techmikael.com/2018/08/an-adventure-into-optimizing-sharepoint.html
"},{"location":"spfx/toolchain/#update-packages","title":"Update packages","text":" - https://gist.github.com/iki/ec32bfdeeb23930efd15
# check\nnpm outdated -g\n\n# install\nnpm -g i npm-check\n\n# interactive update of global packages\nnpm-check -u -g\n\n# interactive update for a project you are working on\nnpm-check -u\n\n# unistall package\nnpm uninstall -g <module>\n
"},{"location":"spfx/toolchain/#check-package-version","title":"Check package version","text":" - https://github.com/dylang/npm-check
List global npm packages versions
npm list -g --depth 0\n
List detail global npm package versions from one package
npm view @microsoft/generator-sharepoint\n
"},{"location":"spfx/toolchain/#pnpm","title":"PNPM","text":" - NPM, Yarn and PNPM: Which Package Manager Should You Use for SharePoint Framework Projects?
- pnpm - Package Manager
- Using pnpm in SPFx projects
"},{"location":"spfx/toolchain/#packagejson","title":"Package.json","text":" - https://docs.npmjs.com/files/package.json
"},{"location":"spfx/toolchain/#security","title":"Security","text":" - have-you-ever-thought-about-checking-your-dependency-for-vulnerabilities
- 5 ways to manage and monitor your digital workplace
"},{"location":"spfx/toolchain/#installation","title":"Installation","text":" - getting-up-to-speed-with-node-js-and-npm
"},{"location":"spfx/toolchain/#update-spfx-version","title":"Update SPFx version","text":" - go into solution folder
- search f\u00fcr \"@micorosoft/sp-\"
- update all package (latest or version)
npm outdated\n
npm install package-name@latest --save\n
npm install package-name@version --save\n
gulp clean\n
gulp build\n
"},{"location":"spfx/toolchain/#test","title":"Test","text":"gulp serve --nobrowser\n
"},{"location":"spfx/toolchain/#tips","title":"Tips","text":" - https://pdemro.com/improve-sharepoint-framework-build-times-by-hacking-gulp-and-webpack
- https://github.com/pdemro/spfx-gulpfile-hack
"},{"location":"spfx/toolchain/#deployment_1","title":"Deployment","text":"npm i\ngulp clean\ngulp build\ngulp --ship\ngulp package-solution --ship\n
"},{"location":"spfx/toolchain/#dependencies","title":"Dependencies","text":" - https://docs.npmjs.com/cli/install
npm install saves any specified packages into dependencies by default. Additionally, you can control where and how they get saved with some additional flags:\n\n-P, --save-prod: Package will appear in your dependencies. This is the default unless -D or -O are present.\n\n-D, --save-dev: Package will appear in your devDependencies.\n\n-O, --save-optional: Package will appear in your optionalDependencies.\n
"},{"location":"spfx/toolchain/#version-manger-nvm-npx","title":"Version Manger (nvm, npx)","text":" - How to install Node.js on Windows
- Node Version Manager (nvm) for Windows
- Use SPFx and NVM in an easy way with PowerShell
- How to use specific NodeJS version with your SPFx project
- Better Node.js Install Management with Node Version Manager
- Use Node Version Manager to develop your SPFx apps
// check version\nnode --version\n\n// list installed versions of node (via nvm)\nnvm ls\n\n// To list available remote versions on Windows 10 you can type\nnvm list available\n\n// install a specific version of node\nnvm install 10.22.1\nnvm install 8.17.0\n\nnvm list\n\n// switch version of node\nnvm use 10.22.1\n\n# for spfx deployment\n\nnpm i -g gulp\nnpm i -g yo\nnpm i -g @microsoft/generator-sharepoint\ngulp trust-dev-cert\n\n# for spfx advanced\nnpm i -g @pnp/office365-cli\nnpm i -g spfx-fast-serve\nnpm i -g @pnp/generator-spfx\nnpm i -g npm-check\n
"},{"location":"spfx/toolchain/#eslint","title":"ESLint","text":""},{"location":"spfx/typescript/","title":"Typescript","text":""},{"location":"spfx/typescript/#reference","title":"Reference","text":" - TypeScript Cheatsheet
- Learn X in Y minutes
- TypeScript Handbook
- Why TypeScript
- pluralsight typescript course
- https://github.com/Microsoft/TypeScript/wiki
- https://github.com/basarat/typescript-book
- https://basarat.gitbooks.io/typescript/content/docs/getting-started.html
- https://www.gitbook.com/book/basarat/typescript/details
- https://codewich.com/
- https://github.com/lakshaydulani/typescript-summary
- https://github.com/netdur/typescript-design-patterns
- clean-code-typescript
"},{"location":"spfx/typescript/#typescript-version-for-spfx","title":"Typescript Version for SPFx","text":" - Use Different Versions of TypeScript in SPFx projects
"},{"location":"spfx/typescript/#tutorial","title":"Tutorial","text":" - http://dotnetdetail.com/learn-typescript-from-basic/
- http://dotnetdetail.com/learn-typescript-step-by-step-with-suitable-example/
"},{"location":"spfx/typescript/#library","title":"Library","text":" - https://github.com/alexjoverm/typescript-library-starter
"},{"location":"spfx/typescript/#typings","title":"Typings","text":" - https://github.com/cashfarm/autotypes
"},{"location":"spfx/typescript/#code-snippets","title":"Code Snippets","text":""},{"location":"spfx/typescript/#isemptystring","title":"isEmptyString","text":"/**\n * Check if the value is null, undefined or empty\n *\n * @param value\n */\nprivate _isEmptyString(value: string): boolean {\nreturn value === null || typeof value === \"undefined\" || !value.length;\n}\n
"},{"location":"spfx/typescript/#_isnull","title":"_isNull","text":"/**\n * Check if the value is null or undefined\n *\n * @param value\n */\nprivate _isNull(value: any): boolean {\nreturn value === null || typeof value === \"undefined\";\n}\n
"},{"location":"spfx/upgrade/","title":"Upgrade","text":""},{"location":"spfx/upgrade/#office-365-cli","title":"Office 365 CLI","text":" - https://blog.mastykarz.nl/upgrade-sharepoint-framework-project-office-365-cli/
- https://tahoeninjas.blog/2018/06/12/upgrade-your-spfx-solution-to-sharepoint-framework-package-v1-5/
"},{"location":"spfx/upgrade/#update-framework","title":"Update Framework","text":" go into solution folder
npm outdated\n
search f\u00fcr \"@micorosoft/sp-\" update all
npm install package-name@version --save\n
or
npm install package-name@latest --save\n
gulp clean\ngulp build\n
"},{"location":"spfx/upgrade/#support-issues","title":"Support Issues","text":""},{"location":"spfx/upgrade/#azure-permission","title":"Azure Permission","text":" - http://spblog.net/post/2018/09/19/You-might-experience-errors-when-first-trying-new-SPFx-16-features
- https://github.com/SharePoint/sp-dev-docs/issues/2473#issuecomment-419111117
bs - Go to the \"API Management\"-section in the SharePoint Preview Admin Center (https://TENANT-admin.sharepoint.com/_layouts/15/online/AdminHome.aspx#/webApiPermissionManagement) - Ensure that no permissions are there anymore - Head over to the App Registrations Page in the Azure Portal. - Click \"View all applications\" - Click \"SharePoint Online Client Extensibility Web Application Principal\" - Choose \"Settings\" > \"Required Permissions\" - Click \"Add\" - \"Select an API\" and choose \"Windows Azure Active Directory\", press \"Select\" - \"Select Permissions\" and choose \"Sign in and read user profile\", press \"Select\" - Click \"Done\" - Click \"Grant permissions\" and \"Yes\" - Update the app package in the app catalog - Head back to the \"API Managment\"-section: - Ensure that \"Windows Azure Active Directory\" is already listed in the approved permissions (this permission should be here because of the previously executed steps). - Approve all permission requests one by one. Once this is done, reload the page to ensure that all permissions are actually approved as the SharePoint UI doesn't always behave as expected. - Wait a couple of minutes - Log out of SharePoint, close all browser windows and log in again - Access your intranet and everything should be fine
"},{"location":"spfx/userprofile/","title":"User Profile","text":" - Looking at Things in Profile
"},{"location":"spfx/userprofile/#sync-user-picture","title":"Sync User Picture","text":" - Information about profile picture synchronization in Microsoft 365
- SharePoint Online UserProfiles and the story about synchronizing with Azure Active Directory-Part 1
- SharePoint Online UserProfiles and the story about synchronizing with Azure Active Directory-Part 2
- How the UserProfile in Azure Active Directory and how a Mailbox in Exchange Online looks like
- How user profile picture synchronization works in Microsoft 365
- How to Control Updates for User Photos in Microsoft 365 Apps
- Change your own profile picture as a Guest in Microsoft Teams
- Profilbilder synchronisieren in Microsoft 365
"},{"location":"spfx/userprofile/#get-user-picture","title":"Get User Picture","text":" - How to get SharePoint profile picture
"},{"location":"spfx/userprofile/#edit-user-profiles","title":"Edit User Profiles","text":""},{"location":"spfx/ux/","title":"UX","text":""},{"location":"spfx/ux/#style-guide","title":"Style Guide","text":" - Simple Style Guide Generator for SharePoint and Office 365 Development
"},{"location":"spfx/ux/#design-rules","title":"Design Rules","text":" - Laws aof UX
- RefactoringUI
"},{"location":"spfx/ux/#ux-tools","title":"UX Tools","text":" - SP Axure Library Downloads
- CSS Grid Generator
- CSS shadows Generator
- neumorphism
- Open-Source UI elements made with HTML and CSS
"},{"location":"spfx/ux/#page-layout","title":"Page layout","text":" - Design Review: Page layout and typography of communication sites
"},{"location":"spfx/versions/","title":"SPFx Versions","text":" - Overview SPFx Versions
- SPFx Compatibility Matrix
- SPFx development tools and libraries compatibility
- SPFx project doctor
m365 spfx project doctor --output md > \"doctor-report.md\"\n
"},{"location":"spfx/versions/#check-versions","title":"Check versions","text":" - What version of Node can I use for SharePoint Framework?
- SharePoint 2016, 2019 & SharePoint Online: Which Version of the SharePoint Framework Should You Install?
- What SharePoint Framework version can I use?
- How to check SharePoint Framework version
"},{"location":"spfx/versions/#v18","title":"v1.8","text":" - What's in the latest Update of SPFx 1.8.0?
- Release notes for SharePoint Framework 1.8
- Using the full potential of React in SharePoint Framework 1.8.0
- SPFx 1.8 now supports Office Fabric React 6.156.0
- SharePoint Framework 1.8 Has Been Released!
- Common Issues in SPFx 1.8.0 with TypeScript 3.3
"},{"location":"spfx/versions/#office-fabric-version","title":"Office Fabric Version","text":" - Use Office UI Fabric React components in your SharePoint client-side web part
"},{"location":"spfx/versions/#fluent-ui","title":"Fluent UI","text":""},{"location":"spfx/versions/#azure-communication-service-ui-library","title":"Azure Communication Service UI Library","text":" - Azure Communication Services UI Library - UI Components
"},{"location":"spfx/webhooks/","title":"Webhooks","text":""},{"location":"spfx/webhooks/#reference","title":"Reference","text":" - introduction-to-sharepoint-webhook
"},{"location":"spfx/webhooks/#video","title":"Video","text":" - PnP Webcast - Introduction to SharePoint Webhooks -SharePoint Online Webhooks with Azure Functions
"},{"location":"spfx/webhooks/#sample","title":"Sample","text":" - WebHooks.List.AzureAD
- WebHooks.List
"},{"location":"spfx/webhooks/#guide","title":"Guide","text":" - SharePoint web hooks Azure AD reference implementation - Deployment guide
- Using Azure Functions with SharePoint webhooks
"},{"location":"spfx/webparts/","title":"Webparts","text":""},{"location":"spfx/webparts/#find-weparts","title":"Find WeParts","text":" - Find out where SPFx Web Parts are being used in Modern SharePoint sites
- Locatepages where particular webpart
- Upgrading the PnP Modern Search Web Parts from v3 to v4 - UpgradeWebParts
"},{"location":"spfx/webparts/#design","title":"Design","text":" - SharePointWireframes
- Designing a SharePoint web part
- SharePoint Framework Design Series: Property Panes \u2014 Part I
- SharePoint Framework Design Series: Property Panes \u2014 Part II
- SharePoint Framework Design Series: Property Panes \u2014 Part III
- SharePoint Framework Design Series: Web Part Titles and Descriptions
- harePoint Framework Design Series: Layout Patterns \u2014 Part I
"},{"location":"spfx/webparts/#localization","title":"Localization","text":" - Localize SharePoint Framework client-side web parts
- Implementing localization file checks to prevent issues in SharePoint Framework solutions
- Simplify localization in SharePoint Framework projects
- Using the SFPx library component for simplifing the localization experience
"},{"location":"spfx/webparts/#version","title":"Version","text":" - Display the solution version in your web part
"},{"location":"spfx/webparts/#properties","title":"Properties","text":" - spfx-web-part-properties-dynamic-dropdown
- simplify-adding-web-parts-with-preconfigured-entries
- Web part properties in the SharePoint Framework \u2013 part 1
- Web part properties in the SharePoint Framework \u2013 part 2
- Creating a property pane for editing items in your SPFx web parts
- Understanding manifest.js file in spx project
- Understanding spfx Solution Structure
- Restrict Permissions on Editing SharePoint SPFx Property Pane Configurations
- SharePoint Framework Web Part and Property Pane Lifecycles
- Integrate PnP SPFx React controls inside the Property Pane collection data control
- an SPFX Tour sample WebPart
"},{"location":"spfx/webparts/#edit-mode","title":"Edit Mode","text":" - Trigger the edit page experience from your SharePoint Framework solution
- Check the page display mode from within your SharePoint Framework extensions
"},{"location":"spfx/webparts/#sppagecontextinfo","title":"spPageContextInfo","text":" - Access _spPageContextInfo details in SharePoint Framework
In the F12 Developer Console, you can call
window.spModuleLoader._bundledComponents[\"b6917cb1-93a0-4b97-a84d-7cf49975d4ec\"].PageManager._instance.pageContext.legacyPageContext\n
"},{"location":"spfx/webparts/#dynamic-default-properties","title":"Dynamic default properties","text":" - Dynamic default properties in SPFx web parts
"},{"location":"spfx/webparts/#group-webpart","title":"Group WebPart","text":" - SharePoint Online Group Calendar Web Part Tutorial
"},{"location":"spfx/webparts/#news-webpart","title":"News WebPart","text":" - EXPIRING NEWS ACROSS MODERN SHAREPOINT
- Injecting HTML content with PnP PowerShell
"},{"location":"spfx/webparts/#highlighted-content-web-part-hcwp","title":"Highlighted Content Web Part (HCWP)","text":" - Highlighted Content WebPart
- Use the Highlighted content web part
"},{"location":"spfx/webparts/#document-library-webpart","title":"Document Library WebPart","text":" - Can the document library web part look like Stream?
"},{"location":"spfx/webparts/#help-tutorial-webpart","title":"Help / Tutorial WebPart","text":" - Add in-place scripted tutorials in your SPFx components
"},{"location":"spfx/webparts/#samples","title":"Samples","text":" - SharePoint Framework Client-Side Web Part Samples
- https://github.com/wobba/spfx4fun/tree/master/react-pageheaderconfigurator
- https://github.com/wobba/sp-dev-fx-webparts/tree/modernscripted/samples/react-script-editor
- http://www.sharepointnutsandbolts.com/2017/03/provisioning-modern-pages-and-spfx-web-parts.html
- https://msdn.microsoft.com/en-us/pnp_articles/modern-experience-customizations-customize-pages#using-the-pnp-support-for-modern-pages-and-client-side-web-parts
- https://github.com/OlivierCC/spfx-40-fantastics
- https://www.codeproject.com/Articles/1235629/Sharepoint-Framework-SPFx-Large-List-Webpart-using
- https://github.com/SharePoint/sp-dev-fx-webparts/tree/master/samples
- https://gist.github.com/vman/1941ce6c61cebca1bfe3e490ce63185e#file-msgraphnospfx-js
- https://veenstra.me.uk/2017/07/18/office-365-spfx-samples-a-complete-overview/
- https://veenstra.me.uk/2017/08/01/office-365-sharepoint-spfx-web-parts-that-are-not-part-of-the-spfx-samples/
- https://blog.velingeorgiev.com/how-add-spfx-webpart-full-width-column
- https://blog.velingeorgiev.com/sharepoint-framework-slide-swiper
- https://techcommunity.microsoft.com/t5/SharePoint-Blog/MVP-Blog-Build-Targeted-Training-on-Office-365-Adoption-Center/ba-p/170840
- http://www.carlosmontilla.com/single-post/2017/12/05/Create-an-Enterprise-Search-Web-Part-for-Modern-Pages
- https://github.com/hugoabernier/react-calendar-feed
- https://github.com/aflyen/spfx-webpart-sitesifollow
- https://github.com/aflyen/spfx-extension-fullpagecanvas
- Office UI Fabric Persona with Skype for Business status integration
- Facebook Feed webpart with custom UI
- Web Part built using React showing documents trending in the current site
- Employee Directory with SPFX ReactJS Using SharePoint Search Rest Api \u2013 Modern Webpart
- Puzzlepart presents the modern flexible Divider web part
- Vimeo webpart
- Filtered Documents webpart
- Birthday SPFx, Web Part
- Celebrate work anniversaries on your SharePoint Intranet
- Add Google Charts into SharePoint Framework Web Part
- Display Google Fit Information | Getting Started With Google Fitness REST API
- How to let users fill out new documents based on a template in Office client directly from SharePoint | Office URI Schemes
- Google search web part
- Promoted Links Web Part
- List Pivot Table \u2013 WebPart
- React Flow Diagram Web Parts
- Fabric UI React GroupedLists inside Pivot Tabs
- React Tree Organization Web Part
- react-display-hierarchy
- react-cs-images-suggestion: a SPFX sample webpart using Azure Cognitive Services
- Share data between SPFx webpart
- Office 365 Usage Reports using Microsoft Graph API
- Group People Web Part | gitlab.lsonline.fr
- How To Create/ Generate QRcode In SPFx Web Part
- Create a simple a \u2013 z in page
- spfx-react-covid-19 - chart
- spfx-jquery-owlcarousel
- sudharsank - samples
"},{"location":"spfx/webparts/#project-webparts","title":"Project WebParts","text":" - Modern Project Site Example
- VerticalTimeline
- react-google-charts - timeline
- JavaScript Calendar React
"},{"location":"spfx/webparts/#isolated-webparts","title":"Isolated WebParts","text":" - Isolated web parts
- SPFx isolated web parts with AadHttpClient
"},{"location":"spfx/webparts/#filtering-webparts","title":"Filtering WebParts","text":" - SPFx - Image Gallery with filtering
- Microsoft Search and the integrated image search in M365
"},{"location":"spfx/webparts/#send-mail","title":"Send Mail","text":" - SPFx - Send Emails & Attachments With Graph API
- How to Send an Email Using a Graph API in SharePoint Framework (SPFx)
- How To Attach A File While Sending Email Using Graph API In SharePoint Framework (SPFx)
"},{"location":"spfx/webparts/#external-lib","title":"External Lib","text":" - How to add external libraries and assets in SharePoint client-side web part
- React Templates using SPFx Library Component
- How to consume a third-party SPFx library
"},{"location":"spfx/webparts/#config-variables","title":"Config Variables","text":" - Using .env files in SharePoint Framework development
"},{"location":"spfx/webparts/#create-pdf","title":"Create PDF","text":" - Generate PDF Document In Spfx
"},{"location":"spfx/webparts/#caml-query","title":"CAML Query","text":" - Query schema
- CamlJs
- Camlex.NET.dll
- CAML Query
"},{"location":"spfx/webparts/#terms-sets","title":"Terms Sets","text":" - Display hierarchical Term Sets to your Web Part
- Get all child terms from term group in SharePoint Taxonomy using PnP JS
- How to filter list items by Managed Metadata Fields or Taxonomy Columns
"},{"location":"spfx/webparts/#reusable-react-control","title":"Reusable React control","text":" - SPFx reusable React control field-picker-list-data
"},{"location":"spfx/webparts/#share-data-in-webpart","title":"Share Data in WebPart","text":" - Share data between SPFx webpart
"},{"location":"spfx/webparts/#dynamic-load-webpart","title":"Dynamic Load WebPart","text":" - https://github.com/wobba/spfx4fun/blob/master/DynamicLoad
"},{"location":"spfx/webparts/#samplesexercises","title":"Samples/Exercises","text":" - https://github.com/ktskumar/spfxguidesamples
- https://www.c-sharpcorner.com/article/amazing-guide-to-sharepoint-framework-development-with-react/
- https://github.com/agzertuche/SPFx-Exercises
"},{"location":"spfx/webparts/#overview-modern-webparts","title":"Overview Modern WebParts","text":" - http://aurorabits.com/modern-sharepoint-web-parts/
- http://aurorabits.com/modern-sharepoint-web-parts-2/
"},{"location":"spfx/webparts/#available-webparts","title":"Available WebParts","text":" - https://tracyvanderschyff.com/2018/07/23/overview-of-sharepoint-online-web-parts/
- Available web parts
"},{"location":"spfx/webparts/#modern-pages","title":"Modern Pages","text":" - http://www.sharepointnutsandbolts.com/2017/03/provisioning-modern-pages-and-spfx-web-parts.html
"},{"location":"spfx/webparts/#css-tips","title":"CSS Tips","text":" - Alternative to innerHTML in SharePoint Framework web parts
- Add SPFx Web Part to a Full Width Column
"},{"location":"spfx/webparts/#rest-call","title":"Rest Call","text":" - async rest calls with promises httpclient jquery
- Get list of frequent sites in SharePoint
- Get list of recent documents in SharePoint
"},{"location":"spfx/webparts/#cors","title":"CORS","text":" - Getting around CORS issues in SPFx with SPHttpClient
"},{"location":"spfx/webparts/#products","title":"Products","text":" - http://bindtuning.com/webparts
"},{"location":"spfx/webparts/#package-bundling","title":"Package bundling","text":" - Video Dynamic SPFx Package Bundling
"},{"location":"spfx/webparts/#web-accessibility-a11y","title":"Web accessibility (a11y)","text":" - Web accessibility (also referred to as a11y) in React components
"},{"location":"spfx/webparts/#redirecting","title":"Redirecting","text":" - SPFx Anchor Tags
- Navigating to other pages in SharePoint Framework from code
- sp-starter-kit: redirect
"},{"location":"spfx/webparts/#dialog","title":"Dialog","text":" - Modal Dialog, show classic SharePoint forms
"},{"location":"spfx/webparts/#wiki-pages","title":"Wiki Pages","text":" - Create a TOC for your SharePoint Wiki pages
"},{"location":"spfx/webparts/#replacing-the-out-of-the-box-web-part","title":"Replacing the out of the box web part","text":" - Replacing the out of the box divider web part with this one
Connect-PnPOnline https://tenantname-admin.sharepoint.com\n$ctx = Get-PnPContext\n$tenant = New-Object -TypeName \"Microsoft.Online.SharePoint.TenantAdministration.Tenant\" -ArgumentList $ctx\n# Get existing list of blocked web parts\n$ids = @($tenant.DisabledWebPartIds)\n# Add the id for the out of the box Divider web part\n$ids += [Guid]'2161a1c6-db61-4731-b97c-3cdb303f7cbb'\n$ids = $ids | Where-Object {$_}\n$tenant.DisabledWebPartIds = $ids\n$tenant.Update()\nInvoke-PnPQuery\n
"},{"location":"spfx/webparts/#office-add-in","title":"Office Add-in","text":" - Register an Office Add-in that uses single sign-on (SSO) with the Microsoft identity platform
- Enable single sign-on (SSO) in an Office Add-in
"},{"location":"tools/blazor/","title":"Blazor","text":""},{"location":"tools/blazor/#overview","title":"Overview","text":" - Awesome Blazor
- Blazor University
- aspnet-core-blazor
- Blazor Web Assembly and Microsoft Graph with Azure Functions
"},{"location":"tools/blazor/#teams-apps","title":"Teams Apps","text":" - Blazorade-Teams
- Video: Building Microsoft Teams Apps with Blazor
- PnP Dev General Community Call Demo, Feb 4 2021 - Blazor Teams App
"},{"location":"tools/blazor/#blogger","title":"Blogger","text":""},{"location":"tools/blazor/#workshop","title":"Workshop","text":" - Blazor - app building workshop
- Blazor MS-Teams Tab App Series
- Video: Microsoft Graph Toolkit with Blazor
"},{"location":"tools/contentful/","title":"Contentful","text":""},{"location":"tools/contentful/#overviews","title":"Overviews","text":" - Create a Blog App With Next.js and Contentful API
"},{"location":"tools/contentful/#samples","title":"Samples","text":""},{"location":"tools/dev/","title":"Dev Tools","text":" - 2022.stateofjs
- 2022.stateofcss
- Web Almanac
"},{"location":"tools/dev/#secret-knowledge","title":"Secret knowledge","text":" - The book of Secret knowledge
"},{"location":"tools/dev/#html-prototype","title":"Html Prototype","text":" - html-codepen
- codesandbox
- images-unsplash
- icons-iconfinder
"},{"location":"tools/dev/#stack-2020","title":"Stack 2020","text":" - My Tech Stack (2020 Edition)
"},{"location":"tools/dev/#nextjs","title":"Next.js","text":" - Awesome Next.js
- Next.js and Reactstrap Admin Dashboard Project
- nextjs-reactstrap
- Airframe React
- react-admin
- Next.js from the Ground Up
- How Next.js is delivering React\u2019s vision for the future
"},{"location":"tools/dev/#shopify","title":"Shopify","text":""},{"location":"tools/dev/#hydrogen","title":"Hydrogen","text":" - How We Built Hydrogen: A React Framework for Building Custom Storefronts
"},{"location":"tools/dev/#create-new-project","title":"Create new project","text":" - Create Next App
- nextjs-admin-template - Pal.js UI
"},{"location":"tools/dev/#tailwind-css","title":"Tailwind CSS","text":" - tailwindcss.com
- tailwindcss play
- Integrating Tailwind CSS framework into a SPFx React project for advance User Experience
- react-tailwindcss
- Your First Tailwind Website
- How to build a landing page with Tailwind CSS, Tailwind UI, Vite.js \u2013 tutorial video
- Tailwind CSS: From Zero to Production\" on YouTube
- Source Code - From Zero to Production
"},{"location":"tools/dev/#tailwind-spfx","title":"Tailwind & SPFx","text":" - react-tailwindcss
- How to Set Up Tailwind CSS in a SPFx Project
- spfx-react-tailwindcss
"},{"location":"tools/dev/#design-to-code","title":"Design to Code","text":" - MS Fabric and Stardust to Fluent UI
- MS Fluent UI Starting
- Design to HTML
- Top 22 Prototyping Tools For UI And UX Designers 2020
"},{"location":"tools/dev/#best-practises","title":"Best practises","text":" - khalilstemmler - advanced TypeScript & Node.js best practices
"},{"location":"tools/dev/#msdn","title":"MSDN","text":""},{"location":"tools/dev/#tools-list","title":"Tools List","text":" - Useful Developer Tools
- My 12 Favorite Chrome Extensions as a Web Developer
- The tools for a SharePoint developer - Part 2
- msportals.io
- SharePoint Quicklinks
- Graph X-Ray
- PnP Sharing is Caring VS Code Extensions
- Tools that I use & \u2764\ufe0f
"},{"location":"tools/dev/#framework-trends","title":"Framework Trends","text":""},{"location":"tools/dev/#regexp","title":"RegExp","text":""},{"location":"tools/dev/#create-shortcuts","title":"Create shortcut(s)","text":" - create shortcut(s) for your common SharePoint Framework generator commands
"},{"location":"tools/dev/#debug","title":"Debug","text":" - mastykarz: easily debug production version
- sergei-sergeev: easily debug production version
"},{"location":"tools/dev/#tweetdeck-twitter","title":"TweetDeck (Twitter)","text":" - How to filter for SharePoint Framework #SPFx related tweets in TweetDeck
"},{"location":"tools/dev/#powershell-module-installs","title":"PowerShell Module Installs","text":" - Office 365 PowerShell Module Installs
- O365 PowerShell Module Installs
"},{"location":"tools/dev/#translation","title":"Translation","text":""},{"location":"tools/dev/#dokumentation-site-generator","title":"Dokumentation Site Generator","text":" - mkdocs-material
- docusaurus
- dochameleon
"},{"location":"tools/dev/#zoomit","title":"ZoomIt","text":" - How to present like a PRO using ZoomIt
"},{"location":"tools/dev/#convert-format","title":"Convert / Format","text":""},{"location":"tools/dev/#content-generators","title":"Content generators","text":" - loremipsum generator
- http://socialgoodipsum.com
- Office Ipsum
- http://trollemipsum.appspot.com
"},{"location":"tools/dev/#image-tools","title":"Image Tools","text":" - unsplash - free images
- pixabay - free images
- 20 Websites To Find Free High-Quality Images
- mazwai - free background images
- dummyimage
- Screenshots
- Convert Modern SharePoint Page Banner Images to Base-64 using PowerShell
- screenshots tool greenshot
"},{"location":"tools/dev/#emoji","title":"Emoji","text":" - Windows 10 keyboard tips and tricks
- Alt Code Shortcuts for Emoji, Smileys and Emoticons
"},{"location":"tools/dev/#sound-tools","title":"Sound Tools","text":""},{"location":"tools/dev/#password-generators","title":"Password generators","text":" - Random password generator
- password-generators
"},{"location":"tools/dev/#guid","title":"GUID","text":""},{"location":"tools/dev/#json","title":"JSON","text":" - Introduction to JSON
- Online Json viewer
- json formatter
- Fake Json Generator
- JSON to CSV Converter
"},{"location":"tools/dev/#change-log","title":"Change Log","text":""},{"location":"tools/dev/#download-website-offline","title":"Download Website / offline","text":" - Download entire website for offline
wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows -domains www.yourwebsite.com --no-parent www.yourwebsite.com/someurl\n
"},{"location":"tools/dev/#email","title":"Email","text":" - Responsive Email Foundation Zurb
- mailchimp - newsletter
- 10MinuteMail
- Free Mobile-Friendly & Responsive HTML Email Templates
"},{"location":"tools/dev/#ressourcen-files","title":"Ressourcen Files","text":" - https://poeditor.com/
- https://github.com/ypcode/spfx-dev-tools (Ressourcen Files mit Excel editieren)
- Excel and PowerShell to maintain your SPFx localized resources
- JavaScript Internationalization Framework
"},{"location":"tools/dev/#vscode","title":"VS.Code","text":""},{"location":"tools/dev/#c-development","title":"C# Development","text":" - Basic dotnet commands to create a C# Project in Visual Studio Code
"},{"location":"tools/dev/#command-line","title":"Command Line","text":" - Command Line Interface (CLI)
open last active window
code -r .\n
open in new window
code -n\n
"},{"location":"tools/dev/#vscode-extensions","title":"VS.Code Extensions","text":" - markdownlint
- Introducing SharePoint Typed Item
- Backup and Synchronize VSCode Settings with a GitHub Gist
- Visual Studio Code Extension \u2013 Settings Sync
- Top 10 VSCode Extensions for React
- Code Spell Checker
- abracadabra
settings.json
// Is git enabled\n\"git.enabled\": false,\n
// Path to the git executable\n\"git.path\": null,\n
// Whether auto fetching is enabled.\n\"git.autofetch\": false,\n
Info: https://stackoverflow.com/questions/30331338/remove-git-integrations-from-vscode
"},{"location":"tools/dev/#configure-vscode-intellisense","title":"Configure VSCode Intellisense","text":" - Avoid errors editing SharePoint Framework project configuration with Visual Studio Code intellisense
- VSCode SharePoint Framework JSON schemas configuration
"},{"location":"tools/dev/#edge-browser","title":"Edge Browser","text":" - Launching Edge with different profiles using shortcuts
"},{"location":"tools/dev/#exclude-folders-from-vscode","title":"Exclude Folders from VS.Code","text":" - How can I exclude a directory from Visual Studio Code 'Explore' tab
"},{"location":"tools/dev/#cli-app-generator","title":"CLI App Generator","text":" - generator-sppp
- SharePoint front-end projects automation and tasks tool-belt
- create-react-app
- generator-simplestyle
"},{"location":"tools/dev/#fabric-icons","title":"Fabric Icons","text":" - Render Office Fabric UI Icons into Canvas
- Tool to Generate Images Using Office UI Fabric Icons
- Fabric Icons
- Office UI Fabric Icons
-
- Using Flicon to support visual hierarchy on a homepage
- Microsoft-Integration-and-Azure-Stencils-Pack-for-Visio
"},{"location":"tools/dev/#favicons","title":"Favicons","text":""},{"location":"tools/dev/#website-builder","title":"WebSite Builder","text":""},{"location":"tools/dev/#sp-bookmarklets","title":"SP bookmarklets","text":" - Manage SharePoint using bookmarklets
Open Site Settings
javascript:(function(){var url = document.location.href.split('/Pages')[0].split('/SitePages')[0].split('/_layouts')[0];if(url.endsWith('.aspx')){url = url.replace(new RegExp('\\/[a-z A-Z 0-1 \\- _]*.aspx'),'')}location.replace(url+\"/_layouts/15/settings.aspx\")}());\n
Open Page in Maintenance Mode
javascript:(function(){location.replace(window.location.href+\"?maintenancemode=true\")})();\n
Go to Classic
javascript:(function(){document.cookie=\"splnu=0;domain=\"+window.location.hostname+\";\"; location.href=location.href;})();\n
Go to Modern
javascript:(function(){document.cookie=\"splnu=1;domain=\"+window.location.hostname+\";\"; location.href= location.href})();\n
Open Web Part Manager
javascript:(function(){location.replace(window.location.href+\"?contents=1\")})();\n
"},{"location":"tools/dev/#delete-node_modules-folder","title":"Delete node_modules Folder","text":" npm install rimraf -g\n
- creat fast-del.bat file
@ECHO OFF\nSET FOLDER=%1\nIF [%1]==[] (\n ECHO Delete Folder: \"%CD%\"?\n PAUSE\n SET FOLDER=\"%CD%\"\n CD /\n)\nECHO Deleting folder %FOLDER%\nrimraf %FOLDER%\n
-
This .bat file should be available under your \"PATH\" environmental variable. In other words, you should be able to run it from any command-line from any location. The easiest approach is to just copy this file to C:\\Windows directory (it's absolutely safe).
-
Open regedit and go to \"HKEY_CLASSES_ROOT\\Directory\\shell\\\" path.
-
Right-click on the \"shell\" folder and select New -> Key. Give it the name \"Fast Delete\".
-
Right-click on a newly created \"Fast Delete\" folder, then New -> Key. Give it the name \"command\".
-
Double-click on the default value for \"command\" folder and under value data enter:
cmd /c \"cd %1 && fast-del.bat\"\n
"},{"location":"tools/dev/#link-checker","title":"Link Checker","text":" - Crawl your website links and images to find broken links/images
- Copy an object from the console
- Check-SPOBrokenLink
copy($$('a').map(a => a.href).join('\\n'))\n
function Get-UrlStatusCode([string] $Url)\n{\n try\n {\n (Invoke-WebRequest -Uri $Url -UseBasicParsing -DisableKeepAlive).StatusCode\n }\n catch [Net.WebException]\n {\n [int]$_.Exception.Response.StatusCode\n }\n}\n\n\nforeach($line in Get-Content C:\\url.txt) \n{\n if($line -match $regex){\n\n $statusCode = Get-UrlStatusCode $line\n if($statusCode -le \"200\")\n {\n $line + \" => OK\"\n }\n else\n {\n $line + \" => Error\"\n }\n }\n}\n
"},{"location":"tools/dev/#static-search-library","title":"Static Search Library","text":""},{"location":"tools/dev/#public-api","title":"Public API","text":""},{"location":"tools/gatspy/","title":"Gatspy","text":""},{"location":"tools/gatspy/#blog-template","title":"Blog Template","text":" - https://github.com/RyanFitzgerald/devportfolio
- https://github.com/RyanFitzgerald/devblog
"},{"location":"tools/git/","title":"Git","text":""},{"location":"tools/git/#reference","title":"Reference","text":""},{"location":"tools/git/#cheatsheet","title":"Cheatsheet","text":""},{"location":"tools/git/#git-for-tenant-admins","title":"Git for Tenant Admins","text":" - Source Control for Microsoft 365 Tenant Admins
- Source Control for Microsoft 365 Tenant Admins: Part II
- Source Control for Microsoft 365 Tenant Admins: Part III
"},{"location":"tools/git/#learning","title":"Learning","text":" - Github Skills
- My GitHub cheat sheet for PnP contributions
- Git Fundamentals
- Git Real
"},{"location":"tools/git/#tips","title":"Tips","text":" - How to be more productive on GitHub
- How to write the perfect pull request
- Update a Severely Out of Date GitHub Repository Fork
- Merging 2 Different Git Repositories Without Losing your History
- Push your code into a git repo
- Keeping your fork up to date
- 7 Git Commands You May Not Know
"},{"location":"tools/git/#rebase-merge","title":"Rebase / Merge","text":" - An Introduction to Git Merge and Git Rebase: What They Do and When to Use Them
"},{"location":"tools/git/#commit-guidlines","title":"Commit Guidlines","text":" - How We Do It - Keeping a Clean Commit Log
- How to Write a Git Commit Message
"},{"location":"tools/git/#gitflow","title":"Gitflow","text":""},{"location":"tools/git/#deleted-file","title":"Deleted File","text":"git log --full-history -- src/path/to/file.js\n
"},{"location":"tools/git/#github","title":"GitHub","text":""},{"location":"tools/git/#github-actions","title":"GitHub Actions","text":" - Automate your CI/CD workflow using CLI for Microsoft 365 GitHub Actions
- Deploy SPFx solutions on multiple sites using GitHub Actions and Office 365 CLI
- Create GitHub actions for SPFx solution
- GitHub Actions + Power Automate + Teams
"},{"location":"tools/git/#git-cli","title":"Git CLI","text":""},{"location":"tools/hr/","title":"HR","text":""},{"location":"tools/hr/#office","title":"Office","text":" - Onboard new employees more effectively
"},{"location":"tools/hr/#sample-code","title":"Sample Code","text":" - msteams-sample-contoso-hr-talent-app
"},{"location":"tools/hugo/","title":"Hugo","text":""},{"location":"tools/hugo/#hosting","title":"Hosting","text":""},{"location":"tools/hugo/#deployment","title":"Deployment","text":" - Automated Hugo Releases With Azure Devops
- Set up Hugo with GitHub pages
"},{"location":"tools/image/","title":"Image","text":""},{"location":"tools/image/#header-banner","title":"Header Banner","text":" - Creating Banners for your SharePoint Online Pages
- Image Sizing\u00a0und Scaling
- Convert Modern SharePoint Page Banner Images to Base-64 using PowerShell
"},{"location":"tools/image/#tools","title":"Tools","text":" - colors picker
- http://dummyimage.com/
- http://makephotogallery.net/
- https://www.fotocollagen.de/
- http://wearekiss.com/spritepad
- http://www.colorzilla.com/gradient-editor/
- http://iconbench.com/
- http://www.drweb.de/magazin/fontello-icomoon-konkurrent-hilft-beim-zusammenstellen-eigener-iconfonts/
- http://www.imagemagick.org/script/index.php
- http://www.maschek.hu/imagemap/imgmap
- https://github.com/heyalexej/awesome-images
- http://www.screenpresso.com/de/
- http://free.zoner.com/
- https://appiconizer.com/
- http://gifmaker.me/
- https://www.base64-image.de/
- https://shields.io
- CSS clip path macker - clippy
- Responsive Image Breakpoints Generator
"},{"location":"tools/image/#image-file-types","title":"Image File Types","text":""},{"location":"tools/image/#videos","title":"Videos","text":" - Remotion - Create motion graphics in React
"},{"location":"tools/markdown/","title":"Markdown","text":""},{"location":"tools/markdown/#cheatsheet","title":"Cheatsheet","text":" - Markdown Cheatsheet
- Mastering Markdown
"},{"location":"tools/markdown/#tools","title":"Tools","text":" - VS.Code Extension: markdownlint
- Markdown Website Conversion
- Markdown Conversion
- devpen.io - Editor
- Markdown Plus - Editor
- WebSequenceDiagrams
- PlantText
- Word to Markdown Converter
- Creating markdown readme file
- Tables Generator
- markmap
"},{"location":"tools/markdown/#technical-writing-courses-for-engineers","title":"Technical Writing Courses for Engineers","text":" - Technical Writing Courses
"},{"location":"tools/mkdocs/","title":"MkDocs","text":""},{"location":"tools/mkdocs/#links","title":"Links","text":" - MkDocs
- Creating a beautiful documentation site with MkDocs
"},{"location":"tools/powerapps/","title":"PowerApps","text":" - Power Platform Basics - Layer
- Power Platform Basics - Project Activities
"},{"location":"tools/powerapps/#user-settings","title":"User Settings","text":" - Your Power Apps user settings are probably wrong
"},{"location":"tools/powerapps/#resources","title":"Resources","text":" - Microsoft Power Platform guidance documentation
- Power Platform Training Materials
- Power Wiki
- Microsoft Power Platform: Learning Resources
- A collection of awesome things regarding the Power Platform ecosystem
"},{"location":"tools/powerapps/#codeing-guide","title":"Codeing Guide","text":" - Naming convention for Power Automate
- Naming convention for Power Apps
"},{"location":"tools/powerapps/#frameworks","title":"Frameworks","text":" - PowerApps Tools
- 5 Power Platform projects developers must know!
- Creator kit overview
- Powercat creator kit
"},{"location":"tools/powerapps/#video-tutorials","title":"Video Tutorials","text":" - Youtube Microsoft PowerApps Channel
"},{"location":"tools/powerapps/#price","title":"Price","text":" - Power Apps and Power Automate licensing FAQs
- Power Apps pricing
- Licensing overview for Power Platform
- The comprehensive licensing guide to Microsoft Power Automate (formerly Flow) and Power Apps
- Power Platform Licensing QnA \u2013 Key takeaways
- Power Platform licensing, November 2021 updates
- Power Apps Pricing Explained
"},{"location":"tools/powerapps/#performance-connectors","title":"Performance / Connectors","text":" - Considerations for optimized performance in Power Apps
"},{"location":"tools/powerapps/#webparts","title":"WebParts","text":" - PowerApps web part for SharePoint Online
"},{"location":"tools/powerapps/#tipps","title":"Tipps","text":" - Tips for making your apps more maintainable
- Embed PowerApps in Modern SharePoint Online Site Page
- Application Lifecycle Management
- PowerApps source code editing for Canvas Apps
"},{"location":"tools/powerapps/#samples","title":"Samples","text":" - SharePoint PowerApps Solution samples
- SharePoint custom forms and automated business workflow
- Flow provisioning with azure function and PNP template
- SelfService Portal for Microsoft 365
"},{"location":"tools/powerapps/#localization","title":"Localization","text":" - Building multilingual apps in PowerApps
"},{"location":"tools/powerapps/#custom-forms","title":"Custom Forms","text":" - Getting started with custom forms in SharePoint build with PowerApps
- How to Customize SharePoint list forms with Power Apps - Beginners Tutorial
- Customize SharePoint Document Library Form using Power Apps
"},{"location":"tools/powerapps/#charts","title":"Charts","text":" - Canviz Power Apps Chart Components
"},{"location":"tools/powerapps/#create-documentation","title":"Create Documentation","text":""},{"location":"tools/powerappsportal/","title":"Powerapps Portal","text":" - Canvas vs. Model-Driven Apps
"},{"location":"tools/powerappsportal/#cds","title":"CDS","text":" - What is Common Data Service?
- What is the storage engine behind the scene for CDS?
"},{"location":"tools/powerappsportal/#start","title":"Start","text":" - Start Power Apps
- Admin Power Apps
"},{"location":"tools/powerappsportal/#dev-enviroment","title":"Dev Enviroment","text":" - Power Apps Community Plan
- How to Delete your Power Apps Community Plan Environment
"},{"location":"tools/powerappsportal/#einfuhrung","title":"Einf\u00fchrung","text":" - Fall into Power Apps Portals
- Gesamt\u00fcberblick
- Einf\u00fchrungs Videos
- Einf\u00fchrung Portal App Studio
- Power Apps Community
- Overview of the PowerApps Portals Management App
"},{"location":"tools/powerappsportal/#design","title":"Design","text":" - Bootstrap Samples
- Bootstrap Live Customizer
- MDBootstrap
"},{"location":"tools/powerappsportal/#devops","title":"DevOps","text":" - Power Platform Build Tools (1.0.13)
- XrmToolbox Portal Records Mover as a Console Application
- Portal Records Mover Console updates (finally!)
- PortalRecordsMoverConsole
"},{"location":"tools/powerappsportal/#liquid","title":"Liquid","text":" - Liquid Templates in PowerApps Portals
- Liquid template language reference
- Work with Liquid templates
- PowerApps Portals Branding
- Designing and Developing PowerApps Portals
- Creating public anonymous sites is back in O365
- Portals Community Call - August 20, 2020 - Power Apps Portals Theming
- Power Apps Portals: Portal Configuration
- Building a Multi-Brand Dynamics 365 Portal
"},{"location":"tools/powerappsportal/#coding-javscript-ajax","title":"Coding / Javscript / Ajax","text":" - (The Power Platform Community Conference - Nick Doelman)[https://youtu.be/udJ9gpCh6M0?t=30693]
"},{"location":"tools/powerappsportal/#login","title":"Login","text":" - Configure Azure AD B2C for PowerApps Portals
"},{"location":"tools/powerappsportal/#sharepoint","title":"SharePoint","text":" - Manage SharePoint documents
"},{"location":"tools/powerappsportal/#training-labs","title":"Training Labs","text":" - App in a Day
- Power Platform Training Materials
"},{"location":"training/course/","title":"Training","text":""},{"location":"training/course/#trainer","title":"Trainer","text":" - Why SharePoint Training is Important
"},{"location":"training/course/#o365","title":"O365","text":" - Customize the Learning Experience
- Microsoft 365 learning pathways
- Adding Partner Custom Content to Microsoft Learning Pathways Portals
"},{"location":"training/course/#ms-certification","title":"MS-Certification","text":" - Azure Solutions Architect vs. Azure Administrator
- Microsoft 365 Fundamentals - Cloud deployment models
"},{"location":"training/course/#news","title":"News","text":" - http://icansharepoint.com/how-to-stay-up-to-date-with-office-365/
"},{"location":"training/course/#programming","title":"Programming","text":" - https://guide.freecodecamp.org
"},{"location":"training/course/#typescript","title":"Typescript","text":""},{"location":"training/course/#online-course","title":"Online course","text":" - Pluralsight - sharepoint-framework-tooling
"},{"location":"training/course/#learning-tutorials","title":"Learning / Tutorials","text":" - OfficeDev: TrainingContent
- sp-dev-docs
- dev-office.com: getting-started-with-sharepoint-framework-tutorials
- techcommunity: Hidden-gems-at-Ignite-A-conference-guide-from-the-SharePoint
"},{"location":"training/learning/","title":"Learning","text":" - Microsoft Learn
- The 10 Best Ideas I Learned in 2022
- Web Development for Beginners - A Curriculum
- free-for.dev
- React lernen und verstehen
- ByteByteGoHq - system-design-101
"},{"location":"training/learning/#ms-certification","title":"MS Certification","text":" - Become Microsoft Certified
"},{"location":"training/learning/#architecture","title":"Architecture","text":" - Client-Side Architecture Basics - Guide
"},{"location":"training/learning/#web-developer","title":"Web Developer","text":" - Step by step guide to becoming a modern frontend developer in 2022
- Web Development for Beginners - A Curriculum
- Front-end Developer Handbook 2019
- Microsoft Frontend Bootcamp
- Full-stack Web Developer Plan - 2021
- The Modern JavaScript Tutorial
- freecodecamp
- devdocs.io
"},{"location":"training/learning/#react-learning-course","title":"React Learning Course","text":" - React roadmap
- besten-react-tutorials
- react-lernen
- https://www.udemy.com/react-the-complete-guide-incl-redux/?start=0
- https://www.udemy.com/react-redux/
- https://udilia.com/courses/learn-react-by-building-a-web-app
- https://tylermcginnis.com/reactjs-tutorial-a-comprehensive-guide-to-building-apps-with-react/
- frontendmasters - learn - react
- reactscreencasts
- React Wednesdays
- Designing React 17 Component
"},{"location":"training/learning/#lifecycle-methods","title":"Lifecycle methods","text":" - Interactive React Lifecycle Methods diagram
- SharePoint Framework Client-Side Webparts mit React
- React Best Practices
"},{"location":"training/learning/#manage-state-methods-in-react","title":"Manage state methods in react","text":" - How to Manage State in Your React Apps
"},{"location":"training/learning/#roadmap","title":"Roadmap","text":" - roadmap-react
- React Developer Roadmap
- The 2018 Web Developer Roadmap
- The 2018 React JS RoadMap
"},{"location":"training/learning/#reference","title":"Reference","text":" - awesome-react-components
- SurviveJS - React
- react-redux-links
- Clone Wars - Open source clones of popular sites
"},{"location":"training/learning/#blogs","title":"Blogs","text":" - overreacted - Personal blog by Dan Abramov
"},{"location":"training/learning/#styleguide","title":"Styleguide","text":" - Airbnb React/JSX Style Guide
- Airbnb JavaScript Style Guide
"},{"location":"training/learning/#cheatsheet","title":"Cheatsheet","text":" - react-redux-typescript-guide
- React TypeScript Cheatsheets
"},{"location":"training/learning/#patterns","title":"Patterns","text":" - React in patterns
- Design Patterns
- Modularizing React Applications with Established UI Patterns
"},{"location":"training/learning/#jsreact-vscode-extensions","title":"JS/React VS.Code Extensions","text":" - The Ultimate VSCode Setup for Front End/JS/React
"},{"location":"training/learning/#boilerplate","title":"Boilerplate","text":" - https://github.com/artofcodelabs/front-end-boilerplate
"},{"location":"training/learning/#lessons","title":"Lessons","text":" - The most important lessons I\u2019ve learned after a year of working with React
"},{"location":"training/learning/#frameworks","title":"Frameworks","text":" - react-grid-layout
- chartjs
- Rush
- fuzzy searching
- primereact
"},{"location":"training/learning/#state-management","title":"State management","text":" - TanStack Query - Server state
- jotai - UI state
- zustand - UI state
"},{"location":"training/learning/#tutorials","title":"Tutorials","text":" - React & Redux Tutorial - Build a Hacker News Clone
- React Portfolio Website Tutorial From Scratch \u2013 Build & Deploy React JS Portfolio Website
"},{"location":"training/learning/#multi-step-form","title":"Multi-Step Form","text":" - React Wizard Form
- React-Stepzilla
- Sample Form with React-Stepzilla
- React multi-page poll webpart -React Reusable Wizard component for SPFx
- How To Use Material UI Steppers In SharePoint Framework SPFx
- SPFx webpart form validation using React Formik
"},{"location":"training/learning/#errors","title":"Errors","text":" - Dealing with Undefined 'this' in React Event Handlers in a Performant Way
"},{"location":"training/learning/#hooks","title":"Hooks","text":" - How to use React hooks with the SharePoint Framework (SPFx)
- React Hooks - How to Use Them with the SharePoint Framework
- Using React hooks to globally share service scope between components
- Hooks FAQ
- SharePoint Framework and React hooks. Should I care?
- React, Hooks, and Office Development \u2013 Bringing It All Together
- Rooks - Collection of React hooks
"},{"location":"training/learning/#collection-of-hooks","title":"Collection of Hooks","text":" - Collection of React Hooks
- usehooks
- react-use
- React hook library for managing cart state
- React-shopping-cart
- Shopping-cart-react-typescript
"},{"location":"training/learning/#react-ecommerce-shops","title":"React eCommerce Shops","text":" - How to Build a Production Ready eCommerce Website with ReactJS, TailwindCSS, PlanetScale and Stripe
"},{"location":"training/ms-600/","title":"MS-600","text":""},{"location":"training/ms-600/#skills","title":"Skills","text":" - Exam MS-600: Building Applications and Solutions with Microsoft 365 Core Services\u2013Skills Measured
"},{"location":"training/ms-600/#graph-developing","title":"Graph Developing","text":" - An introduction to Microsoft Graph for developers - Part I - Getting started - October 2019
- An introduction to Microsoft Graph for developers - Part 2 \u2013 Advanced topics - November 2019 microsoft-identity-platform-developer-community-calloctober-2019)
- Microsoft 365 Developer - YouToube Videos
"},{"location":"training/ms-600/#microsoft-identity-plattform","title":"Microsoft identity plattform","text":" - Slides - Microsoft identity platform developer community call-October 2019
- Microsoft identity plattform for Developers
"},{"location":"training/must-read/","title":"Must read","text":""},{"location":"training/must-read/#guidance","title":"Guidance","text":" - office-365-development-patterns-and-practices-solution-guidance
"},{"location":"training/must-read/#spfx","title":"SPFx","text":" - FutureofSPDev-SPFxExtensions.pptx
- PnP Controls
"},{"location":"training/must-read/#office-fabric","title":"Office Fabric","text":" - https://github.com/guzmonne/office-ui-layout
- https://github.com/eoverfield/SP-Office-UI-Fabric
- Sample App
- DetailsList.Advanced.Example
"},{"location":"training/must-read/#office-fabric-react-redux","title":"Office Fabric / React / Redux","text":" - http://dattabase.com/office-fabric-reactredux-sp-starter-project/
- http://dattabase.com/office-fabric-ui-reactredux-part-1-5/
- https://github.com/gunjandatta/sp-react-redux
"},{"location":"training/must-read/#cloud","title":"Cloud","text":" - IaaS vs. PaaS: which one is best?
- What are the main cloud service models?
"},{"location":"training/must-read/#google-engineering","title":"Google Engineering","text":" - Site Reliability Engineering
"},{"location":"training/react-learning/","title":"React Learning","text":""},{"location":"training/react-learning/#react-documentation-tutorial","title":"React Documentation / Tutorial","text":" - react.dev
- create-react-app.dev
- react-dom-components-common
- react-lernen
- react-tutorial
"},{"location":"training/react-learning/#typescript","title":"Typescript","text":" - typescriptlang-handbook
- typescript-cheatsheets
- totaltypescript - React with TypeScript
"},{"location":"training/react-learning/#style-guide","title":"Style guide","text":" - airbnb-react
- airbnb-javascript
- typescript-styleguide
- Naming cheatsheet
- clean-code-javascript
"},{"location":"training/react-learning/#markdown","title":"Markdown","text":" - markdownguide-basic-syntax
- onvert-markdown-to-word-document
"},{"location":"training/react-learning/#vs-code-extension","title":"VS Code Extension","text":" - Typescript React code snippets
- Path Intellisense
- npm Intellisense
- Prettier - Code formatter
- Template String Converter
"},{"location":"training/react-learning/#markdown-to-word","title":"Markdown to Word","text":"pandoc -o output.docx -f markdown -t docx filename.md\n
"},{"location":"training/react-learning/#libs","title":"Libs","text":""},{"location":"training/react-learning/#creating-typescript-react-project","title":"Creating Typescript React Project","text":"cd C:\\ProgrammeBLS\\projects\nnpx create-react-app quickstart --template typescript\n
"},{"location":"training/react-learning/#jsx-tsx-converter","title":"JSX, TSX Converter","text":""},{"location":"training/react-learning/#recap","title":"Recap","text":""},{"location":"training/react-learning/#importing-and-exporting-components","title":"importing-and-exporting-components","text":""},{"location":"training/react-learning/#conditional-rendering","title":"conditional-rendering","text":" - In React, you control branching logic with JavaScript.
- You can return a JSX expression conditionally with an if statement.
- You can conditionally save some JSX to a variable and then include it inside other JSX by using the curly braces.
- In JSX, {cond ? : } means \u201cif cond, render , otherwise \u201d.
- In JSX, {cond && } means \u201cif cond, render , otherwise nothing\u201d.
"},{"location":"training/react-learning/#passing-props-to-a-component","title":"passing-props-to-a-component","text":" - To pass props, add them to the JSX, just like you would with HTML attributes.
- To read props, use the function Avatar({ person, size }) destructuring syntax.
- You can specify a default value like size = 100, which is used for missing and undefined props.
- You can forward all props with JSX spread syntax, but don\u2019t overuse it!
- Nested JSX like will appear as Card component\u2019s children prop.
- Props are read-only snapshots in time: every render receives a new version of props.
- You can\u2019t change props. When you need interactivity, you\u2019ll need to set state.
"},{"location":"training/react-learning/#react-function-components","title":"React Function components","text":" - what-are-react-pure-functional-components
- react-function-component
More Infos
- react-conditional-rendering
- the-ultimate-guide-to-conditional-rendering-in-react
"},{"location":"training/react-learning/#samples","title":"Samples","text":" - react-typescript-todomvc-2022
- bulletproof-react
- cypress-realworld-app
- Frontend Clean Architecture
- Awesome Codebases
- refine - React-based CRUD
- payloadcms
"},{"location":"training/react-learning/#samples-videos","title":"Samples Videos","text":" - Typescript Learning Videos
- React Typescript Video Tutorial
- Fullstack React GraphQL TypeScript Video Tutorial
"},{"location":"training/redux/","title":"Redux","text":""},{"location":"training/redux/#overview","title":"Overview","text":" - A reduced explanation of Redux(Reducers, Actions, and Store)
"},{"location":"training/redux/#connect-redux-to-spfx","title":"Connect Redux to SPFx","text":" - Connect React Redux to SharePoint Framework
- Using Redux Async Actions and ImmutableJS in SharePoint Framework
- Using React and Redux in SharePoint Framework (SPFx)
"},{"location":"training/redux/#samples","title":"Samples","text":" - SPFx webpart using Redux-Form library and React
- Webpart with React and Redux
"},{"location":"training/redux/#tips","title":"Tips","text":" - How do I change SPFx and Reactjs to SPFx React-Redux?
- Combine async redux actions in SPFx react components
"},{"location":"training/resume/","title":"Resume","text":""},{"location":"training/resume/#tips","title":"Tips","text":" - How to write a killer Software Engineering r\u00e9sum\u00e9
- https://www.careercup.com/resume
- How to Get 1% Better Every Day
- How To Write A Stand-Out Technical Resume
"},{"location":"training/bytebytego/architectural-styles/","title":"Architectural styles","text":"All images and links are coming from: https://blog.bytebytego.com/archive
"},{"location":"training/bytebytego/architectural-styles/#architectural-styles_1","title":"Architectural styles","text":""},{"location":"training/bytebytego/how-git-works/","title":"How Git works","text":"All images and links are coming from: https://blog.bytebytego.com/archive
"},{"location":"training/bytebytego/how-git-works/#how-git-works_1","title":"How Git works","text":"Git is a distributed version control system. Every developer maintains a local copy of the main repository and edits and commits to the local copy. The commit is very fast because the operation doesn\u2019t interact with the remote repository. If the remote repository crashes, the files can be recovered from the local repositories.
"},{"location":"training/bytebytego/ship-code/","title":"Ship Code","text":"All images and links are coming from: https://blog.bytebytego.com/archive
"},{"location":"training/bytebytego/ship-code/#how-companies-ship-code-to-production","title":"How Companies ship code to production","text":"Step 1: The process starts with a product owner creating user stories based on requirements.
Step 2: The dev team picks up the user stories from the backlog and puts them into a sprint for a two-week dev cycle.
Step 3: The developers commit source code into the code repository Git.
Step 4: A build is triggered in Jenkins. The source code must pass unit tests, code coverage threshold, and gates in SonarQube.
Step 5: Once the build is successful, the build is stored in artifactory. Then the build is deployed into the dev environment.
Step 6: There might be multiple dev teams working on different features. The features need to be tested independently, so they are deployed to QA1 and QA2.
Step 7: The QA team picks up the new QA environments and performs QA testing, regression testing, and performance testing.
Steps 8: Once the QA builds pass the QA team\u2019s verification, they are deployed to the UAT environment.
Step 9: If the UAT testing is successful, the builds become release candidates and will be deployed to the production environment on schedule.
Step 10: SRE (Site Reliability Engineering) team is responsible for prod monitoring.
"},{"location":"training/bytebytego/url-into-browser/","title":"Browser URL","text":"All images and links are coming from: https://blog.bytebytego.com/archive
"},{"location":"training/bytebytego/url-into-browser/#what-happens-when-you-type-a-url-into-a-browser","title":"What happens when you type a URL into a browser","text":"Step 1: The user enters a URL (www. bytebytego. com) into the browser and hits Enter. The first thing we need to do is to translate the URL to an IP address. The mapping is usually stored in a cache, so the browser looks for the IP address in multiple layers of cache: the browser cache, OS cache, local cache, and ISP cache. If the browser couldn\u2019t find the mapping in the cache, it will ask the DNS (Domain Name System) resolver to resolve it.
Step 2: If the IP address cannot be found at any of the caches, the browser goes to DNS servers to do a recursive DNS lookup until the IP address is found.
Step 3: Now that we have the IP address of the server, the browser sends an HTTP request to the server. For secure access of server resources, we should always use HTTPS. It first establishes a TCP connection with the server via TCP 3-way handshake. Then it sends the public key to the client. The client uses the public key to encrypt the session key and sends to the server. The server uses the private key to decrypt the session key. The client and server can now exchange encrypted data using the session key.
Step 4: The server processes the request and sends back the response. For a successful response, the status code is 200. There are 3 parts in the response: HTML, CSS and Javascript. The browser parses HTML and generates DOM tree. It also parses CSS and generates CSSOM tree. It then combines DOM tree and CSSOM tree to render tree. The browser renders the content and display to the user.
HTTP Status Codes Explained In 5 Minutes
A Crash Course in DNS (Domain Name System)
"},{"location":"viva/viva-connections/","title":"Viva Connections","text":""},{"location":"viva/viva-connections/#license-pricing","title":"License / Pricing","text":""},{"location":"viva/viva-connections/#overview","title":"Overview","text":" - Video - Your intranet is now in Microsoft Teams with Microsoft Viva Connections
- Video - Getting started on deploying Viva Connections for Microsoft Teams desktop
- What is Microsoft Viva Connections
"},{"location":"viva/viva-connections/#install","title":"Install","text":" - Microsoft Viva: An Administrator\u2019s View
- Add Viva Connections for Microsoft Teams desktop
- Create Viva Connections App Using PnP PowerShell-Publish-PnPCompanyApp
- How to create and Install the Viva Connections application from O365-CLI
"},{"location":"viva/viva-connections/#viva-connection-experience","title":"Viva Connection Experience","text":" - Set up Viva Connections in the Microsoft 365 admin center
- Introducing Multiple Viva Connections Experiences for Your Organization
"},{"location":"viva/viva-connections/#dashboard","title":"Dashboard","text":" - Create a Viva Connections dashboard and add cards
"},{"location":"viva/viva-sales/","title":"Viva Sales","text":""},{"location":"viva/viva-sales/#architecture","title":"Architecture","text":""},{"location":"viva/viva-topics/","title":"Viva Topics","text":""},{"location":"viva/viva-topics/#overview","title":"Overview","text":" - Introduction to Viva Topics
- Build an ever-growing Corporate Knowledge Base with Microsoft Viva Topics : An Overview
"},{"location":"viva/viva-topics/#learning","title":"Learning","text":" - Project Cortex - classifiers
- Project Cortex - entity extractors
- Syntex-Tips-document-understanding-forms-processing
- Syntex on a page - December 2022
- Understanding classifiers in Microsoft Syntex and Microsoft Purview
- Microsoft Syntex: An AI-Powered SharePoint Content Service in Microsoft 365
(Source: @ChrisO_Brien)
## Tools
- Microsoft 365 Assessment tool
"}]}
\ No newline at end of file
+{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Tips and tricks","text":" - Microsoft 365 help & learning
- PnP-SPFx-Blog
- Teams Developer Portal
- Pattern & Practises
- Sample Solution Gallery
- Microsoft 365 Extensibility look book gallery
- Microsoft 365 Community Content
- SharePoint For IT Professionals
- SharePoint development
- SharePoint Videos
- Etiquette of Microsoft 365
- Tips & Tricks Coding/SPFX/AzureAD
"},{"location":"#admin-shortcut-list","title":"Admin Shortcut List","text":" - cmd.ms | Installation cms.ms
- msportals
"},{"location":"#feedback","title":"Feedback","text":""},{"location":"#m365-docs","title":"M365 Docs","text":" - microsoft-365
- Microsoft 365 glossary
- SPFx-Json-Schemas
- Microsoft 365 and Office 365 service descriptions
- Microsoft 365 Community Content
"},{"location":"#start-spfx-training","title":"Start SPFx Training","text":" - SPFx documentation
- Why did Microsoft create the SharePoint Framework?
- What is the SharePoint Framework?
- SharePoint Framework - Getting started
- SharePoint Developer Community - Open-source projects
- Updated SharePoint Framework developer training package now available (2019)
- SharePoint Developer GitHub repositories
- Gateway to Office 365 Training Resources from Microsoft
- Set up an Office 365 developer subscription
- Frontend Workshop from HTML/CSS/JS to TypeScript/React/Redux
- Microsoft Learning Module
- HOW TO GET STARTED WITH REACT FOR BUILDING ADVANCED SPFX SOLUTIONS
- HOW TO USE THE SERVICE PATTERN IN SPFX REACT SOLUTIONS
- Nanddeepn-Getting Started Slides
- Recap of Getting Started SharePoint Framework (SPFx) Webinar Series 2020
- PiaSys: Conferences-Samples
- PnP Virtual Conference \u2013 September 2020 \u2013 Summary and Recordings
- Microsoft 365 learning pathways
"},{"location":"#start-spfx-react-development","title":"Start SPFx React Development","text":" - SPFx Essentials my Getting Started Video | E003
- How to Style your Custom SPFx Web Part to look OOB | E004
- PT2: Custom SPFx Web Part looking like it's OOB | E005
- SPFx, Post Request, React Hooks, and Fluent UI forms | E006
"},{"location":"#start-teams-development","title":"Start Teams Development","text":" - Microsoft Teams App Camp On Demand
- #30DaysOf Learning
- Microsoft Cloud Integration Scenarios
"},{"location":"#reference-samples","title":"Reference Samples","text":" - SPFx samples in the Microsoft 365 Unified Sample gallery
- SharePoint Framework Client-Side Web Part Samples
- Microsoft Teams Development Samples
- SafeDesk365
- SharePoint Framework DataTable
- Lead Assist Dashboard
- Executive Room Reservation Reference Microsoft Teams Personal App
- News article content at a glance
- react content query online
- Fakeflix - WebApp to learn React/Redux and more
- react-roomchat - Azure Communications Services Building SPFx solution with Azure Communication Services integration
- @pnp/js and ReactJS Functional Components
- React Flight Tracker
- Extend Teams app to other M365 host apps like Outlook, Office.com
- microsoft365dev
- Exposing business data in Microsoft 365 using Azure Data API builder
"},{"location":"#m365-full-stack-spfx","title":"M365 Full Stack / SPFx","text":" - spfx-wp-react-app
- The ultimate full stack project setup for M365 development
- epic-stack
"},{"location":"#enterprise-reference-samples","title":"Enterprise Reference Samples","text":" - Rhythm of Business Calendar - SPFx Solution Accelerator - Domain Driven Design
- Rhythm of Business Calendar - SPFx Solution Accelerator Deep Dive
- Contoso Retail Dashboard
- Video: Microsoft 365 & Power Platform weekly call \u2013 6th of June, 2023
"},{"location":"#pnpjs-v3","title":"PnPjs-V3","text":""},{"location":"#fluent-ui","title":"Fluent UI","text":" - fluent2.microsoft.design
- Fluent UI React Components
- Installing the fluent ui components
- Fluent UI 9 SPFx Sample
- Updated Fluent UI 9 Demo to latest SPFx and Fluent UI 9
"},{"location":"#learning-spfx-videos","title":"Learning SPFx Videos","text":" - SharePoint Framework for beginners 2021 | Episode 01 - Introduction
- SharePoint Framework for beginners 2021 | Episode 02 - Development Environment
"},{"location":"#dev-tenant","title":"DEV-Tenant","text":" - Welcome to the Office 365 Developer Program
- New renewable Office 365 developer subscriptions launch on April 3rd
- 10 Tips for Demo/Dev Tenant
- how-to-use-the-complimentary-azure-credits-in-a-microsoft-365-developer-tenant-step-by-step
- What is a \"Dev Tenant\" and why would you want one?
"},{"location":"#development-roadmap","title":"Development Roadmap","text":" - microsoft-changelog
- SPFx Roadmap / Release Notes
- Microsoft 365 Roadmap
- Monthly Updates about M365 News
"},{"location":"#code-guideline","title":"Code Guideline","text":" - Best practices in cloud applications
- Patterns and Practices for SPFx Development
- Typescriptlang - Handbook
- Airbnb React/JSX Style Guide
- Airbnb JavaScript Style Guide
- Office fabric react - Coding Guidelines
- Office fabric react - React-Guideline
- Office fabric react - TypeScript-Guidelines
- react-typescript-cheatsheet
- Setup TypeScript with React
- Design Patterns
- Awesome React Components & Libraries
"},{"location":"#performance-guideline","title":"Performance Guideline","text":" - PnP Virtual Conference - 09/2020 - Ways to optimize SharePoint Framework highly custom Intranet
- SharePoint Framework performance optimization list
- Performance guidance for SharePoint Online portals
- Optimize SPFx Sample
"},{"location":"#design-guideline","title":"Design Guideline","text":" - sharepoint look book
- Official product colors for Microsoft apps
- Teams UI Component Library
- Figma UI Kit for Teams
"},{"location":"#code-review-checklist","title":"Code Review Checklist","text":" - React-JS-Checklist
- Front-end Code Review Checklist
"},{"location":"#security-guideline","title":"Security Guideline","text":" - Basic Security Set Up for Microsoft 365
- Security Scanning a SharePoint Framework Solution
- Security Engineering Portal
- Automate Azure DevOps code security analysis with the Microsoft Security Code Analysis extensions
"},{"location":"#granting-permission","title":"Granting Permission","text":" m365 spo login https://<tenant>-admin.sharepoint.com\n
- spo serviceprincipal grant add
spo serviceprincipal grant add --resource 'Microsoft Graph' --scope 'Mail.Read'\n
"},{"location":"#content-style-guide","title":"Content Style Guide","text":" - Microsoft Writing Style Guide
"},{"location":"#coding-patterns","title":"Coding Patterns","text":" - React Design Principles
- Design patterns
- React inpatterns
- design patterns and component patterns
"},{"location":"#spfx-workflow","title":"SPFx Workflow","text":" - Walkthrough: use Azure DevOps with SPFx, GitFlow and GitVersion
"},{"location":"#sharepoint-pnp-community","title":"SharePoint PNP Community","text":" - SharePoint PnP resources
- Sharepoint Glossar
"},{"location":"#create-project-pnpm","title":"Create Project (pnpm)","text":" - Scaffold projects by using Yeoman SharePoint generator
with pnpm manager
yo @microsoft/sharepoint \u2013package-manager pnpm\n
pnpm i tslint@5.9.1 -DE\n
pnpm i typescript@2.4.2 -DE\n
"},{"location":"#check-package-version","title":"Check Package Version","text":"node \u2013v\nnpm \u2013v\nyo --generators\ngulp \u2013v\ntsc \u2013v\ntsd --version\n
"},{"location":"#git-basics","title":"Git Basics","text":"Init local repo
git init\n
Add all Files to local repo
git add -A\ngit commit -m \"init repo\"\n
Show last commit
git show --name-only\n
show full history
git log --full-history --src/path/to/file.js\n
- The Smart Ways to Correct Mistakes in Git
- A successful Git branching model
- GitHub cheat sheet for PnP contributions
- Illustrated Notes on Fixing Git Mistakes
"},{"location":"#developmentlocal-workbench","title":"Development(local workbench)","text":"Importend: only for spfx < 13.1
gulp serve\n
https://localhost:4321/temp/workbench.html\n
"},{"location":"#developmentonline-workbench","title":"Development(online workbench)","text":" - Update your project's hosted workbench URL
gulp serve --nobrowser\n
/_layouts/15/workbench.aspx?forceLocale=de-de\n
/_layouts/workbench.aspx\n
"},{"location":"#prepare-deployment-solution","title":"Prepare Deployment Solution","text":"gulp clean\n
gulp build --ship\n
gulp bundle --ship\n
gulp package-solution --ship\n
"},{"location":"#debug-in-vscode","title":"Debug in vs.code","text":" - https://docs.microsoft.com/en-us/sharepoint/dev/spfx/debug-in-vscode
"},{"location":"#checklist-spfx-initial","title":"Checklist SPFx initial","text":" - SharePoint Framework \u2013 new project checklist
"},{"location":"#update-version","title":"Update Version","text":" - Use
npm version
to upgrade the version of your SPFx solution - spfxappdev-init
npm version major\n
npm version minor\n
npm version patch\n
"},{"location":"#add-imported-pnp-modules","title":"Add imported pnp modules","text":" - https://pnp.github.io/pnpjs/
- https://github.com/SharePoint/PnP-JS-Core/wiki/Developer-Guide
npm install @pnp/logging @pnp/common @pnp/odata @pnp/sp @pnp/graph --save\n
- https://sharepoint.github.io/sp-dev-fx-controls-react/
npm install @pnp/spfx-controls-react@latest --save --save-exact\n
- https://sharepoint.github.io/sp-dev-fx-property-controls/
npm install @pnp/spfx-property-controls@latest --save --save-exact\n
"},{"location":"#localizations","title":"Localizations","text":" - Location files are in JSON format
- They work similar as Resources files (XML) on VS Solution
- The default language is English (en-us)
- Developers can test the locale by:
- Updating write-manifests.json file
{\n\"cdnBasePath\": \"<!-- PATH TO CDN -->\",\n\"debugLocale\": \"de-de\"\n}\n
or by using the \"locale\" command argument
gulp serve --locale=de-de\n
"},{"location":"#app-permission","title":"App Permission","text":" - Working with Application Permissions (App-Only Auth) in SharePoint Online and the Microsoft Graph
- SharePoint lifehacks: create SharePoint app registration with client secret which never expires
"},{"location":"#sharepoint-online-data","title":"SharePoint Online Data","text":" - Granting access via Azure AD App-Only
- Granting access using SharePoint App-Only
"},{"location":"#msgraph-data","title":"MSGraph Data","text":" - Get application ID and authentication key
"},{"location":"#scoped-service","title":"Scoped service","text":" - Elegant Dependency Injection in SPFx
- SPFx WebPart scoped service
- Using React hooks to globally share service scope between components
- SPFX Service Scopes Hooks
"},{"location":"#data-service","title":"Data Service","text":" - APIs Everywhere
- RSS Reader
- Sample FieldVisitTab
- SPFx \u2013 How to handle large list items
- Filter large lists in SharePoint Online
Sample Folder structure
- barrel: each folder should has a index.ts file
-
prettify your imports
-
src
- models
- IHelpDeskItem.ts
- index.ts
- services
- IDataService.ts
- MockDataservice.ts
- SharepointDataService.ts
- index.ts
- webparts
- components
- loc
- WebpartNameWebPart.ts
"},{"location":"#data-model","title":"Data Model","text":"Interface to define our Data structure
export interface IHelpDeskItem {\n id?: number;\n title?: string;\n description?: string;\n level?: string;\n status?: string;\n assignedTo?: string;\n resolution?: string;\n}\n
Interface to define our Data Access services
import { IHelpDeskItem } from \"./../models/IHelpDeskItem\";\nimport { WebPartContext } from \"@microsoft/sp-webpart-base\";\n\nexport default interface IDataService {\n getTitle(): string;\n isConfigured(): boolean;\n getItems(context: WebPartContext): Promise<IHelpDeskItem[]>;\n addItem(item: IHelpDeskItem): Promise<void>;\n deleteItem(id: number): Promise<void>;\n}\n
Mocking Service for testing in local Workbench development
import { IHelpDeskItem } from \"./../models/IHelpDeskItem\";\nimport IDataService from \"./IDataService\";\nimport { IWebPartContext } from \"@microsoft/sp-webpart-base\";\n\nexport default class MockDataService implements IDataService {\n...\n private _webPartContext: IWebPartContext;\n private _listId: string;\n\n constructor(webPartContext: IWebPartContext, listId: string) {\n this._webPartContext = webPartContext;\n this._listId = listId;\n }\n...\n\n public getItems(context: IWebPartContext): Promise<IHelpDeskItem[]> {\n return new Promise<IHelpDeskItem[]>((resolve, reject) => {\n setTimeout(() => resolve([\n {\n id : 1,\n title : \"That doesn't work\",\n description : \"When I do that, it doesn't work\",\n level : \"Low\",\n status: \"Open\",\n resolution: \"Do this and it will work!\",\n assignedTo: \"S\u00e9bastien Levert\",\n }\n ]), 300);\n });\n }\n}\n
"},{"location":"#get-data-with-sharepoint-rest","title":"Get Data with Sharepoint REST","text":"Source
public getItems(context: WebPartContext): Promise<IHelpDeskItem[]> {\nreturn new Promise<IHelpDeskItem[]>((resolve, reject) => {\n context.spHttpClient\n .get( `${this._webPartContext.pageContext.web.absoluteUrl}/_api/web/lists/GetById('${this._listId}')/items` +\n `?$select=*,HelpDeskAssignedTo/Title&$expand=HelpDeskAssignedTo`, SPHttpClient.configurations.v1)\n .then(res => res.json())\n .then(res => {\n let helpDeskItems:IHelpDeskItem[] = [];\n\n for(let helpDeskListItem of res.value) {\n helpDeskItems.push(this.buildHelpDeskItem(helpDeskListItem));\n }\n\n resolve(helpDeskItems);\n })\n .catch(err => console.log(err));\n});\n}\n
"},{"location":"#get-data-with-pnp-js-core","title":"Get Data with Pnp-JS-Core","text":"Reference Sample
Advantages
- Type safe so you get your errors while you code and not when you execute and test
- Works on all versions of SharePoint (On-Premises, Online, etc.)
- Offers built-in caching mechanisms
- Heavily used in the SharePoint Development Community
Init context in react webpart component source
public onInit(): Promise<void> {\n return super.onInit().then(_ => {\n pnpSetup({\n spfxContext: this.context\n });\n });\n}\n
init service in react webpart component
public render(): void {\n const element: React.ReactElement<IListContentProps> = React.createElement(\n ListContent,\n {\n context: this.context,\n dataService: this.getDataService(),\n list: this.properties.list\n }\n );\n\n ReactDom.render(element, this.domElement);\n}\n
Get items from list Source
public getItems(context: WebPartContext): Promise<IHelpDeskItem[]> {\nreturn new Promise<IHelpDeskItem[]>((resolve, reject) => {\n\n sp.web.lists.getById(this._listId).items\n .select(\"*\", \"HelpDeskAssignedTo/Title\")\n .expand(\"HelpDeskAssignedTo\").getAll().then((sessionItems: any[]) => {\n let helpDeskItems:IHelpDeskItem[] = [];\n\n for(let helpDeskListItem of sessionItems) {\n helpDeskItems.push(this.buildHelpDeskItem(helpDeskListItem));\n }\n\n resolve(helpDeskItems);\n });\n\n});\n}\n
"},{"location":"#get-search-data-with-asyncawait","title":"Get Search Data with async/await","text":"Using PnPJS and Async/Await to Really Simplify Your API Calls
async/await
private async _getSiteData(): Promise<ISPSite[]> {\n\n var thisDomain: string = location.host.split(\".\")[0];\n var exclusions: string[] = [\"https://\" + thisDomain + \"-my.sharepoint.com\", \"https://\" + thisDomain + \".sharepoint.com/portals/personal\"];\n var exclusionString: string = \" -Path:\" + exclusions.join(\" -Path:\");\n exclusionString += \" -Path=https://\" + thisDomain + \".sharepoint.com\";\n\n try {\n\n let result = await sp.search(<SearchQuery>{\n Querytext: \"contentclass:sts_site \" + exclusionString,\n RowLimit: 500,\n TrimDuplicates: false,\n Properties: [{\n Name:\"EnableDynamicGroups\",\n Value: {\n BoolVal: true,\n QueryPropertyValueTypeIndex: QueryPropertyValueType.BooleanType\n }\n }],\n SelectProperties: [\"Title\", \"Path\", \"SiteLogo\"]\n });\n\n return this.processSearchResults(result);\n\n } catch (e) {\n\n console.error(e);\n return null;\n\n }\n\n }\n
public async getShipmentStatuses(serviceProps: IServiceProperties): Promise<IStatus[]> {\n\n try {\n\n let items = await sp\n .web\n .lists\n .getByTitle(\"SL_ShippingStatuses\")\n .items\n .select(\"Id\", \"Title\", \"SortOrder\", \"CanBeCancelled\")\n .orderBy(\"SortOrder\")\n .get(spODataEntityArray<Item, IStatus>(Item));\n\n return items;\n\n } catch (e) {\n\n console.error(e);\n return null;\n\n }\n}\n
joelfmrodrigues - demos
private async _getItems() {\n let select = '*';\n let expand = 'File';\n let filter = '';\n\n // filter by selected term if required\n if (this.props.term !== undefined && this.props.term !== null && this.props.term.length > 0) {\n const term = this.props.term[0];\n\n select = `${select},TaxCatchAll/Term`;\n expand = `${expand},TaxCatchAll`;\n filter = `TaxCatchAll/Term eq '${term.name}'`;\n }\n\n const items = await sp.web.lists.getById(this.props.list).items\n .select(select)\n .expand(expand)\n .filter(filter)\n .get();\n\n // update state\n this.setState({\n items: items ? items : []\n });\n console.log('List Items:', this.state.items);\n}\n
"},{"location":"#get-data-from-msgraph","title":"Get Data from MSGraph","text":" - Using PnPjs to send requests to MS Graph with SharePoint Framework 1.6
- Example of wrapper to ease usage of Graph calls in SPFx
- msgraph-helper
- SPFx webpart with MS Graph and PnPjs: step by step guide
"},{"location":"#start-office-fabric-react","title":"Start Office Fabric React","text":"Create Sample
- Use Office UI Fabric React components in your SharePoint client-side web part
- TypeScript React Starter
- React app with an Office UI Fabric React DocumentCard
create-react-app demo-office-fabric-react-ts --scripts-version=react-scripts-ts\n
init git
git init\ngit add .\ngit commit -m \"Initial commit.\"\n
add office fabric react
- office-ui-fabric-react@5.131.0
- Use Office UI Fabric React components in your SharePoint client-side web part
npm install office-ui-fabric-react@5.132.0 --save\n
"},{"location":"#generator-for-sp-applications","title":"Generator for SP applications","text":" - SP Pull-n-Push - Yeoman generator for SharePoint client-side applications
"},{"location":"#upgrade-yo-generator-spfx","title":"Upgrade yo generator SPFx","text":" - Use the Yeoman SharePoint generator
npm list -g --depth=0\n
npm ls -g --depth=0 @microsoft/generator-sharepoint\n
npm outdated --global\n
npm install @microsoft/generator-sharepoint@latest --global\n
"},{"location":"#spfx-version-upgrade","title":"SPFx Version Upgrade","text":" - Project-upgrade
- Easily upgrade SharePoint Framework projects with the Office 365 CLI
"},{"location":"#office-365-cli","title":"Office 365 CLI","text":" - Office 365 User Guide
- Comparison to SharePoint PowerShell
- Office 365 GitHhub Actions
- GETTING STARTED WITH THE OFFICE 365 CLI
- Working with Office365 CLI and JSON parameters
- CLI.Microsoft365.PowerShell.Predictor
Latest version
npm i -g @pnp/cli-microsoft365@latest\n
Latest Beta version
npm i -g @pnp/cli-microsoft365@next\n
Create report for upgrade
m365 spfx project upgrade --shell powershell --toVersion 1.12.1 --output md > report.md\n
"},{"location":"#update-spfx-packages","title":"Update SPFx packages","text":" - Update SharePoint Framework packages
"},{"location":"#custom-yo-spfx-generator","title":"Custom yo spfx generator","text":" - PnP SPFx Yeoman generator
"},{"location":"#add-external-js-frameworks","title":"Add External JS-Frameworks","text":" - How to add external libraries and assets in SharePoint client-side web part
- Loading dependent JS files into SPFx Solution in right order
- How To Include JavaScript Files In SharePoint Framework Solutions?
"},{"location":"#spfx-utilities","title":"SPFx Utilities","text":" - Utility functions which you might not know existed in SPFx
- SPFx Fast Serve Tool
- sp-formatter
- SP Formatter: the big update
- SharePoint produtivity tools
- Ultimate Developer Tool List for SPFx
"},{"location":"#team-development-tools","title":"Team Development Tools","text":" - Guides and tools to design your Microsoft Teams app effectively
- @fluentui/react-teams
- Microsoft Teams UI templates sample app
"},{"location":"about/about/","title":"About","text":""},{"location":"about/about/#author","title":"Author","text":"Roland Oechslin
"},{"location":"about/about/#work","title":"Work","text":"Senior Sharepoint/M365 Expert and Developer, BLS AG, Bern, Switzerland
"},{"location":"about/about/#interests","title":"Interests","text":"Programming, New Technologies
"},{"location":"about/about/#twitter","title":"Twitter","text":"@rolandoechslin
"},{"location":"about/help/","title":"Help mkdocs","text":" - For full documentation visit - mkdocs.org.
- Themes Material
- Markdown Syntax
- Markdown guide
"},{"location":"about/help/#deployment-to-github-pages","title":"Deployment to GitHub Pages","text":" - https://www.mkdocs.org/user-guide/deploying-your-docs/
mkdocs gh-deploy\n
"},{"location":"angular/elements/","title":"Angular","text":""},{"location":"angular/elements/#elements","title":"Elements","text":" - a-practical-guide-to-angular-elements
"},{"location":"angular/elements/#angularjs","title":"AngularJS","text":" - html-templates-in-spfx
- building-sharepoint-framework-client-side-web-parts-angular
"},{"location":"articles/sitecollection-versus-subsite/","title":"Sitecollection versus subsite","text":""},{"location":"articles/sitecollection-versus-subsite/#advantages-of-subsites","title":"Advantages of Subsites","text":" - A subsite can be provisioned by anyone with at least Full Control permission (more specifically, the Create Subsites permission level) on the parent site. I.e. You don\u2019t require a farm or tenant admin to provision one for you. (Although in SharePoint Online, anyone in a specified AD group can provision an Office 365 Group site collection; to provision a standard SharePoint site collection on SharePoint Server requires membership in the Farm Administrators SharePoint group on the machine running the Central Administration website. To provision a Classic SharePoint site collection in Office 365 requires you to be a Global Admin or SharePoint Online administrator)
- A subsite can automatically be added to the navigation of the parent site if you have the navigation settings configured that way.
- A subsite can automatically inherit settings from its parent site including permissions, features, and navigation (Ironically this can also be a disadvantage as well as I describe in the section below). You can optionally adjust some of the settings at the subsite level. (for example, decide not to inherit navigation settings)
- This is quick and easy to setup which is attractive for small organizations who don\u2019t have a lot of resources to spend maintaining site collections. (although in SharePoint Online, the provisioning process for an Office 365 Group site collection is very quick and easy, it is not that easy in SharePoint on-premises)
- [Update January 18, 2018] A subsite automatically inherits content types and site columns from its parent site. This is more straight-forward to setup than a Content Type Hub which is what is required to do the same across site collections.
- [Update January 18, 2018] Managed Term sets can easily be shared across all subsites within a Site Collection if the term set is created at the site collection level. Term sets cannot be shared across site collections unless it is created at the farm/tenant level.
"},{"location":"articles/sitecollection-versus-subsite/#disadvantages-of-site-collections","title":"Disadvantages of Site Collections","text":" - It is a boundary for navigation which means navigation is not shared across site collections. To visually tie together your site collections in a \u201cvirtual hierarchy\u201d (i.e. navigation), you will need to handle this separately. (Code, manually configured, etc.) **See my comment about the new SharePoint Hub site below to address this disadvantage however which will turn this into an advantage where you can \u2018plug and play\u2019 your site collections into whatever kind of navigation is required.
- Content types and site columns can be defined at a site collection level but cannot be easily shared across site collections. The Content Type hub is a feature built with the intent of this, but in my experience it has some usability issues, particularly in SharePoint Online.
- If you are a small company, you may find it difficult to manage multiple site collections if you have advanced branding, navigation, feature requirements.
"},{"location":"articles/sitecollection-versus-subsite/#my-thoughts","title":"My thoughts","text":"Let\u2019s get back to the quote from Ignite\u2026 why are subsites the spawn of the devil?
Generally speaking, it\u2019s hard to argue with the fact that site collections are more flexible. Each site collection can be viewed as a granular \u2018unit of work\u2019. They allow you to control permissions, features, storage, branding and target data protection and retention controls at a more targeted level. A flat architecture like this allows you to \u2018plug and play\u2019 site collections into whatever kind of navigational hierarchy is required \u2013 the announcement of the SharePoint Hub site at Microsoft Ignite is a feature being built to allow you to build this navigation thru the User Interface. You will be able to associate a site collection with a SharePoint Hub by the click of a button and easily move it from one Hub to another if required. This is great news.
Source: https://joannecklein.com/2017/11/03/sharepoint-site-collection-advantages/
"},{"location":"deployment/guide/","title":"Deployment","text":" - Lessons learned from deploying my first full-stack web application
"},{"location":"js/guide/","title":"Guide","text":""},{"location":"js/guide/#ref","title":"Ref","text":" - https://developer.mozilla.org/en-US/docs/Web/JavaScript
"},{"location":"js/guide/#styleguide","title":"Styleguide","text":" - https://google.github.io/styleguide/jsguide.html
- https://github.com/airbnb/javascript
- http://2ality.com/2011/10/javascript-overview.html
"},{"location":"js/guide/#books","title":"Books","text":" - Front-End Developer Handbook 2018
- Front-End Developer Handbook 2018
- You Don't Know JS
"},{"location":"js/guide/#arrays","title":"Arrays","text":" - Eleven Ways To Learn Javascript Array Iteration Effectively
"},{"location":"js/guide/#technologie-radar","title":"Technologie Radar","text":" - https://lihsmi.ch/learning/2015/04/25/skill-radar-technology-radar.html
- https://github.com/schoeffm/techradar
- https://github.com/zalando/tech-radar
- https://github.com/bdargan/techradar
"},{"location":"js/pwa/","title":"PWA","text":""},{"location":"js/pwa/#overview","title":"Overview","text":" - https://scotch.io/tutorials/the-ultimate-guide-to-progressive-web-applications
"},{"location":"powershell/graphsdk-ps/","title":"Graph SDK Powershell","text":" - Microsoft Graph PowerShell SDK
"},{"location":"powershell/graphsdk-ps/#learning","title":"Learning","text":" - Get to know the Microsoft Graph PowerShell SDK better with the Graph Explorer
- Microsoft PowerShell Graph SDK \u2013 Woes
- Pluralsight: Using the Microsoft Graph PowerShell SDK
"},{"location":"powershell/graphsdk-ps/#security","title":"Security","text":" - Using a Certificate for Authentication with the Microsoft Graph SDK for PowerShell
"},{"location":"powershell/graphsdk-ps/#azure-automation","title":"Azure Automation","text":" - Using Azure Automation to Process Exchange Online Data with PowerShell
- Using the Microsoft Graph SDK for PowerShell with Azure Automation
- Updating Microsoft Graph PowerShell Modules for Azure Automation
"},{"location":"powershell/graphsdk-ps/#uddate-process","title":"Uddate Process","text":" - Updating Microsoft Graph PowerShell Modules for Azure Automation
"},{"location":"powershell/graphsdk-ps/#work","title":"Work","text":" - How to Connect to Microsoft Graph API from PowerShell
Check
Get-InstalledModule | Where-Object {$_.Name -match \"Microsoft.Graph\"}\n
Install
Install-Module -Name \"Microsoft.Graph\"\n
Update
Update-Module Microsoft.Graph\n
Uninstall (all)
Uninstall-Module Microsoft.Graph\n\n# Uninstall all Sub-modules of Graph\nGet-InstalledModule Microsoft.Graph.* | ForEach-Object { if($_.Name -ne \"Microsoft.Graph.Authentication\") {\n Uninstall-Module $_.Name }\n}\n\n# Uninstall the dependant module\nUninstall-Module Microsoft.Graph.Authentication\n
Connect with Delegated Access
# Connect to Microsoft Graph\nConnect-MgGraph -Scopes \"User.Read.All\"\n\n# Get All users\n$users = Get-MgUser\n$users | Select-Object DisplayName, UserPrincipalName, Mail\n
Connect with App ID and Certificate
# App Config\n$TenantID = \"<placeholder>\"\n$ClientID = \"<placeholder>\" # App ID\n$CertThumbPrint = \"<placeholder>\"\n\n# Connect to Microsoft Graph using App\nConnect-MgGraph -ClientID $ClientID -TenantId $TenantID -CertificateThumbprint $CertThumbPrint\n
Connect with Client Secret
# App Registration details\n$TenantID = \"<placeholder>\"\n$ClientID = \"<placeholder>\"\n$ClientSecret = \"<placeholder>\"\n\n$Body = @{\n Grant_Type = \"client_credentials\"\n Scope = \"https://graph.microsoft.com/.default\"\n Client_Id = $ClientID\n Client_Secret = $ClientSecret\n}\n\n$Connection = Invoke-RestMethod `\n -Uri https://login.microsoftonline.com/$TenantID/oauth2/v2.0/token `\n -Method POST `\n -Body $body\n\n# Get the Access Token\n$Token = $Connection.access_token\n\n# Connect to Microsoft Graph\nConnect-MgGraph -AccessToken $Token\n
"},{"location":"powershell/graphsdk-ps/#check-size","title":"Check Size","text":" - FUNCTION CANNOT BE CREATED BECAUSE FUNCTION CAPACITY 4096 HAS BEEN EXCEEDED FOR THIS SCOPE
Get-Variable Max*Count\n
$Modules = Get-Module -ListAvailable\n$ListModules = foreach ($Module in $Modules) {\n [PScustomObject] @{\n Name = $Module.Name\n Version = $Module.Version\n FunctionCount = ($Module.ExportedFunctions).Count\n }\n}\n$ListModules | Sort-Object -Property FunctionCount -Descending | Format-Table -AutoSize\n
"},{"location":"powershell/graphsdk-ps/#azuread-module-migration","title":"AzureAD Module Migration","text":" - PSAzureMigrationAdvisor
- Challenges of PowerShell Scripting with Microsoft 365
"},{"location":"powershell/pnp-ps/","title":"PnP Powershell","text":""},{"location":"powershell/pnp-ps/#information","title":"Information","text":" - New version of PnP PowerShell \u2013 v2.1.1
- Updating from PnP PowerShell 1.x to 2.x
"},{"location":"powershell/pnp-ps/#references","title":"References","text":" - Documentation
- Script Samples
- Script Samples - matrix
"},{"location":"powershell/pnp-ps/#security-authentication","title":"Security / Authentication","text":" - PnP PowerShell - Consent and Authentication
- Learn How Authentication Works in the latest PnP.PowerShell Module
- PnP PowerShell \u2013 take control of the service principal permissions
- Using Managed Identity with PnP PowerShell instead of SharePoint App-Only Principal
"},{"location":"powershell/pnp-ps/#tools-plugin","title":"Tools / Plugin","text":""},{"location":"powershell/pnp-ps/#login-with-an-application-admin","title":"Login with an Application admin","text":"-The required Office 365 role to run PnP Powershell with Scopes
"},{"location":"powershell/pnp-ps/#installation-options","title":"Installation Options","text":" - Running multiple versions of PnP-PowerShell
- Manage SharePoint & Microsoft Teams on PowerShell Core using the PnP.PowerShell module
- Making the move from SharePointPnPPowerShellOnline to PnP.PowerShell
"},{"location":"powershell/pnp-ps/#documentation","title":"Documentation","text":""},{"location":"powershell/pnp-ps/#specific-version","title":"Specific Version","text":" - Import a specific module from the installed SharePoint PnP PowerShell modules (2013, 2016, 2019 & Online)
- Run PnP PowerShell with saved module
"},{"location":"powershell/pnp-ps/#latest-version","title":"Latest Version","text":" - Latest Release Version
- Change Log
"},{"location":"powershell/pnp-ps/#check","title":"Check","text":"Get-InstalledModule | foreach { $b = (find-module $_.name).version ; if ($b -ne $_.version) { Write-host \"$($_.name) has an update from $($_.version) to $b\" } }\n
Get-Module SharePointPnPPowerShell* -ListAvailable | Select-Object Name,Version | Sort-Object Version -Descending\n
"},{"location":"powershell/pnp-ps/#update-module-to-the-latest-version","title":"Update Module to the latest version","text":"Update-Module SharePointPnPPowerShell*\n
"},{"location":"powershell/pnp-ps/#delete-the-old-version","title":"Delete the old version","text":"Get-InstalledModule -Name \"SharePointPnPPowerShellOnline\" -RequiredVersion 3.8.1904.0 | Uninstall-Module\n
"},{"location":"powershell/pnp-ps/#install-a-specific-version","title":"Install a specific version","text":"Install-Module -Name SharePointPnPPowerShellOnline -RequiredVersion 3.0.1808.1\n
"},{"location":"powershell/pnp-ps/#connect-with-app-permission","title":"Connect with App Permission","text":" - Introduction to Initialize-PnPPowerShellAuthentication cmdlet
Initialize-PnPPowerShellAuthentication -ApplicationName DemoApp -Tenant tenant.onmicrosoft.com -Store CurrentUser\n\n$url = \"https://tenant.sharepoint.com\"\n$clientid = \"<placeholder>\"\n$thumbprint = \"<placeholder>\"\n$tenant = 'tenant.onmicrosoft.com'\n\nConnect-PnPOnline -Url $url -ClientId $clientid -Thumbprint $thumbprint -Tenant $tenant\n
# Load PNP the Right Way\n$pnp = Get-Command Connect-Stuff -ErrorAction SilentlyContinue\nif (!$pnp) {Install-Module SharePointPnPPowerShellOnline -Force}\nImport-Module SharePointPnPPowerShellOnline\n
"},{"location":"powershell/pnp-ps/#list-all-commands","title":"List all commands","text":"Get-Command | ? { $_.ModuleName -eq \"SharePointPnPPowerShellOnline\" }\n
"},{"location":"powershell/pnp-ps/#create-guid","title":"Create Guid","text":"[guid]::NewGuid() | Select-Object -ExpandProperty Guid | clip\n
"},{"location":"powershell/pnp-ps/#delete-all-listitems","title":"Delete all listitems","text":"Get-PnPList -Identity Lists/MyList | Get-PnPListItem -PageSize 100 -ScriptBlock { Param($items) \n$items.Context.ExecuteQuery() } | % {$_.DeleteObject()}\n
"},{"location":"powershell/pnp-ps/#upload-documents","title":"Upload Documents","text":" - https://gallery.technet.microsoft.com/office/Upload-Multiple-Documents-4c4aa989
function UploadDocuments(){\nParam(\n [ValidateScript({If(Test-Path $_){$true}else{Throw \"Invalid path given: $_\"}})] \n $LocalFolderLocation,\n [String] \n $siteUrl,\n [String]\n $documentLibraryName\n)\nProcess{\n $path = $LocalFolderLocation.TrimEnd('\\')\n\n Write-Host \"Provided Site :\"$siteUrl -ForegroundColor Green\n Write-Host \"Provided Path :\"$path -ForegroundColor Green\n Write-Host \"Provided Document Library name :\"$documentLibraryName -ForegroundColor Green\n\n try{\n $credentials = Get-Credential\n\n Connect-PnPOnline -Url $siteUrl -CreateDrive -Credentials $credentials\n\n $file = Get-ChildItem -Path $LocalFolderLocation -Recurse\n $i = 0;\n Write-Host \"Uploading documents to Site..\" -ForegroundColor Cyan\n (dir $path -Recurse) | %{\n try{\n $i++\n if($_.GetType().Name -eq \"FileInfo\"){\n $SPFolderName = $documentLibraryName + $_.DirectoryName.Substring($path.Length);\n $status = \"Uploading Files :'\" + $_.Name + \"' to Location :\" + $SPFolderName\n Write-Progress -activity \"Uploading Documents..\" -status $status -PercentComplete (($i / $file.length) * 100)\n $te = Add-PnPFile -Path $_.FullName -Folder $SPFolderName\n } \n }\n catch{\n }\n }\n }\n catch{\n Write-Host $_.Exception.Message -ForegroundColor Red\n }\n\n }\n}\n\n\n#UploadDocuments -LocalFolderLocation {Local Folder Location} -siteUrl {Site collection URL} -documentLibraryName {Document Library Name}\n
"},{"location":"powershell/pnp-ps/#site-classification","title":"Site Classification","text":" - https://www.jijitechnologies.com/blogs/site-classification-using-pnp-powershell
Connect-PnPOnline -Scopes \"Directory.ReadWrite.All\"\n
Enable-PnPSiteClassification -Classifications \"HBI\",\"LBI\",\"Top Secret\" -UsageGuidelinesUrl ```\n\"http://aka.ms/sppnp\" -DefaultClassification \"HBI\"\n
Add-PnPSiteClassification -Classifications \"SBI\",\"MBI\"\n
Remove-PnPSiteClassification -Classifications \"SBI\"\n
Update-PnPSiteClassification -Classifications \"HBI\",\"LBI\",\"Top Secret\" -UsageGuidelinesUrl http://aka.ms/sppnp\" -DefaultClassification \"HBI\"\n
Disable-PnPSiteClassification\n
"},{"location":"powershell/pnp-ps/#tips","title":"Tips","text":" - Add QuickLinks with powershell-pnp
"},{"location":"powershell/pnp-ps/#documents-list","title":"Documents List","text":" - Change the New Menu in SharePoint Online Documents List
"},{"location":"powershell/pnp-ps/#list-properties","title":"List Properties","text":" - Finding Missing Properties in PnP PowerShell
Connect-PnPOnline -Url https://toddklindt.sharepoint.com/sites/8884aced -Credentials Me\nGet-PnPView -List Documents\nGet-PnPView -List Documents -Identity 3c4126aa-d2fe-4b57-9a70-e03ebb9c76ef\n$view = Get-PnPView -List Documents -Identity 3c4126aa-d2fe-4b57-9a70-e03ebb9c76ef\n$view\n$view | select *\n$view.ViewQuery\nGet-PnPProperty -ClientObject $view -Property ViewQuery\n$view.ViewQuery\n$view\n$view | select *\n
"},{"location":"powershell/pnp-ps/#fields","title":"Fields","text":" - How to: Provision Lookup Columns and Projected Fields using PnP PowerShell
- PnPPowerShellLookupColumns
- Add-PNPField: Add SharePoint columns with PowerShell
"},{"location":"powershell/pnp-ps/#copy-list","title":"Copy-List","text":" - Copy a SharePoint list with PnP PowerShell
"},{"location":"powershell/powerapps/","title":"Teams Powershell","text":" - PowerShell support for Power Apps
- PowerShell Cmdlets for PowerApps and Flow creators and administrators
"},{"location":"powershell/powerapps/#check-version","title":"Check Version","text":"Latest Version
- History - Microsoft.PowerApps.Administration.PowerShell
Get-Module Microsoft.PowerApps* -ListAvailable | Select-Object Name,Version | Sort-Object Version -Descending\n
"},{"location":"powershell/powerapps/#update-module-to-latest-version","title":"Update Module to latest version","text":"Update-Module Microsoft.PowerApps*\n
"},{"location":"powershell/powerapps/#delete-old-version","title":"Delete old version","text":"# Admin\nGet-InstalledModule -Name \"Microsoft.PowerApps.Administration.PowerShell\" -RequiredVersion 2.0.56 | Uninstall-Module\n\n## Maker\nGet-InstalledModule -Name \"Microsoft.PowerApps.PowerShell\" -RequiredVersion 1.0.9 | Uninstall-Module\n
"},{"location":"powershell/powerapps/#connect","title":"Connect","text":"Add-PowerAppsAccount\n
"},{"location":"powershell/powerapps/#disconnect","title":"Disconnect","text":""},{"location":"powershell/powershell/","title":"Links","text":""},{"location":"powershell/powershell/#profile","title":"Profile","text":"code $PROFILE\n
Import-Module -Name CLI.Microsoft365.PowerShell.Predictor\nImport-Module posh-git\nImport-Module -Name Terminal-Icons\noh-my-posh init pwsh --config \"$env:POSH_THEMES_PATH/jandedobbeleer.omp.json\" | Invoke-Expression\n
- My Ultimate PowerShell prompt with Oh My Posh and the Windows Terminal
- Sanselman - PowerShell_profile
"},{"location":"powershell/powershell/#resources","title":"Resources","text":" - Windows PowerShell
- The PowerShell Gallery
- janikvonrotz-awesome-powershell
- How to: SnipScripts
- Andres Bohren - PowerShellScripts
- Report on Microsoft 365
- Office 365 for IT Pros PowerShell examples
- admindroid-community
"},{"location":"powershell/powershell/#syntax","title":"Syntax","text":" - Powershell Best Practices
- About Preference Variables
- powershell basic cheat sheet
- powershell-ref
- PowerShell Cheat Sheet
- awesome-powershell
- Highway to PowerShell - Ep 1
- PowerShellGeek Quickreference
Get-Command -Name Get-PnPSite -Syntax\n
"},{"location":"powershell/powershell/#hashtable","title":"Hashtable","text":" - Everything you wanted to know about hashtables
"},{"location":"powershell/powershell/#coding-tips","title":"Coding Tips","text":" - Backticks vs. Splatting vs. Class Objects
- 10 suggestions to improve your next PowerShell script
- PowerShell Tips & Tricks / jdhitsolutions
"},{"location":"powershell/powershell/#testing-tips","title":"Testing Tips","text":" - Performing Static Code Analysis on PowerShell Module and Scripts
"},{"location":"powershell/powershell/#performance-tips","title":"Performance Tips","text":" - PowerShell performance tips
"},{"location":"powershell/powershell/#vscode-settings","title":"VS.Code Settings","text":" - How To Make Visual Studio Code Look And Behave Like The PowerShell ISE
"},{"location":"powershell/powershell/#blogs","title":"Blogs","text":""},{"location":"powershell/powershell/#office-365-groups","title":"Office 365 Groups","text":" - Adding a New Office 365 Group to an Existing (Classic) SharePoint Online Site
- Useful PowerShell cmdlets to administer Office 365 Groups
- MY MOST USED POWERSHELL SCRIPTS FOR MANAGING SHAREPOINT ONLINE
- Undocumented Features
"},{"location":"powershell/powershell/#sharepoint-2016","title":"SharePoint 2016","text":" - https://github.com/harbars/PnP-Tools/tree/master/Scripts
- https://github.com/harbars/SPAT16
"},{"location":"powershell/powershell/#modules","title":"Modules","text":" - http://bobmixon.com/2018/06/powershell-and-sharepoint-modules-part-1/
- https://github.com/mikefrobbins/Plaster/tree/master/Template
$env:PSModulePath\n(Get-Module -ListAvailable Pnp.*).path\n\nGet-InstalledModule | select name, version\n
"},{"location":"powershell/powershell/#slides","title":"Slides","text":" - Code & Slides from my Presentations
"},{"location":"powershell/powershell/#azuread","title":"AzureAD","text":" - The PowerShell Gallery- Overview
- Powershellgallery - Module - AzureAD
- Get Azure AD audit and sign-in Logs using PowerShell and AzureADPreview module
- How to Upgrade Office 365 PowerShell Scripts to Use the Graph API
Install-Module -Name AzureAD\n
"},{"location":"powershell/powershell/#loaded-modules","title":"Loaded Modules","text":" - How to list all of the assemblies loaded in a PowerShell session?
[System.AppDomain]::CurrentDomain.GetAssemblies() | Where-Object Location | Sort-Object -Property FullName | Select-Object -Property FullName, Location, GlobalAssemblyCache, IsFullyTrusted | Out-GridView\n
"},{"location":"powershell/spo-ps/","title":"SPO Powershell","text":" - SPO Index
- Getting started with SharePoint Online Management Shell
"},{"location":"powershell/spo-ps/#check-version","title":"Check Version","text":"Latest Version - https://www.powershellgallery.com/packages/Microsoft.Online.SharePoint.PowerShell/16.0.8119.0
Get-Module Microsoft.Online.SharePoint.PowerShell* -ListAvailable | Select-Object Name,Version | Sort-Object Version -Descending\n
"},{"location":"powershell/spo-ps/#update-module-to-the-latest-version","title":"Update Module to the latest version","text":"Update-Module Microsoft.Online.SharePoint.PowerShell\n
"},{"location":"powershell/spo-ps/#delete-the-old-version","title":"Delete the old version","text":"Get-InstalledModule -Name \"Microsoft.Online.SharePoint.PowerShell\" -RequiredVersion 16.0.8119.0 | Uninstall-Module\n
"},{"location":"powershell/spo-ps/#check-different-file-version","title":"Check Different File Version","text":" - The term \u2018Connect-SPOService\u2019 is not recognized
Get-ChildItem -Path 'C:\\Program Files\\WindowsPowerShell\\Modules\\Microsoft.Online.SharePoint.PowerShell\\*Microsoft.SharePoint*.dll' -Recurse | ft Name,@{Label=\"Version\";Expression={$_.VersionInfo.FileVersion}} -AutoSize\n\n# Search in GAC_MSIL\nGet-ChildItem -Path C:\\Windows\\Microsoft.NET\\assembly\\GAC_MSIL\\*Microsoft.SharePoint*.dll -Recurse | ft Name,@{Label=\"Version\";Expression={$_.VersionInfo.FileVersion}} -AutoSize\n
"},{"location":"powershell/spo-ps/#credential-manager","title":"Credential Manager","text":" - How-to-use-the-Windows-Credential-Manager-to-ease-authentication-with-PnP-PowerShell
"},{"location":"powershell/spo-ps/#connect","title":"Connect","text":" - connecting-to-all-office-365-services-with-powershell-and-multi-factor-authentication
- Connect to Office 365/Exchange Services Functions
Connect-SPOService https://devro-admin.sharepoint.com -Credential admin@devro.onmicrosoft.com\n
"},{"location":"powershell/spo-ps/#disconnect","title":"Disconnect","text":"Disconnect-SPOService\n
"},{"location":"powershell/spo-ps/#uls-correlation-id","title":"ULS-Correlation ID","text":"get-splogevent -starttime (get-date).addminutes(-20) | where-object { $_.correlation -eq \"e434f79b-68bb-40d2-0000-03a47eae1bf9\" } | fl message > c:\\errors1.txt\n
"},{"location":"powershell/spo-ps/#security","title":"Security","text":" - SPO Authentication in Powershell for CSOM when Legacy Authentication is disabled for tenant or Multi Factor Authentication is enabled for user
- sharepoint-framework-and-microsoft-graph-access-%E2%80%93-convenient-but-be-very-careful
get-sposite | ?{$_.DenyAddAndCustomizePages -eq 'Disabled'}\n ```\n\n## Ressources\n\n- [resources-to-learn-powershell-for-office-365](https://absolute-sharepoint.com/2018/03/resources-to-learn-powershell-for-office-365.html)\n\n## Tenant Configuration\n\n### Remove Feedback Button\n\n```Powershell\nSet-SPOTenant -UserVoiceForFeedbackEnabled:$false\n
"},{"location":"powershell/teams/","title":"Teams Powershell","text":" - PowerShell Reference for Office Products
"},{"location":"powershell/teams/#check-version","title":"Check Version","text":"Latest Version
- https://www.powershellgallery.com/packages/MicrosoftTeams/0.9.6
Get-Module MicrosoftTeams* -ListAvailable | Select-Object Name,Version | Sort-Object Version -Descending\n
"},{"location":"powershell/teams/#update-module-to-latest-version","title":"Update Module to latest version","text":"Update-Module MicrosoftTeams\n
"},{"location":"powershell/teams/#delete-old-version","title":"Delete old version","text":"Get-InstalledModule -Name \"MicrosoftTeams\" -RequiredVersion 0.9.0 | Uninstall-Module\n
"},{"location":"powershell/teams/#connect","title":"Connect","text":" - https://docs.microsoft.com/en-us/powershell/module/teams/connect-microsoftteams?view=teams-ps
"},{"location":"powershell/teams/#disconnect","title":"Disconnect","text":" - https://docs.microsoft.com/en-us/powershell/module/teams/disconnect-microsoftteams?view=teams-ps
"},{"location":"powershell/teams/#teamsmanagment","title":"Teamsmanagment","text":" - Managing Teams \u2013 Movers and Leavers
- TeamsManagement Powershell
- Replace the membership of a user in a Microsoft Group or Microsoft Team
- Managing Microsoft Teams using the Microsoft Graph PowerShell
"},{"location":"rezepte/kochtips/","title":"Kochtips","text":""},{"location":"rezepte/kochtips/#salzkartoffel","title":"Salzkartoffel","text":" - Grundrezept: Salzkartoffeln
"},{"location":"rezepte/kochtips/#salate","title":"Salate","text":" - Schwarze Linesen mit Zitonen
"},{"location":"security/learning/","title":"Security","text":""},{"location":"security/learning/#check-pw","title":"Check PW","text":" - NCSC Check Tool
- haveibeenpwned
- Is someone spying on you?
"},{"location":"security/learning/#training","title":"Training","text":" - Resources for Microsoft Security Exams
- Microsoft Security Ninja Training
"},{"location":"security/learning/#azure","title":"Azure","text":""},{"location":"security/learning/#azure-ad-breached","title":"Azure AD breached","text":" - My Azure AD has been breached! What now?
- DCToolbox PowerShell Module for Microsoft 365 Security, Conditional Access Automation, and more
"},{"location":"security/learning/#azure-sentinel","title":"Azure Sentinel","text":" - Monitor Office 365 Logs from Azure Sentinel
"},{"location":"security/learning/#resources","title":"Resources","text":" - OWASP\u2122 Foundation
- danielmiessler - Web Application Security Testing Resources
- Hacking-Security-Ebooks
- PEN-200 The official OSCP certification course
- MITRE ATT&CK\u00ae globally-accessible knowledge base
"},{"location":"security/learning/#checklist","title":"Checklist","text":" - OWASP Testing Checklist
- Security KB Issues - portswigger.net
"},{"location":"security/learning/#tools","title":"Tools","text":" - Wireshark
- Website security check
- Advanced Web Security Proxy
- OWASP Zed Attack Proxy (ZAP)
- Burp
- RSA - Open Source Tools
- exploit-db.com
- Intro netstat
- Open Port Checking Tools in 2021
- Top 10 Vulnerability Scanning Tools in 2023
"},{"location":"security/learning/#firewall","title":"Firewall","text":" - Using PowerShell To Maintain Windows Firewall Rules For Remote Access
"},{"location":"security/learning/#sharepoint-onprem","title":"Sharepoint OnPrem","text":" - Penetration Testing SharePoint
"},{"location":"security/learning/#sharepoint-online","title":"SharePoint Online","text":" - Managing SharePoint Online Security: A Team Effort
- Managing External Guests in SharePoint vs Teams
"},{"location":"security/learning/#office-365-azuread","title":"Office 365 / AzureAD","text":" - Basic Security Set Up for Microsoft 365
- Office 365 Security overview
- Use tenant restrictions to manage access to SaaS cloud applications
- Detect and Remediate Illicit Consent Grants
- Preventing M365 app bypass MFA
- Fast and Free Incident Response Tools in Microsoft 365
- How to Discover New Audit Events in the Office 365 Audit Log (Including App Consents)
- Consent Grant Attack
- Azure AD - Attack and Defense Playbook
- SimuLand
- Azure AD access reviews
"},{"location":"security/learning/#file","title":"File","text":" - 6 locations where you can set security for files in SharePoint and Office 365
"},{"location":"security/learning/#spfx-tooling","title":"SPFx Tooling","text":" - Security Scanning a SharePoint Framework Solution
- Is JavaScript Safe for SharePoint
"},{"location":"security/learning/#lockfiles","title":"Lockfiles","text":" - Why npm lockfiles can be a security blindspot for injecting malicious modules
"},{"location":"security/learning/#block-websites","title":"Block websites","text":" - How to Block a Single Website and more
"},{"location":"security/learning/#cookies","title":"Cookies","text":" - SameSite cookies explained
"},{"location":"security/learning/#blogger-and-sites","title":"Blogger and Sites","text":" - https://splintercod3.blogspot.com/
- swisscybersecurity.net
"},{"location":"spfx/ace/","title":"ACE","text":""},{"location":"spfx/ace/#github-samples","title":"Github Samples","text":" - PnP: sp-dev-fx-aces
- PiaSys: Conferences-Samples
- PnP: spfx-reference-scenarios
"},{"location":"spfx/adaptive-cards/","title":"Adaptive Cards","text":""},{"location":"spfx/adaptive-cards/#reference","title":"Reference","text":" - adaptivecards.io
- Get started with Adaptive Cards
- Actionable Message Designer
"},{"location":"spfx/adaptive-cards/#samples","title":"Samples","text":" - Teamify with Adaptive Cards and Microsoft Flow
- Using MS Graph API and Adaptive Cards for Search/Render User Details with SPFx solutions | nakkeerann/navspfxsoln
"},{"location":"spfx/adaptive-cards/#community-demo","title":"Community Demo","text":" - Community Demo - Image Gallery Web Part Built with Adaptive Cards
- SharePoint Control to Render Adaptive Cards
- Episode #134 - Working with Adaptive Cards in SharePoint Framework
"},{"location":"spfx/adaptive-cards/#images","title":"Images","text":" - Display images in Adaptive Cards
"},{"location":"spfx/ai/","title":"AI","text":""},{"location":"spfx/ai/#azure-openai-service","title":"Azure OpenAI Service","text":" - Azure OpenAI Service products
- Azure OpenAI Service Documentation
- ChatGPT + Enterprise data with Azure OpenAI and Cognitive Search
"},{"location":"spfx/ai/#gpt-prompts","title":"GPT Prompts","text":" - Awesome ChatGPT Prompts
- Power Platform GPT Prompts
- How generative language models work
- Prompt engineering cheatsheet (for JavaScript developers)upate
"},{"location":"spfx/ai/#samples","title":"Samples","text":" - openai-samples
- M365AIMate - Microsoft Graph and .NET
- Intelligent Kiosk Sample
"},{"location":"spfx/ai/#learning","title":"Learning","text":" - 30 Days Of Azure AI Roadmap
- Prompt Engineering Guide
"},{"location":"spfx/ai/#semantic-kernel","title":"Semantic Kernel","text":" - Introducing Semantic Kernel: Building AI-Based Apps
- Hello, Semantic Kernel!
"},{"location":"spfx/ai/#text-analyse","title":"Text Analyse","text":" - Sentiment of comments given on a SharePoint page
"},{"location":"spfx/ai/#frameworks","title":"Frameworks","text":" - mendable.ai
- langchain.js
- LlamaIndex
"},{"location":"spfx/ai/#monitor-azure-openai-service","title":"Monitor Azure OpenAI Service","text":" - manage costs azure openai chatgpt
"},{"location":"spfx/architecture/","title":"Architecture","text":" - Microsoft cloud IT architecture resources
- Azure Architecture Center
- Common Solution Architecture Requirement Descriptions you can use
- Microsoft 365 Application Architecture Patterns
"},{"location":"spfx/architecture/#checklist-solution","title":"Checklist Solution","text":" - Question / Checklist SPFx Solution
- SharePoint Framework \u2013 new project checklist
- https://rencore.com/software/tools/sharepoint-customizations-guide/
"},{"location":"spfx/architecture/#user-settings","title":"User Settings","text":" - The easiest way to store user settings of your Microsoft 365 app
"},{"location":"spfx/architecture/#build-applications","title":"Build applications","text":" - Build applications on the Microsoft Cloud
"},{"location":"spfx/architecture/#template-and-icons","title":"Template and Icons","text":" - Microsoft 365 architecture templates and icons
"},{"location":"spfx/azure/","title":"Azure","text":" - Azure documentation
- Azure Active Directory fundamentals documentation
"},{"location":"spfx/azure/#azure-account-identity-services","title":"Azure Account / Identity services","text":" - Introduction to tokens
- What's the difference between a personal Microsoft account and a work or school account?
"},{"location":"spfx/azure/#administration-with-azure-cli","title":"Administration with Azure-CLI","text":" - The Azure Command-Line Interface (CLI)
"},{"location":"spfx/azure/#bicep","title":"Bicep","text":" - How to get started with deploying Azure resources with Bicep
"},{"location":"spfx/azure/#granting-access-using-sharepoint-app-only","title":"Granting access using SharePoint App-Only","text":" - Setting up an app-only principal with tenant permissions
"},{"location":"spfx/azure/#keyvault","title":"KeyVault","text":" - Use Azure KeyVault Secrets when accessing Microsoft Graph
- Handle certificates with Azure KeyVault when accessing SharePoint Online
- Using Azure KeyVault to Secure Graph API Automation Scripts
"},{"location":"spfx/azure/#azure-managed-identities","title":"Azure Managed Identities","text":" - Managed Identities With Azure Container Apps
- Authentication in Azure Automation with Managed Identity on SharePoint and Microsoft Graph
- Using Managed Identities to Connect to Microsoft 365 & Azure
"},{"location":"spfx/azure/#azure-logic-app","title":"Azure Logic App","text":" - How to transition from Power Automate to Logic Apps
- Choose the right integration and automation services in Azure
- Export flows from Power Automate and deploy to Azure Logic Apps
- The friendly SMS reminder with Logic Apps, Azure Functions + Key Vault
- Estimate storage costs for workflows in single-tenant Azure Logic Apps
- Get notified of changes in your tenant with Microsoft Graph, Azure Event Hubs and Logic Apps
"},{"location":"spfx/azure/#azure-automation","title":"Azure-Automation","text":" - SharePoint Online PnP PowerShell Provisioning using Flow and Azure Automation
- Using Azure Automation for Modern SharePoint Site Provisioning
- Fun with Azure Automation and Table Service REST API
- Build your PnP Site Provisioning with PowerShell in Azure Functions and run it from Flow
- PROVISIONING TEAMS WITH A SITE DESIGN, FLOW AND MICROSOFT GRAPH
- https://blog.yannickreekmans.be/automate-governance-in-microsoft-teams-the-result/
- Provision Microsoft Teams with Azure Automation \u2013 Part I
- Provision Microsoft Teams with Azure Automation \u2013 Part II
- Community Demo - Using Azure automation for provisioning of your SharePoint and Teams structures
- From start to finish: How to create your modern SharePoint site provisioning solution - BRK3273
- BUILDING A MODERN FLAT PROJECT HUB USING SITE DESIGNS
- office365-azureautomation
- office365-azureautomation-runbooks
- Azure automation tips & tricks
- Azure automation limits
- Working with Microsoft Teams PowerShell in Azure Automation
"},{"location":"spfx/azure/#azure-automation-teams-powershell","title":"Azure Automation Teams Powershell","text":" - Working with Microsoft Teams PowerShell in Azure Automation
"},{"location":"spfx/azure/#azure-functions","title":"Azure-Functions","text":" - AUTO-CONFIGURING SHAREPOINT SITES WITH SITE TEMPLATES \u2014 THE SETUP FROM START TO FINISH
- HOW TO USE PNP POWERSHELL ON AZURE FUNCTIONS WITH APPLICATION PERMISSIONS
- An Azure Function to keep other Functions/URLs warmed up
- 3 ways to create and debug Azure Functions \u2013 CLI VS Code & Visual Studio
- Putting some more FUN into Azure Functions, Managed Identity & Microsoft Graph
- SharePoint PDF Merge Function
- Running .NET Function Apps or App Services accessing Microsoft 365
"},{"location":"spfx/azure/#app-register","title":"App Register","text":" - Running a PowerShell script in the cloud with an Azure Function, PnP and the Graph
- Control Office 365 Group creation \u2013 a simple no-code solution
"},{"location":"spfx/azure/#azure-services","title":"Azure Services","text":" - Get the Azure Quick Start Guide for .NET Developers
- 10 Azure Cloud services that every Developers, Consultant, and Architects should Know and Learn it well \u2013 Part I
- 10 Azure services that every .NET Developers, Consultant, and Architects should know and learn it well \u2013 Part II
"},{"location":"spfx/azure/#azure-log-analytics","title":"Azure Log Analytics","text":""},{"location":"spfx/azure/#tips","title":"Tips","text":" - Azure Readiness Checklist
"},{"location":"spfx/azure/#token","title":"Token","text":""},{"location":"spfx/azure/#manage-group-settings","title":"Manage Group Settings","text":" - https://support.office.com/en-us/article/manage-who-can-create-office-365-groups-4c46c8cb-17d0-44b5-9776-005fced8e618
- https://docs.microsoft.com/en-us/azure/active-directory/active-directory-accessmanagement-groups-settings-cmdlets
- How to grant all employees access to a SharePoint site via Everyone except external users Group
- How to grant the Everyone claim to external users in Office 365
- Dynamische Gruppen klingen super!
"},{"location":"spfx/azure/#naming-policy","title":"Naming Policy","text":" - https://drewmadelung.com/category/office-365/groups/
"},{"location":"spfx/azure/#permission-reference","title":"Permission Reference","text":" - Connect to Azure AD-secured APIs in SharePoint Framework solutions
- Microsoft Graph permissions reference
- User_impersonation scope issue when working with SharePoint Framework API permissions
- Sites.Selected Permission using Azure AD App
- Running applications with limited SharePoint permissions - Resource Specific Consent (RSC)
"},{"location":"spfx/azure/#microsoft-identity-platform","title":"Microsoft identity platform","text":" - What is the Microsoft identity platform?
- OAuth 2.0 and OpenID Connect (OIDC) in the Microsoft identity platform
"},{"location":"spfx/azure/#security","title":"Security","text":" - Basic Security Set Up for Microsoft 365
- What is Conditional Access?
- Minimizing the Risk of Compromise
- Why Using App Secrets in Production is a Bad Idea
- Cloud Forensics using Hawk
"},{"location":"spfx/azure/#scripts","title":"Scripts","text":" - https://github.com/dmadelung/O365GroupsScripts/blob/master/DrewO365GroupsScripts%20-%20Azure%20AD%20Cmdlets
"},{"location":"spfx/azure/#remote-working","title":"Remote working","text":" - Practical guide to securing remote work using Microsoft 365 Business Premium
"},{"location":"spfx/azure/#office-365-management-activity-api-m365-audit-logs","title":"Office 365 Management Activity API (M365 Audit Logs)","text":" - Office 365 Management Activity API with Power Automate \u2013 Part One
- Search the audit log in the compliance center
- Detailed properties in the audit log
"},{"location":"spfx/azure/#azure-ad-cross-tenant-migration","title":"Azure AD Cross Tenant Migration","text":" - Getting started with Azure AD cross-tenant synchronization
"},{"location":"spfx/azure/#azure-ad-assessment-tools","title":"Azure AD Assessment Tools","text":" - Azure AD Assessment Guide
- Azure AD Exporter
- Microsoft Identity Tools PowerShell Module
- Identity Power Toys
- Microsoft Graph Permission Explorer
- Graph X-Ray
- Graph PowerShell Conversion Analyzer
"},{"location":"spfx/azure/#azure-storage","title":"Azure Storage","text":" - How to Transfer Files from Local system Folder to Azure Storage via SFTP
"},{"location":"spfx/backup/","title":"Backup","text":" - Introducing Microsoft 365 Backup and Microsoft 365 Archive
- office365itpros: Microsoft 365 Backup for SharePoint Online and Exchange Online
- office365itpros: Microsoft Briefs Partners about Microsoft 365 Backup and Microsoft 365 Archive Products
"},{"location":"spfx/blogger/","title":"Blogger","text":""},{"location":"spfx/blogger/#o365","title":"O365","text":" - patrickrodgers
- blog.josequinto.com
- tricky-sharepoint.blogspot.ch
- blog.arvosys.com
- techwithnakkeeran.com
- afrait.com
"},{"location":"spfx/blogger/#teams","title":"Teams","text":""},{"location":"spfx/blogger/#list-formatting","title":"List Formatting","text":" - sharepointhd.wordpress.com
"},{"location":"spfx/blogger/#onprem","title":"OnPrem","text":""},{"location":"spfx/bot/","title":"BOT","text":" - building-a-microsoft-teams-bot
- Integrating Bot Framework v4 bots to SharePoint using SharePoint Framework
"},{"location":"spfx/bot/#bot-framework-cognitive-service","title":"Bot Framework & Cognitive Service","text":""},{"location":"spfx/bot/#ai","title":"AI","text":" - Microsoft Build 2019 updates on Conversational AI
- Ignite 2019 News on the Conversational AI Platform
"},{"location":"spfx/bot/#qna-makers","title":"QnA Makers","text":" - QnA Maker Lessons Learned + Limits Infographic
"},{"location":"spfx/bot/#bot-framework-composer","title":"Bot Framework Composer","text":" - Bot Framework Composer - Github
- Bot Framework Composer - Weather Bot
"},{"location":"spfx/bot/#samples","title":"Samples","text":" - Add AtBot to your SharePoint site using SPFx
- Github Source - AtBot Protype
- Microsoft Bot Framework Web Chat
- react-chat-widget
- spfx-react-bot-qna
- Search for your SharePoint content from a bot using the Bot Framework, OAuth2 and Node.js
- SPFx MSAL Bot Extension
- Bot Framework v4 SPFX Web Part Released
- react-bot-framework
"},{"location":"spfx/bot/#power-virtual-agent","title":"Power Virtual Agent","text":" - How to: create #nocode bots to teams super-easily in 5 minutes using Power Virtual Agents app in Teams
"},{"location":"spfx/bot/#patterns","title":"Patterns","text":" - Transition conversations from bot to human
- Create interactive conversational bots for Microsoft Teams
- Chatbot Human Handover with Microsoft Teams
"},{"location":"spfx/bot/#create-bot-in-teams","title":"Create Bot in Teams","text":" - Episode #108 - Creating a Teams Bot with Yo Team
- Chatbots in Microsoft-Teams | Erstellen Sie mit Power Virtual Agents
- Make a simple bot using Webhooks in Teams
- teams-webhook-weatherbot-sample
"},{"location":"spfx/branding/","title":"Branding","text":""},{"location":"spfx/branding/#overview","title":"Overview","text":" - Branding SharePoint - The New Normal
- SharePoint design principles
- SharePoint Look Book
"},{"location":"spfx/branding/#docs","title":"Docs","text":" - Designing great SharePoint experiences
- Customizing the \"modern\" experiences in SharePoint Online
"},{"location":"spfx/branding/#css","title":"CSS","text":" - Ignite 2016 - Customizing and Branding SharePoint Online Team Sites Demos
- SPTechCon2016-SanFrancisco
- Einf\u00fcgen von Bildern im RTE steuern
- How to use Bootstrap in SharePoint Framework projects
- SPFx WebParts responsive to Modern Page sections
- Prevent SCSS from changing your CSS class names
- Applying Multiple CSS Classes in SharePoint Framework
"},{"location":"spfx/branding/#designing-header","title":"Designing Header","text":" - Designing SharePoint sites with beautiful headers
- Designing SharePoint sites with beautiful headers
"},{"location":"spfx/businessobjects/","title":"Business-Objects","text":""},{"location":"spfx/businessobjects/#async","title":"Async","text":" - Understand promises before you start using async/await
- https://blog.josequinto.com/2017/05/19/why-do-we-should-use-custom-business-objects-models-in-pnp-js-core/
- https://github.com/jquintozamora/spfx-react-sp-pnp-js-property-decorators
- https://sharepoint.stackexchange.com/questions/221325/how-to-enable-async-wait-in-spfx-typescript-tslint-missing-semicolon-ts1005
private async loadScripts(): Promise<void> {\n return new Promise<void>(async (resolve) => {\n if(this._context) {\n resolve();\n }\n\n const response = this.loadScript(layoutsUrl + 'init.js', 'Sod');\n resolve();\n });\n }\n
Load Data from SP-List Code
private async _loadList(): Promise<void> {\n this.setState({\n loading: true\n });\n let items = await pnp.sp.web.lists.getByTitle(\"Events\").items.select(\"Id\", \"Title\", \"SPFxDescription\", \"SPFxThumbnail\")\n .orderBy(\"Modified\", false).get();\n _items = items.map((item: IList, index: number) => {\n return {\n thumbnail: item.SPFxThumbnail != null ? item.SPFxThumbnail.Url : \"\",\n key: item.Id,\n name: item.Title,\n description: item.SPFxDescription\n }\n });\n this.setState({\n sortedItems: _items,\n columns: _buildColumns(),\n loading: false,\n newsFeedVisible: false\n });\n _lastQueryDate = moment();\n}\n
"},{"location":"spfx/classic/","title":"Classic sites","text":" - https://rasper87.wordpress.com/2018/04/24/provision-spfx-web-parts-to-classic-sites-part-1-include-spfx-assets-package-inside-wsp/
"},{"location":"spfx/column-formating/","title":"Column Formating","text":""},{"location":"spfx/column-formating/#reference","title":"Reference","text":" - Use column formatting to customize SharePoint
- Special string values
- Getting started with SharePoint\u2019s custom column formatting (Part 1)
- Getting started with SharePoint's custom view formatting (Part 2)
- Links about List Formating
"},{"location":"spfx/column-formating/#tools","title":"Tools","text":" - HTML To Formatter
- What\u2019s new in Column Formatter 1.2
- SharePoint Online CSS Classes
- Microsoft-Lists-Hub
"},{"location":"spfx/column-formating/#ressources","title":"Ressources","text":" - http://www.sharepointing.co.uk/2017/11/10/customise-sharepoint-online-columns-using-json
- http://warner.digital/columnformattingintroduction
- http://warner.digital/sharepointcolumnformattinggettingstartedpart1/
- http://warner.digital/sharepointcolumnformattinggettingstartedpart2/
- http://warner.digital/sharepointcolumnformattinggettingstartedpart3/
"},{"location":"spfx/column-formating/#samples","title":"Samples","text":" - PnP SharePoint List Formatting Samples
- Show Holidays/Events, with no of days to go using ListView Formatting
"},{"location":"spfx/column-formating/#add-scripts-for-formating","title":"Add Scripts for formating","text":" - SharePoint List Formatting Tabs
"},{"location":"spfx/column-formating/#view-formating","title":"View formating","text":" - How to create a current week view in Microsoft Lists
"},{"location":"spfx/communication-site/","title":"Communication Site","text":""},{"location":"spfx/communication-site/#sitecoloums-format","title":"SiteColoums Format","text":" - [Show me the news (pages)] (https://capacreative.co.uk/2018/10/16/show-me-the-news-pages/)
"},{"location":"spfx/configuration/","title":"Configuration","text":" - https://www.sharepointeurope.com/read-manipulate-spfx-configuration-values-code-like-boss/
"},{"location":"spfx/cortex/","title":"Project Cortex","text":""},{"location":"spfx/cortex/#overview","title":"Overview","text":" - SharePoint Developer Monthly Community Call - January 2020 - Cortex
"},{"location":"spfx/cosmos-db/","title":"Cosmos DB","text":""},{"location":"spfx/cosmos-db/#tips","title":"Tips","text":" - Things You Need to Know Before Building Applications With Azure Cosmos DB
- How to: Using managed identities to access Cosmos DB data via RBAC and disabling authentication via keys
"},{"location":"spfx/custom-web-api/","title":"Custom Web API","text":""},{"location":"spfx/custom-web-api/#securing","title":"Securing","text":" - Connect to API secured with Azure Active Directory
"},{"location":"spfx/custom-web-api/#samples","title":"Samples","text":"-SharePoint add-in, custom Web API and SPFx (v1.1)
"},{"location":"spfx/debug/","title":"Debug","text":""},{"location":"spfx/debug/#debug-tricks","title":"Debug Tricks","text":""},{"location":"spfx/debug/#webcast","title":"Webcast","text":" - PnP Webcast - Debugging SharePoint Framework Solutions
"},{"location":"spfx/debug/#tips","title":"Tips","text":" - Testing and debugging your SPFx solutions in production without causing any impact
- SharePoint Framework bookmarklet tool for quick and easy debugging
- debug-production-version-sharepoint-framework-solution
- how-debug-sharepoint-framework-webpart-visual-studio-code
- debug-in-vscode
- SPFx-breakpoints-and-debugging-from-Visual-Studio-Code
- quick-tip-easily-test-sharepoint
- testing-and-debugging-your-spfx-solutions-in-production-without-causing-any-impact
- Be schizophrenic at debugging SPFx too
- SPFx/React DEBUG vs PRODUCTION builds
"},{"location":"spfx/debug/#exclude-mock-data","title":"Exclude mock data","text":" - https://www.eliostruyf.com/exclude-your-mock-data-and-other-modules-from-your-production-bundle-in-spfx/
"},{"location":"spfx/debug/#azure-token","title":"Azure Token","text":" - Easy trick to test your Azure Active Directory returned ID Tokens
"},{"location":"spfx/delve/","title":"Delve","text":""},{"location":"spfx/delve/#search-konfiguration","title":"Search Konfiguration","text":" - HIDING FROM DELVE IN OFFICE 365
"},{"location":"spfx/deployment/","title":"Deployment","text":""},{"location":"spfx/deployment/#app-catalog","title":"App Catalog","text":" - SharePoint App Catalog Development Tips
"},{"location":"spfx/deployment/#azure-devops-azure-pipline","title":"Azure DevOps / Azure Pipline","text":" - Getting Started with Git and Azure DevOps | Getting Started with Git and Azure DevOps: The Ultimate Guide
- Feature Branch Workflow and Pull Requests
- Setting up Azure DevOps Pipelines for SharePoint Framework solutions
- Setting up multiple environments with your DevOps pipeline
- Implement Continuous Integration and Continuous deployment using Azure DevOps
- Managing projects in a modern world (Part 1)
- Walkthrough: use Azure DevOps with SPFx, GitFlow and GitVersion
- How to: Setup CI / CD in Azure DevOps with the help of SPFx Generator
- Automate Building, Testing and Deploying SharePoint Framework Projects with Azure Pipelines in Four Steps
- How to: Use PnP.PowerShell to deploy SharePoint apps with Azure DevOps
"},{"location":"spfx/deployment/#alm","title":"ALM","text":" - node-sp-alm
- alm-for-widget-solutions
- http://julieturner.net/2016/09/code-creep-sharepoint-cdn/
- http://yannickborghmans.com/2017/12/28/sharepoint-application-lifecycle-management-api-how-to-use-it-in-your-code/
- https://github.com/estruyf/node-sp-alm
- https://docs.microsoft.com/en-us/sharepoint/dev/apis/alm-api-for-spfx-add-ins
- https://www.npmjs.com/package/node-sp-alm
- ALM API and installSolution SiteScript Action Demo
"},{"location":"spfx/deployment/#arm","title":"ARM","text":" - Reusable ARM template for Web Application
- GitHub - ARMTemplates
- Azure ARM Templates Explored
"},{"location":"spfx/deployment/#cicd","title":"CI/CD","text":" - CI/CD with SharePoint Framework (SPFx)
- Implement Continuous Integration and Continuous deployment using Azure DevOps
- Implement CI/CD with Office 365 CLI for SPFx Solution for MS Teams
- Apply a DevOps process to your SPFx project (Part 1)
- Apply a DevOps process to your SPFx project (Part 2)
- Apply a DevOps process to your SPFx project (Part 3)
- CI/CD for SPFx Deployment in Azure DevOps using M365 CLI
"},{"location":"spfx/deployment/#deployment-to-cdn","title":"Deployment to CDN","text":" - Choosing a CDN for SharePoint client-side solutions
- Deploy SPFx WebParts To Office 365 Public CDN
- Add Office 365 CDN rule to have a document library for each SharePoint site
- Office 365 Content Delivery Network (CDN) Quickstart
write-manifests.json
{\n\"cdnBasePath\": \"https://publiccdn.sharepointonline.com/cloud67.sharepoint.com/cdn/topnavmenu\"\n}\n
"},{"location":"spfx/deployment/#deployment-to-sp-library","title":"Deployment to SP Library","text":" - Deploy SPFx WebParts to SharePoint Library
"},{"location":"spfx/deployment/#deployment-to-azure-storage","title":"Deployment to Azure Storage","text":" - Automate publishing process of MkDocs to Static Website hosting in Azure Storage with VSTS
- Deploy SPFx WebParts To Azure CDN
"},{"location":"spfx/deployment/#appsettings","title":"AppSettings","text":" - SharePoint Framework app settings
- AppSettings in SharePoint Framework (SPFx) and Staging
"},{"location":"spfx/deployment/#automate-project-documentation","title":"Automate Project Documentation","text":" - DocsFx in SPO
- DocFx
- Automate project documentation from Azure DevOps to SharePoint on Microsoft 365
- The static site generator for SharePoint
"},{"location":"spfx/dev-ops/","title":"Dev-Ops","text":""},{"location":"spfx/dev-ops/#tips-tricks","title":"Tips & Tricks","text":"SPFx unit tests and code coverage quality gates in Azure DevOps \u2013 Velin Georgiev Apply a DevOps process to your SPFx project (Part 1)
"},{"location":"spfx/dev-ops/#sample","title":"Sample","text":""},{"location":"spfx/dev-ops/#jest-setup","title":"Jest Setup","text":"https://blog.velingeorgiev.com/unit-test-your-sharepoint-framework-solution-with-jest https://www.youtube.com/watch?v=iDt7MJX9Lj0&t=20s https://www.youtube.com/watch?v=lFkNqcf-Thg https://www.eliostruyf.com/sharepoint-framework-unit-tests-with-jest/
"},{"location":"spfx/dev-ops/#devops-pipelines-demos","title":"DevOps pipelines demos","text":"http://bit.ly/pnp-devops-1 http://bit.ly/pnp-devops-2 http://bit.ly/pnp-devops-3 http://bit.ly/pnp-devops-4
"},{"location":"spfx/dev-ops/#unit-tests","title":"Unit Tests","text":" - SharePoint Framework unit tests and code coverage quality gates in Azure DevOps
"},{"location":"spfx/docker/","title":"Docker","text":""},{"location":"spfx/docker/#spfx-images","title":"SPFx Images","text":" - SPFx Docker image for your team
- SPFx v1.5.0 Docker image available with some caveats
- SPFx GitHub Codespaces Container
"},{"location":"spfx/docker/#tips","title":"Tips","text":" - Develop with Docker
- A Docker Image for PnP SPFx Projects
"},{"location":"spfx/docker/#devcontainer","title":"DevContainer","text":" - Using custom certificates when debugging SPFx Solutions
"},{"location":"spfx/documentsets/","title":"Document Sets","text":""},{"location":"spfx/documentsets/#overview","title":"Overview","text":" - Introduction to Document Sets
- Document Sets for Fast Legacy Process Automation
- Document sets \u2013 the hidden gem of SharePoint
- Enabling Document Sets in SharePoint Online Sites
- Modern Document Sets
"},{"location":"spfx/documentsets/#issues","title":"Issues","text":" - SharePoint Online JavaScript creates folder instead of document set
- Document Set created programmatically not working anymore since 12 Jan 2021
"},{"location":"spfx/documentsets/#tools","title":"Tools","text":""},{"location":"spfx/documentsets/#metalogix-content-matrix-87","title":"Metalogix Content Matrix 8.7","text":" - How Document Sets are Migrated
- List Content Options
"},{"location":"spfx/events/","title":"Events/meetings","text":""},{"location":"spfx/events/#how-to-create-online-meetingsevents","title":"How to create online meetings/events","text":" - How to present at online meetings and events like an ignite superstar
- From PowerPoint to Demos Easily with Desktops
- How to Create Great Tech Demos and Presentations
"},{"location":"spfx/extensions/","title":"Extensions","text":""},{"location":"spfx/extensions/#forms-list-layout-formating","title":"Forms List Layout Formating","text":" - Configuring the Layout of SharePoint Forms
"},{"location":"spfx/extensions/#custom-forms-extensions","title":"Custom Forms Extensions","text":" - Building a SharePoint New Site Form Look-Alike
- AddValidateUpdateItemUsingPath deep dive
"},{"location":"spfx/extensions/#tipps","title":"Tipps","text":" - How to properly add an Application Customizer to an existing SPFx Web Part Project
"},{"location":"spfx/extensions/#samples","title":"Samples","text":" - React-application-profile-meter
- How to create news ticker, SPFx-extension
"},{"location":"spfx/extensions/#full-page","title":"Full Page","text":" - SharePoint Full Page Canvas App
- spfx-appcust-removeFeeback
- React slider field customizer
- Check the page display mode from within your SharePoint Framework extensions
"},{"location":"spfx/extensions/#site-footer","title":"Site footer","text":" - SharePoint Site Footer
- SharePoint Framework custom header and footer application customizer extension
"},{"location":"spfx/extensions/#listview","title":"ListView","text":" - Showing or hiding SharePoint Framework ListView custom actions based on permissions and selected items
- SPFX ListView Command Set and Panel
- Let users get a simple link to a document or folder
- Create Modern Page Model with PnP/PnPjs
- Create ECB Menu Items
- A modern Save List as Template
"},{"location":"spfx/extensions/#bots","title":"Bots","text":" - Add AtBot to your SharePoint site using SPFx
"},{"location":"spfx/extensions/#clarity","title":"Clarity","text":" - Microsoft SharePoint & Clarity
- Power Platform Canvas Apps & Clarity
"},{"location":"spfx/extensions/#comments","title":"Comments","text":" - Receive comment notifications by email in Modern SharePoint Pages
- Github: Receive comment notifications on Modern SharePoint pages by email
"},{"location":"spfx/extensions/#change-browser-favicon-icon","title":"Change browser favicon icon","text":" - Change favicon on Modern SharePoint sites
- SPFx-favicon
"},{"location":"spfx/extensions/#google-analytics","title":"Google Analytics","text":" - Tracking code in Tenant Wide Extensions list
- SPFx-Google-Analytics
- How to add Google Tag Manager to modern SharePoint
"},{"location":"spfx/extensions/#matamo-piwik-analytics","title":"Matamo (Piwik) Analytics","text":" - Setting up usage analytics to Modern SharePoint using Matomo Analytics and SharePoint Framework
"},{"location":"spfx/extensions/#inject-css","title":"Inject CSS","text":" - Inject Custom CSS on SharePoint Modern Pages using SPFx Application Extensions
- Add Google Analytics to SharePoint modern pages
- Whitespace \u2013 Regain distraction-free working in SharePoint
"},{"location":"spfx/extensions/#spa","title":"SPA","text":" - Single Page App In SharePoint Using React
"},{"location":"spfx/extensions/#navigations","title":"Navigations","text":" - Handling navigation in a SharePoint Framework application customizer
- SPFx Side Navigation Project for Modern Sites
"},{"location":"spfx/extensions/#placeholders","title":"Placeholders","text":" - Safely using Placeholders in an extension
private _topPlaceholder : PlaceholderContent;\npublic onInit(void){\n this.context.placeholderProvider.changedEvent.add(this, this._handlePlaceholderChange.bind(this));\n}\n\nprivate _handlePlaceholderChange(){\n if (!this._topPlaceholder)\n {\n // We don't have a placeholder populated yet. Let's try and get it.\n this._topPlaceholder = this.context.placeholderProvider.tryCreateContent(PlaceholderName.Top);\n } else {\n // We have a placeholder - let's make sure that it still exists.\n let index:number = this.context.placeholderProvider.placeholderNames.indexOf(PlaceholderName.Top);\n if ( index < 0)\n {\n // The placeholder is no longer here.\n this._topPlaceholder.dispose();\n this._topPlaceholder = undefined;\n }\n }\n if ( this._topPlaceholder )\n {\n this._topPlaceholder.innerText = 'Hello World!';\n }\n}\n
"},{"location":"spfx/flow/","title":"Power Automate (aka. Flow)","text":""},{"location":"spfx/flow/#support","title":"Support","text":" - Troubleshooting a flow
- Microsoft Power Automate Community
"},{"location":"spfx/flow/#video","title":"Video","text":" - Microsoft Flow Conference
"},{"location":"spfx/flow/#api","title":"API","text":" - Working with APIs in Power Platform for beginners
"},{"location":"spfx/flow/#connectors","title":"Connectors","text":" - What you should know about building Microsoft Flow connectors
- Working with Custom Connectors in Power Platform for beginners
"},{"location":"spfx/flow/#limits","title":"Limits","text":" - Limits and configuration in Power Automate
- Power Automate and Flow Connector limits
- Microsoft Flow \u2013 The hidden gems, are you aware of all of these
- Microsoft Flow \u2013 This is the limit!
"},{"location":"spfx/flow/#admin-security","title":"Admin Security","text":" - Management of Flows
- Power Automate Security
"},{"location":"spfx/flow/#export-import-flows","title":"Export / Import Flows","text":" - Export and import your flows across environments with packaging
- Flow & Power Apps Migrator
"},{"location":"spfx/flow/#samples","title":"Samples","text":" - Power Automate Cookbook
- https://github.com/johnnliu/flow
- Demo - Using Microsoft Flow to send monthly emails
- http://johnliu.net/blog/2018/4/run-any-pnp-powershell-in-one-azurefunction-from-microsoft-flow
- Calling Microsoft Flow from a site script
- Automating New User Account On-boarding Using SharePoint Online, Flow, and PowerApps
- control office365 group creation
- Building interactive feedback analysis system with MS Forms, MS Flow, Power BI and SharePoint Online
- RUN A FLOW AS PART OF A SHAREPOINT SITE DESIGN
- Creating a Formatted Identifier in Flow
- Disable event firing when flow updates
- How to add text to any part of a SharePoint Page using Power Automate
- Send email reminders from Microsoft Lists using Power Automate
"},{"location":"spfx/flow/#copy-move-documents","title":"Copy / Move Documents","text":" - A modern \u201ctransfer to another location\u201d in office 365
- Generate Word documents from a template using Power Automate
"},{"location":"spfx/flow/#error-messages","title":"Error Messages","text":" - SharePoint / Microsoft Flow \u2013 Common error message when using Send an HTTP request to SharePoint action in Microsoft Flow
"},{"location":"spfx/flow/#json-in-flow","title":"JSON in Flow","text":" - How to use Parse JSON action in Power Automate
"},{"location":"spfx/flow/#disable-flow","title":"Disable Flow","text":" - https://www.toddklindt.com/PoshDisableFlowButton
Connect-PnPOnline -Url https://<teantUrl>/sites/<name>\n\n# disable\nSet-PnPSite -DisableFlows:$true\n\n# enable\nSet-PnPSite -DisableFlows:$false\n
"},{"location":"spfx/flow/#azure-logic-app","title":"Azure Logic App","text":" - Azure Logic Apps vs Microsoft Flow, Why Not Both?
- Integrate Azure Logic Apps with SharePoint Site Designs
"},{"location":"spfx/fluidframework/","title":"Fluid Framework","text":""},{"location":"spfx/fluidframework/#overview","title":"Overview","text":" - 5 reasons or thoughts on Fluent UI Web
- Fluid Framework
- Microsoft Ignite Blog: Microsoft Fluid Framework preview
"},{"location":"spfx/fluidframework/#samples","title":"Samples","text":" - Building real-time collaborative apps with Microsoft 365, Azure and Power Platform
"},{"location":"spfx/forms/","title":"Forms Tools","text":""},{"location":"spfx/forms/#microsoft-forms","title":"Microsoft Forms","text":""},{"location":"spfx/forms/#limits","title":"Limits","text":" - Getting started guidelines to microsoft forms limits and boundaries
"},{"location":"spfx/forms/#frameworks","title":"Frameworks","text":" - https://github.com/olegrumiancev/sp-listform-react
- Classic-to-Modern ListForm UI Transform Tool
- react-hook-form
"},{"location":"spfx/forms/#redux-forms","title":"Redux-Forms","text":" - React Redux Form
- Create an intelligent Form with React Redux Form
- https://blogs.perficient.com/2017/08/10/using-react-and-redux-in-sharepoint-frameworkspfx/
- https://github.com/SharePoint/sp-dev-fx-webparts/tree/master/samples/react-reduxform
"},{"location":"spfx/forms/#tips","title":"Tips","text":" - Tips for building a custom form
"},{"location":"spfx/governance/","title":"Governance","text":""},{"location":"spfx/governance/#collaboration","title":"Collaboration","text":" - Planning intranet governance
- Overview of collaboration governance in Microsoft 365
- Groups services interactions
"},{"location":"spfx/governance/#overview","title":"Overview","text":" - SharePoint governance questions
- Plan for governance in Office 365 Groups
- Plan for governance to transform teamwork with Microsoft 365
- How to implement SharePoint Governance
- overview-best-practices-for-managing-how-people-use-your-team-site
- Naming policy features
- The Ultimate SharePoint Governance Template
- Office 365 Group Naming Policy: Deciding if it\u2019s Right For You
- 8 Ways to Create Office 365 Groups \u2013 Overview and Differences
"},{"location":"spfx/governance/#information-architecture","title":"Information Architecture","text":" - Information architecture in modern SharePoint
- One Size Does Not Fit All
- 3 Dimensions of IA
- The Logical Dimension
- The Metadata Dimension
- Content Type Hub. What\u2019s vNext
"},{"location":"spfx/governance/#sharepoint-home-site","title":"SharePoint Home Site","text":" - SharePoint Home, Hub, Sites, Start\u2026 What?
- SHAREPOINT HOME SITES AND HUBS: A PRIMER
"},{"location":"spfx/governance/#content-type","title":"Content Type","text":" - Content Type Benefits in Modern SharePoint
- CHOICE, LOOKUP OR MANAGED METADATA?
- BUILD TARGETED TRAINING ON OFFICE 365 ADOPTION CENTER
- BUILD A MODERN COMPANY LOCATIONS PAGE IN MINUTES
- CONTENT TYPE FILTERS IN MODERN SHAREPOINT
- MULTIPLE LIBRARIES, FOLDERS OR METADATA
"},{"location":"spfx/governance/#imagemap","title":"ImageMap","text":"-Create Simple ImageMap in SPO
"},{"location":"spfx/governance/#permission","title":"Permission","text":" - 28 REASONS WHY MODERN SHAREPOINT ONLINE SITE PERMISSIONS ARE A HOT MESS
- Sharing and permissions in the SharePoint modern experience
- How Broken Are Office 365 SharePoint Permissions
- Azure AD Internal - GDPR Tool
- Making a real world sharing strategy for SharePoint, OneDrive & Teams
- SharePoint Modern Sites permission difference handling (Communication versus Teamsite)
- MS Teams Channel / SharePoint permission inconsistency
- Modern Authentication
"},{"location":"spfx/governance/#external-sharing","title":"External Sharing","text":" - A quick guide to secure Office 365_DE.pdf
- Coaching your users through the External Sharing Experience
- How to secure external sharing in SharePoint Online and Office 365
- Change External Sharing Settings Across a Hub Site with PowerShell
- Microsoft 365 guest sharing settings reference
- How to properly configure sharing settings in the SharePoint Admin Center
- Export Office 365 External User Reports for Secure External Collaboration
"},{"location":"spfx/governance/#organization-asset-libraries","title":"Organization Asset Libraries","text":" - SharePoint Organization Asset Libraries Explained
- Enable Organization assets on SharePoint Online
- How to create an Organisation Assets library in SharePoint Online to store Office Templates
- Use SharePoint Libraries to distribute Office Templates and Company images
"},{"location":"spfx/governance/#user-profile-delete-user","title":"User profile / Delete user","text":" - User Profile Automated Removal when User is Deleted from Active Directory
"},{"location":"spfx/governance/#external-user","title":"External user","text":" - 4 ways to setup external users in SharePoint
"},{"location":"spfx/governance/#sitecollections-versus-subsites","title":"SiteCollections versus SubSites","text":" - ADVANTAGES OF A FLAT SHAREPOINT SITE ARCHITECTURE
- Benefits to creating a flat site structure
"},{"location":"spfx/governance/#tips-creating-sites","title":"Tips Creating Sites","text":" - Exploring creating SharePoint TeamSites using SiteDesign and the REST API
- Balancing Self-Service with Governance and Control in Office 365
"},{"location":"spfx/governance/#backup","title":"Backup","text":" - Does Office 365 require a backup solution?
- Compare Backup Solutions SkyKick and Veeam
- Does Office 365, hosted by Microsoft requires a data backup solution
"},{"location":"spfx/governance/#auditusage-reports-scripts","title":"Audit/Usage Reports Scripts","text":" - Admindroid - Office 365 Management Made Easy
- 6 ways to check SharePoint Usage reports
- How to audit employees in SharePoint Online and Office 365
- Get SPO sites with filter using SPOSitePropertiesEnumerableFilter
- Retrieve Office 365 Audit logs using PowerShell and store in Azure table for quick retrieval
- Office 365 Groups and Teams Activity Report - obsolete groups
- Top 50 PowerShell Scripts for Microsoft 365 Admins
- SPC18: What Options do You Have to Govern the Lifecycle of Office 365 Groups / Teams Ignite2018GroupsGovernanceToolkit
- PowerShell scripts for Microsoft Office 365
- Useful PowerShell cmdlets to administer Office 365 Groups \u2013 Part 1
- Useful PowerShell cmdlets to administer Office 365 Groups \u2013 Part 2
- THR2131 - Three PowerShell reports every Office 365 admin needs to have
- Manage your SharePoint Team Sites to Excel
- Extract information of Communication sites to Excel
- Five-PowerShell-Reports-For-Office365
- ADEssentials - AzureAD Reporting
- M365 Powershell Reporting Scripts
- Microsoft Replaces User Data Search with Standard eDiscovery
- Azure AD audit logs latency
- REPORT ACTIVE DIRECTORY ACCOUNTS THAT ARE SYNCHRONIZED WITH AZURE AD
- How to Monitor New Members Added to Teams
"},{"location":"spfx/governance/#ad-mistakes","title":"AD Mistakes","text":" - Most Common Mistakes in Active Directory and Domain Services \u2013 Part 1
- Most Common Mistakes in Active Directory and Domain Services \u2013 Part 2
- Most Common Mistakes in Active Directory and Domain Services - Part 3
"},{"location":"spfx/governance/#handling-teams-and-groups","title":"Handling Teams and Groups","text":" - Governance and consciousness around handling Teams and Groups
- Three reasons why you should take control of Office 365 Groups creation
- Automating Office 365 Groups Lifecycle/Expiration management
- Stop using Power Automate to govern Microsoft Teams
- Microsoft Teams Naming Best Practices
"},{"location":"spfx/governance/#tips","title":"Tips","text":" - SharePoint Online Can Now Rename Site URLs
"},{"location":"spfx/governance/#sam","title":"SAM","text":" - A primer on SharePoint Advanced Management
- Govern and Secure SharePoint and OneDrive with Microsoft Syntex \u2013 SharePoint Advanced Management
"},{"location":"spfx/governance/#security-and-compliance-dlp","title":"Security and Compliance - DLP","text":" - Overview of data loss prevention
- Security and Compliance - DLP - Notes
- Compliance Customer Experience Engineering (CxE)
"},{"location":"spfx/governance/#records-management-rm","title":"Records Management (RM)","text":" - Managing and applying Purview retention labels using code
- Working with Purview event-based retention using code
- Finding incorrectly applied Purview retention labels
- Implications of applying Purview retention labels to folders
- Compliance Customer Experience Engineering (CxE) - (MIG/RM)
- Understanding Compliance and Records Management in Office 365- Video
- A Complete Guide to Office 365 Retention! - Video
- MIGScripts
- Microsoft 365 Compliancefeatures
- MIP and compliance capabilities - illustrations
"},{"location":"spfx/governance/#practise-german","title":"Practise (German)","text":" - Datensatzverwaltung in Microsoft 365
- Versionsverwaltung zur Aktualisierung von Datens\u00e4tzen verwenden
- Datenschutzressourcen
"},{"location":"spfx/governance/#practise-english","title":"Practise (English)","text":" - Lifecycle of an item in SharePoint: Where does it go?
- Use retention labels to manage the lifecycle of documents stored in SharePoint
- RETENTION IN SHAREPOINT ONLINE: THE WHERE, WHAT, HOW, AND WHEN
- ROLE TOUCHPOINTS DURING INFORMATION GOVERNANCE AND RECORDS MANAGEMENT IMPLEMENTATION
"},{"location":"spfx/graph/","title":"Microsoft Graph","text":""},{"location":"spfx/graph/#top-links","title":"Top Links","text":" - Graph Explorer
- Microsoft Graph permissions reference
- Use query parameters to customize responses
"},{"location":"spfx/graph/#best-practise","title":"Best Practise","text":" - Best practices for working with Microsoft Graph
- Using MS Graph Sandbox proxy to speed up development
"},{"location":"spfx/graph/#permission","title":"Permission","text":" - Microsoft Graph permissions reference
"},{"location":"spfx/graph/#learning","title":"Learning","text":" - 30 Days of Microsoft Graph
- Consuming SharePoint Online via the Microsoft Graph
- graph explorer - start
- graph webhooks - subscription
- Use the Microsoft Graph API
"},{"location":"spfx/graph/#working-with-sharepoint","title":"Working with Sharepoint","text":" - Microsoft Graph API or SharePoint REST API?
- SharePoint API in Microsoft Graph
"},{"location":"spfx/graph/#query-count-filter-search-orderby","title":"Query (Count / Filter / Search / OrderBy)","text":" - Use query parameters to customize responses
- Build advanced queries in Microsoft Graph with $count, $filter, $search, and $orderby
- Microsoft Graph PowerShell Filtering Working and Failures
"},{"location":"spfx/graph/#azure-functions","title":"Azure Functions","text":" - Getting started with PnP Core SDK
- How to access SharePoint data from Azure Function with SPFx and PnP Core SDK
- Azure Functions project that implements Microsoft Teams provisioning via Microsoft Graph
"},{"location":"spfx/graph/#samples","title":"Samples","text":" - Using Microsoft Graph API to convert the format of your documents
- How to get data from Microsoft Graph \u2013 SPFx
"},{"location":"spfx/graph/#spfx-samples","title":"SPFx Samples","text":" - Building business applications to Microsoft Teams using Microsoft Graph and SPFx
- Get DriveItem by File Absolute Url
"},{"location":"spfx/graph/#microsoft-graph-toolkit-mgt","title":"Microsoft Graph Toolkit (MGT)","text":" - microsoft-graph-toolkit
- Microsoft Graph Toolkit Playground
- A Lap Around Microsoft Graph Toolkit
- Microsoft Graph Toolkit
- Exploring The Microsoft Graph Toolkit
- Exploring Microsoft Graph Toolkit Lap as non Developer
- Exploring Microsoft Graph Toolkit Lap as a non-developer \u2014 Part 2
- Exploring Microsoft Graph Toolkit Lap as a non-developer -Part 3
- Exploring Microsoft Graph Toolkit as a non-Developer \u2014 Part 4
- Bulding a Moderator App
- A Lap around Microsoft Graph Toolkit Day 13 \u2013 Using Microsoft Graph Toolkit with React
"},{"location":"spfx/graph/#mgt-samples","title":"MGT Samples","text":" - How to start a new SPFx web part project with Microsoft Graph Toolkit and React
- msgraphtoolkitsamples
- SPFx - ms-graph-toolkit-agenda-panel
- SPFx - Exploring Microsoft Graph Toolkit
- SPFx-MSGraph using the Toolkit
"},{"location":"spfx/graph/#files-handling","title":"Files Handling","text":" - Accessing Files with Microsoft Graph
"},{"location":"spfx/graph/#granular-permission","title":"Granular Permission","text":" - SharePoint Site Collection Level Permissions
- Use Microsoft Graph to Set Granular Permissions to SharePoint Online Sites for Azure AD Application
"},{"location":"spfx/graph/#graph-developer-proxy","title":"Graph Developer Proxy","text":" - Microsoft Graph Developer Proxy
- Improving your Microsoft Graph PowerShell Scripts with the Graph Developer Proxy
- Mocking API Responses Made Easy with Graph Developer Proxy
"},{"location":"spfx/groups/","title":"Groups","text":""},{"location":"spfx/groups/#must-read","title":"Must read","text":" - An overview of different types of security groups in SharePoint and Office 365
"},{"location":"spfx/groups/#overview","title":"Overview","text":" - Infographic - An everyday guide to Office 365 Groups
- http://www.techmikael.com/2017/03/enable-usage-policy-for-office-365.html
- http://www.techmikael.com/2017/03/controlling-groups-creation-in-tenant.html
- http://www.techmikael.com/2017/05/three-reasons-why-you-should-take.html
- https://www.sharepointeurope.com/defining-good-governance-office-365-groups/
- http://icansharepoint.com/everyday-guide-office-365-groups/
- https://en.share-gate.com/blog/office-365-groups-explained
- https://www.avepoint.com/blog/technical-blog/office-365-groups-vs-teams/
- http://sympmarc.com/2017/04/09/dear-microsoft-in-office-365-groups-are-groups-are-groups-unless-they-arent/
- http://blog.fpweb.net/get-excited-about-office-365-groups-then-relax/#.WOvyNdLyjZs
- https://techcommunity.microsoft.com/t5/Microsoft-Teams/Office-365-Groups-vs-Microsoft-Teams-blog-post/m-p/60743#M3798
- http://blog.ioz.ch/productivity-news-beyond-groups-ein-einblick-und-ausblick/
- https://channel9.msdn.com/Events/Ignite/Australia-2017/PROD225
- https://channel9.msdn.com/Events/Ignite/Australia-2017/PROD222
- https://vigneshsharepointthoughts.com/2018/03/30/office-365-groups-what-you-need-to-know
"},{"location":"spfx/groups/#provisioning","title":"Provisioning","text":"https://github.com/SharePoint/PnP-PowerShell/tree/master/Samples/Provisioning.SelfHostedWithAzureWebJob/Engine
"},{"location":"spfx/groups/#permissions","title":"Permissions","text":" - Copying Office 365 Group Permissions with PowerShell
"},{"location":"spfx/groups/#tipps","title":"Tipps","text":" - Generic URLs for all Office 365 Group connected workloads
# SiteCollection URL <site>\n<site>/_layouts/15/groupstatus.aspx?Target=PLANNER\n\n# XML Provisioning Engine - SiteCollection Token {site}\n{site}/_layouts/15/groupstatus.aspx?Target=PLANNER\n
"},{"location":"spfx/groups/#powershell","title":"Powershell","text":" - https://github.com/mikemcleanlive/Ignite-2018-BRK3098-Demo-Scripts
- https://vigneshsharepointthoughts.com/2018/05/16/useful-powershell-cmdlets-to-administer-office-365-groups/
- https://www.sharepointeurope.com/useful-powershell-cmdlets-administer-office-365-groups
To get the list of all the Office 365 groups in descending order:
Get-UnifiedGroup | Select Id, DisplayName, ManagedBy, Alias, AccessType, WhenCreated, @{Expression={([array](Get-UnifiedGroupLinks -Identity $_.Id -LinkType Members)).Count }; Label=\u2019Members\u2019} | Sort-Object whencreated | Format-Table displayname, alias, managedby, Members, accesstype, whencreated\n
To get the list of all private Office 365 groups in your tenant:
Get-UnifiedGroup | Where-Object {$_.AccessType -eq \u2018Private\u2019} | Sort-Object whencreated | Format-Table displayname, alias, managedby, accesstype, whencreated\n
To get list of deleted Office 365 groups in descending order:
Get-AzureADMSDeletedGroup | Sort-Object DeletedDateTime -Descending | Format-Table Id, DisplayName, Description, Visibility, DeletedDateTime\n
How to resolve the error The alias is being used by another group in your organization
Get-AzureADMSDeletedGroup -All:$true | Remove-AzureADMSDeletedDirectoryObject\n
To get the list of orphaned Office 365 groups in your tenant:
$Groups = Get-UnifiedGroup | Where-Object {([array](Get-UnifiedGroupLinks -Identity $_.Id -LinkType Owners)).Count -eq 0} `\n\n| Select Id, DisplayName, ManagedBy, WhenCreated\n\nForEach ($G in $Groups) {\n\nWrite-Host \u201cWarning! The following group has no owner:\u201d $G.DisplayName\n\n}\n
To determine where a group was provisioned (Planner, Yammer, Teams etc.)
Get-UnifiedGroup |Where-Object {$_.ProvisioningOption -eq \u2018YammerProvisioning\u2019} |select DisplayName,Alias,ProvisioningOption,GroupSKU,SharePointSiteUrl,SharePointDocumentsUrl,AccessType\n
To get the list of Teams integrated Office 365 group list:
Get-UnifiedGroup |Where-Object {$_.ProvisioningOption -eq \u2018ExchangeProvisioningFlags:481\u2019}|select DisplayName,Alias,ProvisioningOption,GroupSKU,SharePointSiteUrl,SharePointDocumentsUrl,AccessType\n
"},{"location":"spfx/hubsite/","title":"HubSite","text":" - What is a SharePoint hub site
- Video - SharePoint hub sites \u2014 What intranet managers need to know
- spsnyc-how-hub-sites-raise-sharepoints-intranet-potential
- the-intranet-managers-guide-to-office-365-sharepoint-hub-sites
- common-use-cases-for-office-365-sharepoint-hub-sites
- architecture-considerations-and-quick-reference-tips-for-office-365s-sharepoint-hub-sites
- How to Create Hub Sites in SharePoint Online
"},{"location":"spfx/hubsite/#planning","title":"Planning","text":" - Planning your SharePoint hub sites
- Tips for getting started with SharePoint hubs
"},{"location":"spfx/hubsite/#integration","title":"Integration","text":" - sharepoint-hub-sites-make-their-debut
- Organize-your-intranet-with-SharePoint-hub-sites
- Planning your SharePoint hub sites
"},{"location":"spfx/hubsite/#navigation","title":"Navigation","text":" - Security Trimmed Hub Site Navigation Updates!
- security-trimmed-hub-navigation
- manage-sharepoint-communication-sites-megamenu-with-csom-and-powershell
- 6 tips to get mega value from the new megamenu navigation for SharePoint
"},{"location":"spfx/hubsite/#tips","title":"Tips","text":"-Introducing the idea of Archive Hub Sites - How to get the hubId in SharePoint Framework - Fix broken Hub Sites in SharePoint Online
cls\n\n$tenantAdmin = \"https://contoso-admin.sharepoint.com\"\n$hubSite = \"https://contoso.sharepoint.com/sites/hub\"\n$extensionGUID = \"6da1a9e8-471d-4f39-80e6-a7ded02e8881\"\n$extensionName = \"Extension Name\"\n$extensionTitle = \"Extension Title\"\n\ntry\n{\nConnect-PnPOnline -Url $tenantAdmin -UseWebLogin\n} catch {\nWrite-Host \"Unable to connect.\"\nexit\n}\n\n$HubSite = Get-PnPHubSite $hubSite\n$HubSiteId = $HubSite.SiteId\n$ModernSites = (Get-PnPTenantSite -Template 'GROUP#0') + (Get-PnPTenantSite -Template 'SITEPAGEPUBLISHING#0')\n$SitesFromHub = New-Object System.Collections.ArrayList\n\nWrite-Host (\"Searching {0} sites:\" -f $HubSite.Title) -BackgroundColor Gray\nforeach ($ModernSite in $ModernSites){\n $site = Get-PnPHubSite $ModernSite.Url\n if($site.SiteUrl){\n if($site.SiteId -eq $HubSiteId){\n Write-Host (\"* {0} - {1}\" -f $ModernSite.Title, $ModernSite.Url)\n $SitesFromHub.Add($ModernSite) | Out-Null\n }\n }\n}\n\nWrite-Host \"\"\nWrite-Host \"Installing at:\" -BackgroundColor Gray\nforeach ($SiteHub in $SitesFromHub){\n Write-Host (\"* {0} - {1} ... \" -f $SiteHub.Title, $SiteHub.Url) -NoNewline\n Connect-PnPOnline -Url $SiteHub.Url -UseWebLogin\n Add-PnPCustomAction -ClientSideComponentId $extensionGUID -Name $extensionName -Title $extensionTitle -Location ClientSideExtension.ApplicationCustomizer -Scope site\n Write-Host \"Done\" -BackgroundColor Green\n Disconnect-PnPOnline\n}\n\nWrite-Host \"All Done\"\n
"},{"location":"spfx/hubsite/#csom","title":"CSOM","text":" - working-with-sharepoint-online-hub
"},{"location":"spfx/hubsite/#search-api","title":"Search API","text":" - working-with-hub-sites-and-search-api
- How to get all sites
# List all sites being a hub site or associate to a hub site\n$results = Submit-PnPSearchQuery -Query 'contentclass=sts_site' -RefinementFilters 'departmentid:string(\"{*\",linguistics=off)' -TrimDuplicates $false -SelectProperties @(\"Title\",\"Path\",\"DepartmentId\",\"SiteId\") -All -RelevantResults\n\n# Filter out the hub sites\n$hubSites = $results |? { $_.DepartmentId.Trim('{','}') -eq $_.SiteId }\n\n# Loop over the hub sites\nforeach( $hub in $hubSites ) {\n Write-Host $hub.Title - $hub.Path -ForegroundColor Green\n # Filter out sites associated to the current hub\n $associatedSites = ($results |? { $_.DepartmentId -eq $hub.DepartmentId -and $_.SiteId -ne $hub.SiteId })\n foreach($site in $associatedSites) {\n Write-Host \"`t\"$site.Title - $site.Path -ForegroundColor Yellow\n }\n}\n
"},{"location":"spfx/intranet/","title":"Intranet","text":""},{"location":"spfx/intranet/#homepage","title":"Homepage","text":" - https://sympmarc.com/2018/07/23/whither-a-new-intranet-on-modern-office-365
"},{"location":"spfx/js/","title":"JS","text":""},{"location":"spfx/js/#frameworks","title":"Frameworks","text":" - State of JS-Frameworks
- JavaScript library that creates PowerPoint presentations
"},{"location":"spfx/js/#common-cheatsheets","title":"Common Cheatsheets","text":" - modern-frontend-hacking-cheatsheets
- https://devhints.io/moment
"},{"location":"spfx/js/#es6","title":"ES6","text":""},{"location":"spfx/js/#interview-questions","title":"Interview Questions","text":" - yangshun - tech-interview-handbook
- https://github.com/ganqqwerty/123-Essential-JavaScript-Interview-Questions
- https://github.com/Pau1fitz/react-interview
- https://www.edureka.co/blog/interview-questions/react-interview-questions/
"},{"location":"spfx/js/#helper","title":"Helper","text":""},{"location":"spfx/js/#local-storage","title":"Local Storage","text":""},{"location":"spfx/libraries/","title":"Libraries Components","text":""},{"location":"spfx/libraries/#intro","title":"Intro","text":" - SharePoint Library Components \u2013 Introduction
- Community Call Demo - Introduction on using the library component in SharePoint Framework solutions
"},{"location":"spfx/libraries/#service-locator-pattern","title":"Service Locator pattern","text":" - Service Locator pattern in SPFx: Using Service Scopes
"},{"location":"spfx/libraries/#tips","title":"Tips","text":" - Step by Step: Create SPFx library component
- concept of a library component and start developing
- A new beast in SharePoint Framework development: library component
- SharePoint Library Components \u2013 Simultaneous Parallel Development
- Tips and Tricks working with SPFx library components
"},{"location":"spfx/libraries/#samples","title":"Samples","text":" - React Templates using SPFx Library Component
- SVG Library Helper
"},{"location":"spfx/listitem/","title":"Listitem","text":""},{"location":"spfx/listitem/#system-upddate","title":"System Upddate","text":" - http://blog.arvosys.com/2018/07/06/list-items-system-update-options-in-sharepoint-online/
- https://www.linkedin.com/pulse/list-items-system-update-options-sharepoint-online-andrew-koltyakov/
- https://github.com/koltyakov/sp-sig-20180705-demo/blob/master/src/02-clientSvc/helper.ts
"},{"location":"spfx/listitem/#managing-lists","title":"Managing Lists","text":" - Managing Lists with SharePoint PnP JS in SPFx
"},{"location":"spfx/listitem/#audience-targeting","title":"Audience Targeting","text":" - Target Content on Modern SharePoint
- SharePoint Audience Targeting - How to (german version)
"},{"location":"spfx/logging/","title":"Logging","text":""},{"location":"spfx/logging/#logging-with-sp-core-library","title":"Logging with sp-core-library","text":" - Working with the Logging API
Reference the Log class
import { Log } from \"@microsoft/sp-core-library\";\n
Log your message from your WebPart
Log.verbose(\"HelloWorld\", \"Here is a verbose log\", this.context.serviceScope);\nLog.info(\"HelloWorld\", \"Here is an informational message.\", this.context.serviceScope);\nLog.warn(\"HelloWorld\", \"Oh Oh, this might be bad\", this.context.serviceScope);\nLog.error(\"HelloWorld\", new Error(\"Oh No! Error! Ahhhhhh!!!!\"), this.context.serviceScope);\n
"},{"location":"spfx/logging/#logging-with-pnp-logging","title":"Logging with pnp-logging","text":" - Resolve to Log-PnPLogger
- Resolve to Log
- Working With: Logging
- Integrate Logging
- Flexible and powerful logging using PnP Logging in SPFx
"},{"location":"spfx/logging/#logging-with-appinsights","title":"Logging with AppInsights","text":" - Add Azure App Insights or Google Analytics to your SharePoint pages with an SPFx Application Customizer
- Use Azure App Insights to track events in your app/web part/provisioning code
- Deploy Application Insights globally on modern SharePoint
"},{"location":"spfx/loop/","title":"Loop","text":""},{"location":"spfx/loop/#loop-components","title":"Loop Components","text":" - Learn - Overview of Loop components in the Microsoft 365 ecosystem
"},{"location":"spfx/metadata/","title":"Metadata","text":""},{"location":"spfx/metadata/#colums","title":"Colums","text":" - How to Work with Managed Metadata Columns by Using the SharePoint Client Object Model
- Configuring SharePoint Online managed metadata defaults for folders
- Configuring metadata defaults with CSOM
- How to sync taxonomy hidden list using PowerShell
"},{"location":"spfx/metadata/#design","title":"Design","text":" - How to come up with metadata?
- Struggling with Metadata? Use SharePoint Enterprise Keywords!
- METADATA PROS AND CONS IN MODERN SHAREPOINT
"},{"location":"spfx/metadata/#journal","title":"Journal","text":""},{"location":"spfx/migration/","title":"Migration","text":""},{"location":"spfx/migration/#overview","title":"Overview","text":" - Best practices for migrating to SharePoint and OneDrive
- All the ways to migrate the files to SharePoint Online
"},{"location":"spfx/migration/#good-to-know","title":"Good to know","text":" - Surefire ways to fail a SharePoint migration to Office 365
- Compilation of SharePoint to Office 365 Migration Best Practices
- 33 things that can cause a hassle when migrating to SharePoint Online
- SharePoint Migration Infographic
- Cloud Migration
"},{"location":"spfx/migration/#sharegate","title":"ShareGate","text":" - ShareGate Limits
- File share to SharePoint migration diagram
- SharePoint to SharePoint migration diagram
- Tales of a Microsoft 365 migration \u2013 file shares
"},{"location":"spfx/migration/#sharepoint-migration-tool-spmt","title":"SharePoint Migration Tool (SPMT)","text":" - Overview of the SharePoint Migration Tool
- Download and install the SharePoint Migration Tool (SPMT)
- Migrating to Microsoft Teams using the SharePoint Migration Tool
"},{"location":"spfx/migration/#mover","title":"Mover","text":" - How to migrate files from cloud storage to SharePoint using the Mover Migration Tool
"},{"location":"spfx/migration/#sharepoint-manager","title":"SharePoint Manager","text":" - Walkthrough: Migration Manager
"},{"location":"spfx/migration/#documentid","title":"DocumentID","text":" - SHAREPOINT ONLINE AND DOCUMENT ID. THE GOODS
"},{"location":"spfx/migration/#permission","title":"Permission","text":" - Leave Those SharePoint Permissions for Office 365 Groups Alone
"},{"location":"spfx/migration/#wsp-repackage","title":"WSP Repackage","text":""},{"location":"spfx/migration/#tipps","title":"Tipps","text":" - SharePoint Migration: Mind the URL Length
- Migrating to Office 365 Checklist
- Restrictions and limitations in OneDrive and SharePoint
"},{"location":"spfx/migration/#showcase","title":"Showcase","text":" - Learn how Microsoft ran its own migration
"},{"location":"spfx/migration/#google-drive","title":"Google Drive","text":" - Data Clean-up Activities to Consider Before Google Drive Migration
"},{"location":"spfx/migration/#tenant-to-teanant","title":"Tenant to Teanant","text":" - How to merge Office 365 tenants \u2013 migrate to another Microsoft 365 organization
"},{"location":"spfx/migration/#migration-streams-classic","title":"Migration Streams (Classic)","text":" - Migration Overview - Stream (Classic) to Stream (on SharePoint)
"},{"location":"spfx/modernpage/","title":"Modern page","text":""},{"location":"spfx/modernpage/#news-pages","title":"News pages","text":" - What makes a page to be a news page on SharePoint Online
- How to read the SharePoint news using Rest API in SPFx
- Keep your team in the loop with modern SharePoint news
/_api/search/query?querytext='IsDocument:True AND FileExtension:aspx AND PromotedState:2'\n
"},{"location":"spfx/modernpage/#news-digest","title":"News digest","text":" - SharePoint News Digest Features and Limitations
- How to create and promote Newsletters in SharePoint & Office 365
- How to enable/disable the automatic SharePoint news digest
- How to create an internal newsletter
- 10 things to know about the SharePoint News digest
"},{"location":"spfx/mui/","title":"MUI","text":""},{"location":"spfx/mui/#testing-language","title":"Testing Language","text":" - Testing user preferred language of SharePoint site
"},{"location":"spfx/mui/#multilingual-pages","title":"Multilingual Pages","text":" - Multilingual publishing for pages and news posts
"},{"location":"spfx/mui/#localisation-of-the-user-interface","title":"Localisation of the user interface","text":" - SPFx & react-localization, an easy alternative?
- Understanding the Multilingual User Interface (MUI)
- Demystifying the mystery behind the UI language in SharePoint
"},{"location":"spfx/mui/#definition-multilingual-intranet","title":"Definition Multilingual Intranet","text":" - MULTILINGUAL AND MODERN SHAREPOINT
- Building Multilingual SharePoint views using SPFx Field Customizers
- SharePoint Online Multi-language Modern Sites \u2013 real case, pros and cons
- SharePoint Localization \u2013 a (somewhat) comprehensive how-to!
- Creating a Multi-lingual Intranet using Communication Sites
- CUSTOMIZE SHAREPOINT MODERN PAGES USING MICROSOFT FLOW
- Using the SFPx library component for simplifying the localization experience
- Webinar Recording: Deep Dive into SharePoint Multilingual with Divyachapan (DC) Padur
- Using the new multilingual APIs in Modern SharePoint
- Working with SharePoint Online modern multilingual with the search Keyword Query Language, Query variables and the modern search webpart
- 7 tips to help create and manage multilingual SharePoint communication sites
Search Query for multilingual news
PromotedState:2 AND (SPTranslationLanguage:{CurrentDisplayLanguage} OR (NOT SPTranslatedLanguages:{CurrentDisplayLanguage} AND NOT SPIsTranslation:true))\n
"},{"location":"spfx/mui/#samples","title":"Samples","text":""},{"location":"spfx/network/","title":"Network","text":" - URLs-und-IP-Adressbereiche-von-Office-365
- Office365NetworkTools
- How to quickly optimize Office 365 traffic for remote staff & reduce the load on your infrastructure
"},{"location":"spfx/network/#dns-basics","title":"DNS-Basics","text":" - Clientkonnektivit\u00e4t
- Office 365 Connectivity Guidance
- office-365-connectivity-guidance-part-2
- office-365-connectivity-guidance-part-3
- office-365-connectivity-guidance-part-4
"},{"location":"spfx/network/#tools","title":"Tools","text":""},{"location":"spfx/network/#it-pro","title":"IT Pro","text":" - provisioning-office-365-services
"},{"location":"spfx/network/#ssl","title":"SSL","text":" - generating-wildcard-ssl-certs-for-development
"},{"location":"spfx/onedrive/","title":"OneDrive","text":""},{"location":"spfx/onedrive/#pre-provision","title":"Pre Provision","text":" - How to provision OneDrive for Microsoft 365 users
"},{"location":"spfx/onedrive/#sync","title":"Sync","text":" - How sync works
- How to disable sync in SharePoint and OneDrive
- Only sync what you need
- Check you're not syncing too many files
- Use PowerShell to get your OneDrive Sync status
- OneDrive sync error \u201cSorry, OneDrive can\u2019t add your folder right now\u201d
"},{"location":"spfx/onedrive/#support","title":"Support","text":" - OneDrive for Business troubleshooting
"},{"location":"spfx/patterns/","title":"Patterns","text":""},{"location":"spfx/patterns/#dependency-injection","title":"Dependency Injection","text":" - https://ypcode.wordpress.com/2018/07/30/elegant-di-in-spfx/
- https://github.com/ypcode/spfx-lab
"},{"location":"spfx/patterns/#slides","title":"Slides","text":" - https://www.slideshare.net/sharepointpnp
"},{"location":"spfx/planner/","title":"Planner","text":""},{"location":"spfx/planner/#planer-api","title":"Planer API","text":" - Create plans, buckets, and tasks in Planner
- Use the Planner REST API
"},{"location":"spfx/planner/#support","title":"Support","text":" - Microsoft Planner for admins
"},{"location":"spfx/planner/#creating-planner","title":"Creating Planner","text":" - Creating a Planner with Flow
- A Change Management Solution for Office 365 -Office 365 Message Center to Planner
- Github - O365 Message Center to Planner integration
- Duplicate Microsoft Planner Plans
"},{"location":"spfx/planner/#powershell-module","title":"Powershell Module","text":" - Getting started with Microsoft Graph and PowerShell
- PowerShell and the Microsoft Graph API : Part 1, signing in
- PowerShell and the Microsoft Graph API : Part 2 \u2013 Starting to explore
- PowerShell formatting [not just] Part 3 of the Graph API series
- MsftGraph
- Unified PowerShell experience for Microsoft Graph
"},{"location":"spfx/planner/#reports","title":"Reports","text":" - Reporting Plans in a Microsoft 365 Tenant with the Planner Graph API
"},{"location":"spfx/planner/#blogs","title":"Blogs","text":" - MS Planner Blog
- HOW TO SORT PLANNER TASKS USING ORDER HINT AND MICROSOFT GRAPH
"},{"location":"spfx/planner/#video","title":"Video","text":" - Planner APIs in Microsoft Graph
"},{"location":"spfx/planner/#planner-architecture","title":"Planner Architecture","text":""},{"location":"spfx/planner/#tips","title":"Tips","text":" - Make Sure to Add Owners as Members When Creating New Teams
- Planner Does Multiplan
- Planner Supports Export to Excel
"},{"location":"spfx/planner/#tools-frameworks","title":"Tools / Frameworks","text":" - Apps4.Pro Planner Manager
- DHTMLX
- react-jsgantt
"},{"location":"spfx/provisioning/","title":"Provisioning","text":""},{"location":"spfx/provisioning/#reference","title":"Reference","text":" - Remote Provisioning Schema
- PnP Core Component Provisioning Engine Tokens
- Template Provisioning - Handlers
"},{"location":"spfx/provisioning/#pnp-provisining-template","title":"PnP-Provisining Template","text":" - Walkthrough of Site Provisioning process using PnP PowerShell
"},{"location":"spfx/provisioning/#custom-list-template","title":"Custom List Template","text":" - SharePoint Custom List Templates
- PnP PowerShell to manage list designs and create lists/libraries using list designs
"},{"location":"spfx/provisioning/#site-templateid","title":"Site TemplateId","text":" - SharePoint Online Site Template ID list for PowerShell
"},{"location":"spfx/provisioning/#fields","title":"Fields","text":" - How to: Provision Lookup Columns and Projected Fields using PnP PowerShell
- How to do column validation in SharePoint
- SharePoint Column Validation Examples
- Setting a SharePoint Image Column Value with PnP PowerShell
"},{"location":"spfx/provisioning/#app-bar","title":"App Bar","text":" - Introduction to the SharePoint app bar
- Best practices for using global navigation in the SharePoint app bar
"},{"location":"spfx/provisioning/#links","title":"Links","text":" - https://www.techmikael.com/2017/04/sharepoint-pnp-webcast-provisioning.html
- https://github.com/SharePoint/PnP-PowerShell/tree/master/Samples/Provisioning.SelfHostedWithAzureWebJob
- https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/convert-pnpfoldertoprovisioningtemplate?view=sharepoint-ps
- https://www.techmikael.com/2017/04/creating-pnp-provisioning-file.html
- https://de.slideshare.net/sharePTkarm/how-to-automate-the-sharepoint-provisioning
- https://de.slideshare.net/DIWUG/spsnl17-be-more-effective-with-the-pnp-provisioning-engine-erwin-van-hunen
- Categories, organize and layout your Office 365 intranet with PnP Templates
"},{"location":"spfx/provisioning/#export-multiple-pages","title":"Export multiple pages","text":" - Create a modern SharePoint site template with multiple pages using PnP provisioning engine
- Exporting PnP Site Templates Including Modern Pages
"},{"location":"spfx/provisioning/#convert-pnp-files","title":"Convert PnP Files","text":" - https://github.com/Puzzlepart/prosjektportalen-program/tree/dev/.scripts
- https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/convert-pnpfoldertoprovisioningtemplate?view=sharepoint-ps
"},{"location":"spfx/provisioning/#create-page-templates","title":"Create Page-Templates","text":" - Creating modern page templates
- Hide the template gallery from newly created sites in SharePoint
"},{"location":"spfx/provisioning/#flow-azure-function","title":"Flow / Azure Function","text":" - O365ModernProvisioning
- Provisioning an Office 365 group with an approval flow and Azure functions-part 1
- Provisioning an Office 365 group with an approval flow and Azure functions-part 2
- Provisioning an Office 365 group with an approval flow and Azure functions-part 3
- https://thomasdaly.net/2021/04/09/pnp-powershell-v4-provisioning-with-azure-functions-v3-and-power-automate/
"},{"location":"spfx/provisioning/#onedrive-for-business","title":"OneDrive for Business","text":" - How to provision OneDrive for Microsoft 365 users
- Create OneDrive for Business Site Collections using PowerShell
"},{"location":"spfx/provisioning/#tools","title":"Tools","text":""},{"location":"spfx/provisioning/#logic-app-azure-queue","title":"Logic App & Azure Queue","text":" - SharePoint event receiver to Azure storage queue
"},{"location":"spfx/provisioning/#find-empty-general-folder","title":"Find Empty General Folder","text":" - Error on first navigation to the files tab
"},{"location":"spfx/recipes/","title":"Recipes","text":""},{"location":"spfx/recipes/#timezones","title":"Timezones","text":" - MS Graph, Events, and Time Zones in SPFx
- Change the time zone of existing SharePoint site,
"},{"location":"spfx/rest/","title":"REST","text":""},{"location":"spfx/rest/#reference","title":"Reference","text":" - How the SharePoint REST service works
- Determine SharePoint REST service endpoint URIs
- Use OData query operations in SharePoint REST requests
- SharePoint & Office 365 REST API Resources
- Using REST API For Selecting, Filtering, Sorting And Pagination in SharePoint List
"},{"location":"spfx/rest/#api-guidlines","title":"API Guidlines","text":" - Microsoft REST API Guidelines
"},{"location":"spfx/rest/#tools","title":"Tools","text":" - SharePoint REST API Metadata Explorer
- Powerful HTTP and GraphQL tool belt
- Explore SharePoint REST API with Chrome F12 cURL (bash) to Postman
- SharePoint Framework - Rest API Tester
"},{"location":"spfx/rest/#postman","title":"Postman","text":" - postman-and-office-365
- Using Postman with the Microsoft Graph
- Configure Postman to be easily used with any Azure AD protected API (SharePoint, Graph, custom etc.)
- Announcing Microsoft Graph Postman Collections
- Microsoft Graph Mailbag \u2013 Explore Microsoft Graph with Postman
- Advanced Testing with Postman - Bearer Token Authentication via scripting
"},{"location":"spfx/rest/#testing","title":"Testing","text":"Testing in chrome console
fetch(`/sites/gridworks/_api/web/lists/getbytitle('SiteRequestsQueue')/items?$select=Id,Title,gwRequestSiteAlias&$orderby=Id desc`, {\nheaders: {\nAccept: 'application/json;odata=verbose;'\n}\n}).then(res => res.json().then(json => {\njson.d.results.forEach(item => {\nconsole.log(`item: ${item.Title}`);\n});\n}));\n
"},{"location":"spfx/search/","title":"Search","text":" - Overview of Microsoft Search
- Manage the search schema in SharePoint
- Sharepoint search Queries explained - Basics
"},{"location":"spfx/search/#tools","title":"Tools","text":" - MS Search Layout Designer
"},{"location":"spfx/search/#custom-search-result-page","title":"Custom Search Result Page","text":" - Create a custom search results page in SharePoint Online
"},{"location":"spfx/search/#pnp-modern-search","title":"PnP Modern Search","text":" - PnP Modern Search solution
- PnP Webcast - SharePoint Framework Modern Search Web Part
- How to Implement SharePoint Modern Search Refiners
- GalacticSummit Agnes Molnar - No Code Search Applications in SharePoint Online
- How to set up your first PnP Search Page
- PnP Modern Search Filters web part
- Using the PnP Modern Search Web Parts
- How to customize the handlebars template in PnP modern search web part?
- Image Search with PnP Modern Search v4
- How to connect two search results Web Parts together
- Using the PnP Modern Search Web Parts
- Customizing the PnP people search handlebar template in SharePoint online
"},{"location":"spfx/search/#microsoft-search","title":"Microsoft Search","text":" - Microsoft Search
- MICROSOFT SEARCH BOOKMARKS
"},{"location":"spfx/search/#search-tips","title":"Search Tips","text":" - what makes sharepoint column searchable
- How to improve your SharePoint search results
- How to search in SharePoint
- How to use Boolean Operators in SharePoint Search
- 4 Levels of Search in SharePoint Online
- 7 ways to search for content in SharePoint and Office 365
- SharePoint Knowledge Base: Search
"},{"location":"spfx/search/#managed-properties","title":"Managed Properties","text":" - Display Search Results in SharePoint Online
- Crawled Properties Not Created From Site Columns in Modern Team Sites
- Mapping or clearing crawled property
- SearchConfiguration
- How to create a Managed Property in SharePoint Online
- Hide content from delve but not from search
- Manage the search schema in SharePoint
- Managed Properties characteristics explained: Searchable vs. Queryable vs. Retrievable vs. Refinable
"},{"location":"spfx/search/#keyword-query-language-kql-syntax-reference","title":"Keyword Query Language (KQL) syntax reference","text":" - Keyword Query Language (KQL) syntax reference
- Keyword queries and search conditions for Content Search
- Customizing ranking models to improve relevance in SharePoint
- Create a Simple SharePoint 2013 Employee Directory on Office365
- Keyword Query Language (KQL) syntax reference
"},{"location":"spfx/search/#crawl-logs","title":"Crawl Logs","text":" - http://blogs.catapultsystems.com/eskaggs/archive/2015/05/20/microsoft-guidance-on-search-crawls-in-sharepoint-online/
- https://blogs.technet.microsoft.com/o365totd/2015/10/30/viewing-crawl-logs-in-sharepoint-online-office-365/
"},{"location":"spfx/search/#reindex","title":"Reindex","text":" - Scripts to trigger re-indexing of user profiles and content in SharePoint Online
- How to Trigger Full Reindex using PowerShell
"},{"location":"spfx/search/#content-source","title":"Content Source","text":""},{"location":"spfx/search/#onenote","title":"OneNote","text":" - https://blog.ioz.ch/onenote-notizbuecher-ueber-search-anzeigen/
- http://www.techmikael.com/2015/07/how-to-do-light-weight-search-center_21.html
- http://www.techmikael.com/2017/01/clarification-on-automatic-managed.html
"},{"location":"spfx/search/#documentid","title":"DocumentID","text":" - http://www.nubo.eu/en/blog/2017/02/Improve-Search-Experience-Documents-With-DocumentId/
"},{"location":"spfx/search/#ranking","title":"Ranking","text":" - https://github.com/wobba/SearchConfiguration
- https://msdn.microsoft.com/en-us/library/office/dn169052.aspx
- https://msdn.microsoft.com/library/dn169052.aspx
- http://mosshowto.blogspot.ch/2016/05/sharepoint2013-improve-search-relevance.html
- https://blog.mastykarz.nl/understanding-item-ranking-sharepoint-2013-search/
"},{"location":"spfx/search/#fileshare","title":"FileShare","text":" - https://social.technet.microsoft.com/wiki/contents/articles/2209.sharepoint-201020132016-best-practices-for-indexing-file-share-content.aspx
- https://blogs.msdn.microsoft.com/nicolasu/2013/07/24/sp2013-how-to-better-balance-your-distributed-file-system-dfs-crawl
- https://redmondmag.com/articles/2014/10/07/search-content-source-in-sharepoint.aspx
- https://technet.microsoft.com/en-us/library/dn535606.aspx#BKMK_UseContentSources
- http://www.bigdata-unleashed.com/20131205/crawling-von-fileshares-sharepoint-2013
- https://www.experts-exchange.com/questions/28918628/Unable-to-do-full-crawl-on-file-share-for-Sharepoint-2013-Content-Source.html
- http://kx.cloudingenium.com/microsoft/servers/sharepoint/sharepoint-2013/how-to-give-sharepoint-2013-crawler-sufficient-rightspermissions-to-crawl-file-shares
- https://social.technet.microsoft.com/Forums/office/en-US/a1eb205d-128a-46ff-967d-355dc13411d2/crawling-file-server-sharepoint-2013?forum=sharepointadmin
- https://social.technet.microsoft.com/Forums/sharepoint/en-US/942979d0-358a-4aac-9953-b2192decdfa4/creating-a-mapped-driveuser-folder-permission-problems?forum=winserverGP
- http://www.collabshow.com/2008/10/31/best-practices-for-enterprise-user-scalability-in-sharepoint
- https://profadmins.com/2014/04/07/sharepoint-doesnt-accept-the-universal-security-groups-for-granting-permissions
"},{"location":"spfx/search/#teamsites-groups","title":"Teamsites / Groups","text":" - Retrieving search results from private Groups in Office 365 via REST
"},{"location":"spfx/search/#search-hubsite","title":"Search HubSite","text":" - Search all Document under a hubsite
"},{"location":"spfx/search/#search-empty-terms-fields","title":"Search Empty Terms Fields","text":" - MONITORING FOR AN EMPTY MANAGED METADATA SHAREPOINT COLUMN
"},{"location":"spfx/search/#sharing-link","title":"Sharing Link","text":" # Managed Properties: SharedWithUsersOWSUSER, SharedWithDetails\n {SearchTerms} contentclass:STS_ListItem_DocumentLibrary IsContainer<>true SharedWithUsersOWSUSER=0\n
"},{"location":"spfx/search/#only-office-files","title":"Only Office Files","text":"{SearchTerms} ((FileExtension:mp4 OR FileExtension:doc OR FileExtension:docx OR FileExtension:xls OR FileExtension:xlsx OR FileExtension:ppt OR FileExtension:pptx OR FileExtension:pdf) AND (IsDocument:\"True\" OR contentclass:\"STS_ListItem\")) OR ContentType=\"Folder\"\n
"},{"location":"spfx/search/#search-query-filter","title":"Search Query Filter","text":" - query variable trick in ms search
- filter on managed properties in search
## News 2023
- Microsoft Search: Connecting You to Knowledge and Expertise
- How to configure Search Verticals on a SharePoint site
"},{"location":"spfx/search/#news-2021","title":"News 2021","text":" - We\u2019re making changes to search in SharePoint Online
"},{"location":"spfx/search/#news-2020","title":"News 2020","text":" - Make the most of Microsoft Search through Configuration and Administration
- What\u2019s new for Microsoft Search \u2013 Ignite 2020 Edition
- SharePoint Search REST API overview
- SharePoint Search REST API. GET and POST requests
"},{"location":"spfx/search/#search-all","title":"Search All","text":" - Tackling SharePoint's 5000 Item Limit with PowerShell and Search
"},{"location":"spfx/sitedesign/","title":"SiteDesign","text":""},{"location":"spfx/sitedesign/#best-practise","title":"Best practise","text":" - Best Practices on SharePoint Site Design
- SharePoint Modern Page Best Practices
- Site Designs for Good Information Architecture
- Site Design Deployment Made Easy
- How to create a Board of Directors Site in SharePoint Online
"},{"location":"spfx/sitedesign/#list-templates","title":"List templates","text":" - The broad world of templates when using Microsoft Lists
"},{"location":"spfx/sitedesign/#modern-site-provisioning","title":"Modern Site Provisioning","text":""},{"location":"spfx/sitedesign/#deploying","title":"Deploying","text":" - Deploying Application Customizers with a Site Design
"},{"location":"spfx/sitedesign/#flow-rest","title":"Flow / REST","text":" - Invoking a Site Design Task using REST
- Invoking unlimited actions with Site Design Tasks and Microsoft Flow
- Create Site Script and Site Template Using Power Automate in SharePoint
- How to Apply Site template (Site Design) via Power Automate
- SharePoint PnP Provisioning with Azure Logic Apps and Azure Automation
- Modern SharePoint site creation with site designs and REST
"},{"location":"spfx/sitedesign/#reports","title":"Reports","text":"Success runs
Get-SPOSite -Limit All | ForEach-Object { \n $failedRuns = Get-SPOSiteDesignRun $_.Url | Get-SPOSiteDesignRunStatus | Where-Object {$_.OutcomeCode -ne \"Success\"};\n\n if($failedRuns) {\n Write-Output $_.Url\n $failedRuns\n }\n}\n
Failed runs
Get-SPOSite -Limit All | ForEach-Object { \n $failedRuns = Get-SPOSiteDesignRun $_.Url | Get-SPOSiteDesignRunStatus | Where-Object {$_.OutcomeCode -eq \"Faulure\"};\n\n if($failedRuns) {\n Write-Output $_.Url\n $failedRuns\n }\n}\n
"},{"location":"spfx/sitedesign/#tips","title":"Tips","text":"Know how many Site Designs and Site Scripts you have:
(Get-SPOSiteDesign | Measure).Count\n
(Get-SPOSiteScript | Measure).Count\n
Delete a Site Design or a Site Script based on its unique identifier:
Remove-SPOSiteDesign -Identity $siteDesignId\n
Remove-SPOSiteScript -Identity $siteScriptId\n\nDelete all Site Designs or Site Scripts at once:\n\n```Powershell\nGet-SPOSiteDesign | foreach { Remove-SPOSiteDesign -Identity $_.Id }\n
Get-SPOSiteScript | foreach { Remove-SPOSiteScript -Identity $_.Id }\n
"},{"location":"spfx/sitescripts/","title":"SiteScripts","text":" - SharePoint Site Scripts and Site Designs - April 2018 release
- THE ULTIMATE GUIDE TO SHAREPOINT SITE DESIGNS AND SITE SCRIPTS
- How To: Create Modern SharePoint site templates using Office 365 Site Designs
"},{"location":"spfx/sitescripts/#pnp-or-site-scripts","title":"PnP or site scripts","text":" - Using Site Designs or PnP templates for SharePoint site provisioning
"},{"location":"spfx/sitescripts/#reference","title":"Reference","text":" - Site design JSON schema
- Calling the PnP provisioning engine from a site script
"},{"location":"spfx/sitescripts/#tools","title":"Tools","text":" - Site Designs Studio 1.0
- Convert CAML List Schema to Site Scripts
- Sharepoint Site Designer
"},{"location":"spfx/sitescripts/#samples","title":"Samples","text":" - SharePoint Site Script samples
- Triggers Flow to run an Azure function containing PnP PowerShell
"},{"location":"spfx/sitescripts/#fields","title":"Fields","text":""},{"location":"spfx/snippets/","title":"Code Snippets","text":""},{"location":"spfx/snippets/#tips-and-tricks","title":"Tips and Tricks","text":" - How to get Tenant & User\u2019s AD ID
"},{"location":"spfx/snippets/#check-url","title":"Check URL","text":"Use Microsoft Graph to evaluate SharePoint Urls
"},{"location":"spfx/snippets/#querystring","title":"QueryString","text":" - How to get a querystring value
import { UrlQueryParameterCollection } from '@microsoft/sp-core-library';\n\nif (queryParameters.getValue('id')) {\nid = parseInt(queryParameters.getValue('id'));\n}\n
"},{"location":"spfx/snippets/#pnp-js-core","title":"PNP JS-Core","text":""},{"location":"spfx/snippets/#list-permission","title":"List Permission","text":"private _checkProductsPermissions(productsList){\nreturn pnp.sp.web.lists.getByTitle(productsList).getCurrentUserEffectivePermissions()\n.then(perms => {\nlet canEdit = pnp.sp.web.lists.getByTitle(productsList).hasPermissions(perms, PermissionKind.EditListItems);\nlet canView = pnp.sp.web.lists.getByTitle(productsList).hasPermissions(perms, PermissionKind.ViewListItems);\nif(canEdit){\nreturn 'Edit';\n} else if(canView){\nreturn 'View';\n} else {\nreturn 'None';\n}\n})\n.catch((err) => {\nconsole.log('error:', err);\nreturn 'None';\n});\n}\n
"},{"location":"spfx/snippets/#admin-user","title":"Admin User","text":"// Ensure a user on site collection\nsp.web.ensureUser('john.doe@contoso.onmicrosoft.com').then(console.log);\n\n// Get site collection admins\nsp.web.siteUsers.filter(`IsSiteAdmin eq true`)\n.get().then(console.log);\n\n// Remove a user from site collection admins\nsp.web.siteUsers.getByLoginName('i:0#.f|membership|john.doe@contoso.onmicrosoft.com')\n.update({ IsSiteAdmin: false }).then(console.log);\n\n// Add a user to site collection admins\nsp.web.siteUsers.getByLoginName('i:0#.f|membership|john.doe@contoso.onmicrosoft.com')\n.update({ IsSiteAdmin: true }).then(console.log);\n
"},{"location":"spfx/sp2016/","title":"SP2016","text":""},{"location":"spfx/sp2016/#lifecycle","title":"Lifecycle","text":""},{"location":"spfx/sp2016/#overview-facts","title":"Overview Facts","text":" - SharePoint-Framework (SPFx): Enterprise-Leitfaden
- \u00dcbersicht \u00fcber das SharePoint-Framework
- SharePoint Framework development with SharePoint 2016 Feature Pack 2
- All about SharePoint Framework For SharePoint Server 2016
- How to use SharePoint FrameWork for SharePoint 2016 on premise
- Yes, you can use Modern React on SharePoint 2016
"},{"location":"spfx/sp2016/#setup-development","title":"Setup Development","text":" - Set up your SharePoint Framework development environment
- Build your first SharePoint client-side web part (Hello World part 1)
- Connect your client-side web part to SharePoint (Hello World part 2)
- Deploy your client-side web part to a SharePoint page (Hello World part 3)
"},{"location":"spfx/sp2016/#developmentlocal-workbench","title":"Development(local workbench)","text":"gulp serve\n
https://localhost:4321/temp/workbench.html\n
"},{"location":"spfx/sp2016/#developmentonline-workbench","title":"Development(online workbench)","text":"gulp serve --nobrowser\n
/_layouts/15/workbench.aspx\n
"},{"location":"spfx/sp2016/#deployment","title":"Deployment","text":"gulp clean\n
gulp build --ship\n
gulp bundle --ship\n
gulp package-solution --ship\n
"},{"location":"spfx/sp2016/#troubleshooting","title":"Troubleshooting","text":" - SharePoint 2016, 2019 & SharePoint Online: Which Version of the SharePoint Framework Should You Install?
- SPFx Development for SharePoint Server 2016
- TSLint, VS Cod
- Struggling with using SPFx on SharePoint 2016? Let me help!
"},{"location":"spfx/sp2016/#check-package-version","title":"Check Package Version","text":"node \u2013v\nnpm \u2013v\nyo --generators\ngulp \u2013v\ntsc \u2013v\ntsd --version\n
"},{"location":"spfx/sp2016/#react","title":"React","text":" - sharepoint-application-pages-with-react-office-fabric-ui-interface
"},{"location":"spfx/sp2016/#ie-support","title":"IE Support","text":" - Polyfills
- Planning IE11 compatibility with SPFx components and PnPJS library
- Perform other types of HTTP requests with HttpClient and SPHttpClient in SPFx projects
"},{"location":"spfx/sp2019/","title":"SP2019","text":""},{"location":"spfx/sp2019/#setup-development","title":"Setup Development","text":" - Getting started with creating SharePoint Framework solutions for SharePoint 2019 YouTube video
- Community call where SharePoint 2019 developer platform is covered YouTube video
- Definitive guide for developers: SharePoint Framework for SharePoint Server SE
"},{"location":"spfx/sp2019/#new-features","title":"New Features","text":" - 15 facts about SharePoint 2019 (German)
- New and improved features in SharePoint Server 2019
- Differences between SharePoint Server 2016 and 2019
"},{"location":"spfx/sp2019/#installation","title":"Installation","text":" - SharePointDSC Starter Template for SharePoint 2019
"},{"location":"spfx/sp2019/#upgrade","title":"Upgrade","text":" - High level overview to upgrade from SharePoint 2013 to SharePoint Server 2019
"},{"location":"spfx/sp2019/#webparts","title":"WebParts","text":" - Modern SPFx WebParts Comparison in SPOnline vs SP2019
"},{"location":"spfx/sp2019/#hybrid","title":"Hybrid","text":" - SharePoint Server hybrid configuration roadmaps
"},{"location":"spfx/sp2019/#configure-cloud-hybrid-search","title":"Configure cloud hybrid search","text":" - Configure cloud hybrid search - roadmap
- Cloud hybrid search service (Cloud SSA) FAQ
"},{"location":"spfx/sp2019/#applauncher","title":"AppLauncher","text":" - SharePoint Hybrid App Launcher Explained
"},{"location":"spfx/sp2019/#not-so-good","title":"Not so good","text":" - The TypeScript for SPFX is so out of date.... ( 2.4 ) really MS
"},{"location":"spfx/sp2019/#wsa-customer-experience-improvement-program","title":"WSA - Customer Experience Improvement Program","text":" - Disabling requests to WsaUpload.ashx (Customer Experience Improvement Program)
"},{"location":"spfx/sp2019/#content-script-webpart-typescript","title":"Content Script WebPart (TypeScript)","text":" - Using TypeScript with SharePoint Content/Script editor web parts
"},{"location":"spfx/sp2019/#custom-action","title":"Custom Action","text":" - SharePoint Sticky Footer for classic experience
- SharePoint.UI.StickyFooter
"},{"location":"spfx/sp2019/#certificates","title":"Certificates","text":"-Renewing SharePoint Certificates on premise
"},{"location":"spfx/sp2019/#userprofile","title":"Userprofile","text":" - All about non-imported user profiles
- Check user profiles
"},{"location":"spfx/sp2019/#code-tips","title":"Code Tips","text":" - Build SharePoint Framework solutions for on-premises SharePoint with ANY version of React, TypeScript or Office UI Fabric React
"},{"location":"spfx/sp2019/#architecture-online-sql-onprem","title":"Architecture Online - SQL OnPrem","text":" - Connecting SharePoint Online to On-Premise Databases with SharePoint Framework (SPFx)
"},{"location":"spfx/spaces/","title":"Spaces","text":""},{"location":"spfx/spaces/#intro","title":"Intro","text":" - First look at SharePoint Spaces using 3D printer files
"},{"location":"spfx/spaces/#pnp-template","title":"PnP-Template","text":" - Create SharePoint Spaces templates using PnP PowerShell
"},{"location":"spfx/start/","title":"Dev Start","text":""},{"location":"spfx/start/#history-of-sharepoint","title":"History of SharePoint","text":" - The Service That SharePoint Built \u2013 a cumulative evolution story
"},{"location":"spfx/start/#development-starting","title":"Development starting","text":" - Set up your Office 365 tenant
- Set up your SharePoint Framework development environment
- SPFx developer guide \u2013 setup and solution structure overview
"},{"location":"spfx/starterkit/","title":"Starter Kid","text":""},{"location":"spfx/starterkit/#github","title":"GitHub","text":" - https://github.com/SharePoint/sp-starter-kit
"},{"location":"spfx/starterkit/#tipps","title":"Tipps","text":" - https://beaucameron.net/2018/05/22/pnp-sp-starter-kit-hints-and-tips
- https://robertschouten.com/2018/05/25/pnp-starter-kit-my-experiences
"},{"location":"spfx/starterkit/#performance","title":"Performance","text":" - https://robertschouten.com/2018/07/06/pnp-starter-kit-optimisation-considerations
"},{"location":"spfx/starterkit/#extension","title":"Extension","text":" - https://beaucameron.net/2018/07/19/customizing-the-pnp-starter-kit-for-office-365-part-1-portal-footer
- https://beaucameron.net/2018/09/03/customizing-the-sharepoint-starter-kit-for-office-365-part-3-collab-footer/
"},{"location":"spfx/starterkit/#webpart","title":"WebPart","text":" - https://robertschouten.com/2018/07/18/pnp-starter-kit-people-directory-search-issue
- https://robertschouten.com/2018/09/03/sharepoint-pnp-starter-kit-people-directory-contribution
"},{"location":"spfx/stream/","title":"Stream","text":""},{"location":"spfx/stream/#links","title":"Links","text":"Stream (built on SharePoint), the new version of Microsoft Stream
"},{"location":"spfx/support/","title":"Support","text":""},{"location":"spfx/support/#top-limitations","title":"Top limitations","text":" - https://sharepointmaven.com/top-5-limitations-of-sharepoint-online/
- Top 10 limitations in Microsoft Teams
"},{"location":"spfx/support/#content-video","title":"Content & Video","text":" - How to present your video and content side by side in a Microsoft Teams meeting
"},{"location":"spfx/support/#troubleshoot","title":"Troubleshoot","text":" - SharePoint Online troubleshooting
"},{"location":"spfx/support/#sharepoint-documentation","title":"SharePoint Documentation","text":" - SharePoint help center
- SharePoint Online admin
- SharePoint Online Troubleshooting
- Office troubleshooting for admins and IT professionals
- SharePoint Server
"},{"location":"spfx/support/#licence-changes","title":"Licence Changes","text":" - Power Platform licensing, November 2021 updates
- Microsoft 365 Licensing
- Understanding Power Platform Licensing
- Neue Lizenzierung von PowerApps
- PowerApps Licence Changes in terms that Matt Weston understands!
- PowerApps and Microsoft Flow licensing FAQs for October 2019
- Microsoft 365 Compliance Licensing Comparison
- Compare Microsoft 365 Enterprise Plans
"},{"location":"spfx/support/#partner-secure-application-model","title":"Partner Secure Application Model","text":" - Enabling the Secure Application Model framework
- Security requirements for using Partner Center or Partner Center APIs
- Connect to Exchange Online automated when MFA is enabled (Using the SecureApp Model)
"},{"location":"spfx/support/#sharepoint-spo","title":"SharePoint SPO","text":" - SharePoint Online Support Info
- Sharepoint 2019 Feature Ids
- Change a site address
- Set up a home site for your organization
- SharePoint Admin API Access
"},{"location":"spfx/support/#storage-limits","title":"Storage Limits","text":" - Manage site storage limits
"},{"location":"spfx/support/#admin-o365","title":"Admin O365","text":" - TechNet Gallery - Office365
- http://aka.ms/Office-Developer (alle wichtigen Office DEV Links)
- http://aka.ms/Office-TechGuide
- https://support.office.com/?ui=de-DE&rs=de-CH&ad=CH&fromAR=1
- https://technet.microsoft.com/de-ch/
- https://products.office.com/de-CH/
- Admin-Help-O365
- https://support.office.com/en-us/
- free-ebooks-microsoft
- Click-2-Run
- URLs-und-IP-Adressbereiche-von-Office-365
- sharepoint-licensing-overview
- free-microsoft-training-resources
"},{"location":"spfx/support/#azure-error-codes","title":"Azure Error Codes","text":" - All AADSTS Errors
- Search AADSTS Nummer
- Resolving error AADSTS90056
- Breaking: Changes to app authentication on SharePoint!
"},{"location":"spfx/support/#spo","title":"SPO","text":" - Navigation options for SharePoint Online
"},{"location":"spfx/support/#guest-users","title":"Guest Users","text":" - Ultimate Admin Guide to Microsoft Teams Guest Users
- SHAREPOINT ONLINE GUEST USER TROUBLES AND HOW TO GET PAST THEM
"},{"location":"spfx/support/#external-access","title":"External Access","text":" - Troubleshooting external access to SharePoint sites
- SPFx Webpart \u2013 External User Access
"},{"location":"spfx/support/#diagnostics","title":"Diagnostics","text":" - use-the-page-diagnostics-tool-for-sharepoint-online
"},{"location":"spfx/support/#performance","title":"Performance","text":" - Creating and launching a healthy SharePoint portal
- Best practices for optimizing performance of SharePoint sites and portals in Microsoft 365
"},{"location":"spfx/support/#webparts","title":"WebParts","text":"Maintenance mode
- open-and-use-the-web-part-maintenance-page
- How to open SharePoint pages in maintenance mode
- Query String URL Tricks for SharePoint and Microsoft 365
- Generate Modern List Filter URL: Managed Metadata
?maintenancemode=true\n
- Disable SPFx web parts and extensions
?disable3PCode=1\n
DisableTelemetry
- Disabling Telemetry network traffic on SPFx workbench
?disableTelemetry=true\n
Debug localization
?forceLocale=fr-fr\n
Search vertical layout refresh
- View the vertical in the search result page
?cacheClear=true\n
Hide the navigation
- Hide the navigation and the header in modern SharePoint pages
?env=Embedded is the new ?isDlg=1 \n
?env=WebViewList\n
- SPFX webpart serving old files versions in Chrome
?Embed=true&sw=bypass\n```html\n\nFilter URL\n\n- [Generate Modern List Filter URL: Managed Metadata](https://piyushksingh.com/2019/05/24/generate-modern-list-filter-url-managed-metadata/)\n- [How to filter a SharePoint list or library using URL parameters](https://natechamberlain.com/2020/05/09/how-to-filter-a-sharepoint-list-or-library-using-url-parameters/)\n\n\nNews Links\n\n- [Edit news links](https://emilymancini.com/2020/01/16/editing-a-news-link-in-sharepoint-online/)\n\nto clear (debug) configs\n\n```html\n?stay=true\n
Error Handling
- simulating 429 throttling
- Simulating 429 Throttling in Microsoft Graph API (SharePoint/OneDrive workloads)
?test429=true\n
"},{"location":"spfx/support/#lists","title":"Lists","text":" - Switch to classic mode
- Organize-documents-and-sites-in-office-365
- Manage-large-lists-and-libraries-in-SharePoint
- Optimising Large List Updates with PnP Batch: Handling Throttling and Enhancing Efficiency
"},{"location":"spfx/support/#recyclebin","title":"RecycleBin","text":" - Bulk delete recycle bin items from a site in batch
"},{"location":"spfx/support/#create-documentation","title":"Create Documentation","text":" - article/ways-to-work-with-sharepoint
- Doctor - Creating SharePoint Documentation
"},{"location":"spfx/support/#login-error","title":"Login Error","text":" - How to log in to Microsoft\u2019s websites (MSDN forums, Azure Portal, SharePoint Online) when you get a 'Bad Request' error?
- Inconvenient Microsoft Teams Authentication Error \u2013 Clear all Cookies
- SPFx App webpart is blocked in various browsers
- Authenticating to Api\u2019s and Third Party Cookies
edge://settings/siteData?search=cookie\n
"},{"location":"spfx/support/#throttling","title":"Throttling","text":" - Avoid throttling in SharePoint Online by using RateLimit headers in API calls
- Using RateLimit headers to optimize the throttling behavior
"},{"location":"spfx/support/#graph-api-errors-429","title":"Graph API Errors 429","text":" - Simulating throttling in SharePoint
- How to use the Microsoft Graph SDK Chaos Handler to Simulate Graph API Errors
- Microsoft Graph Developer Proxy
"},{"location":"spfx/support/#tips","title":"Tips","text":" - The scientific methodology for troubleshooting SharePoint
- Open in Explorer or View with File Explorer in SharePoint
"},{"location":"spfx/support/#invalid-file-names-and-types","title":"Invalid File Names and Types","text":" - Invalid file names and file types in OneDrive, OneDrive for Business, and SharePoint
- File naming restrictions in SharePoint
- SharePoint Naming Guidelines
- File types supported for previewing files in OneDrive, SharePoint, and Teams
"},{"location":"spfx/support/#no-scripts-embedding-scripts","title":"No-Scripts / embedding-scripts","text":" - Don't allow embedding scripts on modern sites
- Advice on using unsupported customisations (and more) in a SharePoint Online environment
"},{"location":"spfx/support/#followed-sites","title":"Followed Sites","text":" - Social Following Sites on behalf of a user
"},{"location":"spfx/support/#o365-network-planning","title":"O365 Network planning","text":" - Network planning and performance tuning for Office 365
- Office 365 URLs and IP address ranges
"},{"location":"spfx/support/#clean-o365","title":"Clean O365","text":" - POWERSHELL SCRIPTS FOR KEEPING YOUR DEVELOPMENT ENVIRONMENT TIDY AND SPOTLESS
"},{"location":"spfx/support/#classic-features","title":"Classic Features","text":" - Classic Administration Links
"},{"location":"spfx/support/#webdav","title":"WebDAV","text":" - Troubleshooting Explorer view and mapped drives to SharePoint
- DrDAV - A PowerShell-based diagnostic script for Windows WebClient service.
- Zee Drive for Office 365
"},{"location":"spfx/support/#makros-vba","title":"Makros /VBA","text":" - [Readiness Toolkit to assess application compatibility for Mic
"},{"location":"spfx/support/#sway","title":"Sway","text":" - Your community for best practices and the latest news on Sway
"},{"location":"spfx/teams-adoption/","title":"Teams Adoption","text":""},{"location":"spfx/teams-adoption/#learning","title":"Learning","text":" - EDX: Microsoft Service Adoption Specialist
- Get started driving adoption of Microsoft Teams
- Tools and workshops: Plan, deliver, and adopt Microsoft Teams
"},{"location":"spfx/teams-adoption/#blog","title":"Blog","text":""},{"location":"spfx/teams-adoption/#material","title":"Material","text":" - Teamworktools
- Adoption Guide Book
- Adopt Microsoft Teams
- SharePoint and Office 365: Securely sharing, managing, governing, and protecting content at Microsoft
- Understand teams and channels in Microsoft Teams
"},{"location":"spfx/teams/","title":"Teams","text":" - An Everyday Guide to Office 365 Groups
- Microsoft Teams Platform Architecture Overview with Teams Founder, Bill Bliss
- Microsoft Teams developer documentation
"},{"location":"spfx/teams/#start-developing","title":"Start Developing","text":" - Prepare your Microsoft 365 tenant
- Get Started with the Getting Started Sample App
- App-Camp
- Enabling Dev Tools in the New Microsoft Teams Client
"},{"location":"spfx/teams/#support","title":"Support","text":" - Keyboard shortcuts for Microsoft Teams
- Microsoft Teams: How to clean cache
- A guide to troubleshooting Teams
"},{"location":"spfx/teams/#overview","title":"Overview","text":" - All-in-One Collaboration
- Teams and SharePoint: Better Together
- Everything You Need to Know About Microsoft Teams
- Inner Loop & Outer Loop
"},{"location":"spfx/teams/#planing","title":"Planing","text":" - Modern Governance f\u00fcr SharePoint Team Sites sind zu beachten
- Microsoft Teams planning guide
- Core components of Teams
- Limits and specifications for Microsoft Teams
- Difference in permission between an owner and a member
- Overview of Teams and SharePoint integration
"},{"location":"spfx/teams/#training-video","title":"Training video","text":" - Microsoft Teams video training
- Governance, management and lifecycle in Microsoft Teams
"},{"location":"spfx/teams/#developing","title":"Developing","text":" - Start building apps for Teams
- Build apps for Microsoft Teams
- Overview and Concepts - Part 1
- Do you need ngrok to develop Microsoft Teams apps?
- Features and Components analysis - Part 2
"},{"location":"spfx/teams/#coding","title":"Coding","text":" - A Yeoman Generator for Microsoft Teams
- Get started with Teams templates
- App Templates for Microsoft Teams
"},{"location":"spfx/teams/#azure-app-configuration","title":"Azure App Configuration","text":" - Configure Teams Applications with Azure App Configuration (nodeJS)
- teams-ext-action-azure-config
- General Microsoft 365 Developer SIG community call \u2013 8th of July, 2021
"},{"location":"spfx/teams/#personal-app-properties","title":"Personal App Properties","text":" - Store Microsoft Teams SPFx Personal App Properties
"},{"location":"spfx/teams/#deployment","title":"Deployment","text":" - How to deploy a Yo Teams generated project to Azure through Azure DevOps
- Team development for Microsoft Teams apps
"},{"location":"spfx/teams/#teams-toolkit-visual-studio-code","title":"Teams Toolkit Visual Studio Code","text":" - Teams Toolkit Visual Studio Code v5 Guide
- Bring your existing projects to Teams Toolkit for Visual Studio Code
"},{"location":"spfx/teams/#message-extensions","title":"Message Extensions","text":" - Where to start developing your messaging extension using Microsoft Teams Toolkit
"},{"location":"spfx/teams/#personal-apps","title":"Personal Apps","text":" - Personal apps
- Building Microsoft Teams tab using SharePoint Framework - Tutorial
- Create Microsoft Teams manifest manually for a web part and deploy it to Microsoft Teams
"},{"location":"spfx/teams/#administration","title":"Administration","text":" - Overview of Teams
- Which Office 365 Service to Use
- Selecting users for your Microsoft Teams pilot phase
- Top 10 Office 365 Best Practices Every Admin Should Know
- Getting Started with Microsoft Teams Administration
"},{"location":"spfx/teams/#teams-adviser","title":"Teams Adviser","text":" - Overview Microsoft Teams Advisor
"},{"location":"spfx/teams/#microsoft-teams-versus-sharepoint-teams","title":"Microsoft Teams versus Sharepoint Teams","text":" - http://blog.intlock.com/microsoft-teams-vs-sharepoint-teams-enhance-collaboration-work
- https://www.avepoint.com/blog/microsoft-teams/office-365-groups-vs-teams/
- http://blog.pixelmill.com/3580/microsoft-teams-sharepoint-destined-lifelong-partners/
"},{"location":"spfx/teams/#private-channels","title":"Private Channels","text":" - Top 5 things to know about private channels in Microsoft Teams
"},{"location":"spfx/teams/#deep-links","title":"Deep Links","text":" - Deep linking into a custom teams application
"},{"location":"spfx/teams/#tipps","title":"Tipps","text":" - https://collab365.community/microsoft-teams-hacks
- Office 365 Groups Naming Policy
- Get Office 365 Groups with Teams via PowerShell and the Microsoft Graph
- https://laurakokkarinen.com/useful-things-to-do-with-graph-api-teams-operations
- PowerShell scripts for managing Office 365 Groups and Microsoft Teams
"},{"location":"spfx/teams/#querys-reports","title":"Querys / Reports","text":" - How to find inactive Microsoft Teams you no longer need
- Get all Teams Groups
- Get Office 365 Groups with Teams via PowerShell and the Microsoft Graph
https://graph.microsoft.com/beta/groups?$filter=resourceProvisioningOptions/Any(x:x eq 'Team')\n
"},{"location":"spfx/teams/#blogs","title":"Blogs","text":""},{"location":"spfx/teams/#governance-with-teams","title":"Governance with teams","text":" - Automate governance in Microsoft Teams: Context and Goals
- Automate governance in Microsoft Teams: The Result
- Automate governance in Microsoft Teams: Implementation, v1
- Automate governance in Microsoft Teams: Implementation, v2
"},{"location":"spfx/teams/#governance-tools","title":"Governance Tools","text":""},{"location":"spfx/teams/#securing-teams","title":"Securing Teams","text":""},{"location":"spfx/teams/#devops","title":"DevOps","text":" - Create Azure DevOps pipelines for a Microsoft Teams app built with SPFx
"},{"location":"spfx/teams/#provisioning-with-template","title":"Provisioning with Template","text":" - Create Teams with template
- Provisioning Teams with Azure Functions and Microsoft Flow Part 1: Solution Overview
- Microsoft Teams \u2013 Automation of Teams Creation
- Provision Microsoft Teams with Azure Automation \u2013 Part I
- Episode #73 - Provisioning Teams with the PnP Provisioning Engine
- Episode #99 - Updates about Provisioning Teams with PnP Provisioning Engine
- Episode #120 - Microsoft Teams Templates
- Provisioning teams in Microsoft Teams using the PnP Provisioning Engine
- PiaSys/Conferences-Samples/Teams-Provisioning
- Manage Team Templates with PowerShell
"},{"location":"spfx/teams/#renaming-teams","title":"Renaming Teams","text":" - Renaming Teams and Channels Can Be Messy
- Renaming a Microsoft Team and the associated SharePoint site
"},{"location":"spfx/teams/#teams-for-education","title":"Teams for Education","text":" - Teams for Education, Fundamentals
"},{"location":"spfx/teams/#presenting-in-teams","title":"Presenting in Teams","text":" - The right way to present a PowerPoint file during a Microsoft Teams meeting
"},{"location":"spfx/teams/#dataverse","title":"Dataverse","text":" - Overview of Microsoft Dataverse for Teams
- Reshape the future of work with Microsoft Dataverse for Teams
- A Closer Look at Data Platform Capabilities in Project Oakdale
- Manage Microsoft Dataverse for Teams environments
- Power Platform in a Modern Data Platform Architecture
- Dataverse REST Builder
"},{"location":"spfx/teams/#pro-contra-sharepointdataverse","title":"Pro / Contra SharePoint/Dataverse","text":"Making Good Technology Decisions: Data Storage 8 top reasons to use Dataverse or SharePoint lists in the Power Platform Key considerations and differences between Lists, Dataverse for Teams, and Dataverse
"},{"location":"spfx/testing/","title":"Testing","text":""},{"location":"spfx/testing/#typescript-testing","title":"TypeScript Testing","text":" - Introduction to Test-Driven Development (TDD) with Classic TDD Example
- How to Setup a TypeScript + Node.js Project
- Simple TypeScript Starter | 2020
- Introduction to Test-Driven Development (TDD) with TypeScript | 2021
"},{"location":"spfx/testing/#toolchain-setup","title":"Toolchain Setup","text":" - automated code reviews ts-project 1
- automated code reviews ts-project 2
"},{"location":"spfx/testing/#playwright","title":"Playwright","text":""},{"location":"spfx/testing/#react-testing-library","title":"React Testing Library","text":" - React Testing Library
- Testing In React Tutorial - Jest and React Testing Library
"},{"location":"spfx/testing/#jest","title":"Jest","text":" - SharePoint Framework unit-tests with Jest
- Writing unit tests for your SharePoint Framework components
- Unit Test your SharePoint Framework solution with Jest
- Demo: Simplify SPFx test configuration with Jest Presets
- jest-preset-spfx-react16
- SPFx Deep Dive Webinar Series: Unit Test SPFx Solutions using Jest and Enzyme
- Community Demo - Simplify SPFx test configuration with Jest Presets
- Test-Driven Development with React, Jest, and Enzyme - Part 1
- PiaSys: Episode #33 - Testing SharePoint Framework Solutions with Jest and Enzyme
- PiaSys: spfx-testing-v-1-9-1
- Extend SPFx solution testability: Let\u2019s start
- Extend SPFx solution testability: TDD in Data Access Layer
- Extend SPFx solution testability: TDD in View Layer
- Extend SPFx solution testability: TDD in View Layer part 2
- Extend SPFx solution testability: dealing with legacy code and async components
- Mock teams library in SPFx project
- Publish Code Coverage Results in Azure DevOps Pipeline for React
- Mocking 3rd party libraries with jest for SPFx developers
- spfx-wp-react-app
- State of SPFx unit testing in 2023
"},{"location":"spfx/testing/#testing-hooks","title":"Testing Hooks","text":" - react-hooks-testing-library
- spfx-ut-library - Mocking library for SPFx
"},{"location":"spfx/testing/#samples","title":"Samples","text":" - SharePoint Framework Unit-Tests Sample with Jest
- PFx-Jest-Enzyme-Sinon unit testing starter kit
- React Inversion Of Control Web Part with Unit Tests using Jest and Enzyme
- message-bar
- Table Of Contents for SharePoint
- unit-test-samples
- mgwdev-spfx-utfx
- SharePoint Framework Unit Tests - Part 1
- Getting started with unit testing SPFx
"},{"location":"spfx/testing/#tdd","title":"TDD","text":" - Introduction to Test driven development(TDD) of SharePoint Framework solution using Jest & Enzyme
"},{"location":"spfx/testing/#generate-test-data","title":"Generate test data","text":" - Mockaroo
- Generatedata
- Public APIs
"},{"location":"spfx/testing/#frontend-testing-witd-playwright","title":"Frontend Testing witd Playwright","text":" - Getting started with Playwright component testing
- Test Your Site In Every Browser
"},{"location":"spfx/theme/","title":"Theme","text":" - How to create a multicolored theme fora modern sharepoint online site
- BRK3090 - Customizing Modern SharePoint Sites: Branding, Site Scripts and Site Designs
- https://github.com/SharePoint/sp-dev-fx-webparts/tree/master/samples/react-themes
- http://tricky-sharepoint.blogspot.ch/2017/04/using-sharepoint-themes-colors-in-spfx.html
- http://sass-lang.com/guideaspx
- How to: Use PowerShell to customize the theme of a SharePoint Modern Site
- How to make your web parts responsive to the parent container
- Brand modern SharePoint Online sites
- two approaches to applying modern theme
- SPFX integration for theme support
- Creating a Section Aware webpart in SPFx
- Adding support for theme variants in SPFx web parts
"},{"location":"spfx/theme/#get-theme","title":"Get Theme","text":"$t = Get-PnPTenantTheme -Name \"Contoso Team Theme\"\n$t.Palette | ConvertTo-Json | Clip\n
"},{"location":"spfx/theme/#section-backgrounds","title":"Section Backgrounds","text":" - Supporting section backgrounds
- Develop SPFx web parts for different section designs using CSS
- Using Custom Color for Section Backgrounds and Page Headers
- Adding support for theme variants in SPFx web parts
"},{"location":"spfx/theme/#office-fabric-tips","title":"Office Fabric Tips","text":" - How to handle table component of Office UI Fabric
- Office UI Fabric Table Example
- sp-modern-classes
"},{"location":"spfx/theme/#responsive-tips","title":"Responsive Tips","text":" - How to test responsiveness and user experience for SPFx web parts properly
- Simulate Mobile Devices with Device Mode in Chrome DevTools
"},{"location":"spfx/theme/#css-learning","title":"CSS Learning","text":""},{"location":"spfx/theme/#css-tips","title":"CSS Tips","text":" - CodyHouse is a library of HTML, CSS, JS nuggets
- A Complete Guide to Grid
- CSS Grid\u200a\u2014\u200aResponsive layouts and components
- MDN: Use CSS to solve common problems
- Part 1: Style Options & How to Import
- Part 2: Dynamic Bundling of Styles
- Guidance for CSS in SharePoint Framework
"},{"location":"spfx/theme/#css-grid","title":"CSS Grid","text":" - A Complete Guide to CSS Grid
- Grid - Einf\u00fchung in 4 Schritten
- CSS Grid \u2013 Einf\u00fchrung in Gestaltungsraster mit dem Grid Layout Module
- Grid by Examples
"},{"location":"spfx/theme/#flexbox","title":"Flexbox","text":" - An Interactive Guide to Flexbox
- A Complete Guide to Flexbox
- Interactive Flex Generator
"},{"location":"spfx/theme/#css-box-model","title":"CSS Box Model","text":""},{"location":"spfx/theme/#css-specification","title":"CSS Specification","text":" - Specificity Calculator
- Specificity
"},{"location":"spfx/theme/#tools","title":"Tools","text":" - SPFxThemeWiz
- codepen.io
- caniuse.com
- CSS Validation Service
- mozilla addon - web-developer
- open-ui.org
- shadcn/ui - Build your component library
"},{"location":"spfx/theme/#testing","title":"Testing","text":" - Panthema web part
- How to test SPFx web part theming
"},{"location":"spfx/theme/#debug","title":"Debug","text":""},{"location":"spfx/theme/#output-theme-variables","title":"Output theme variables","text":" var palette = window.__themeState__.theme;\nvar containerElement = document.createElement(\"div\");\ncontainerElement.style.padding = \"1em\";\ncontainerElement.style.fontFamily = \"sans-serif\";\ncontainerElement.style.columnCount = \"3\";\ndocument.body.appendChild(containerElement);\nvar arr = Object.keys(palette).map(k => {\nvar colorElement =document.createElement(\"div\");\ncolorElement.style.marginTop = \"1ex\";\nvar nameElement =document.createElement(\"span\");\nnameElement.style.display = \"inline-block\";\nnameElement.style.minWidth= \"150px\";\nnameElement.innerHTML = k\ncolorElement.appendChild(nameElement );\nvar squareElement = document.createElement(\"span\");\nsquareElement.style.display= \"inline-block\";\nsquareElement.style.border= \"solid 1px #888\";\nsquareElement.style.width = \"12px\";\nsquareElement.style.height = \"12px\";\nsquareElement.style.margin = \"0 2px 0 1ex\";\nsquareElement.style.backgroundColor = window.__themeState__.theme[k];\ncolorElement.appendChild(squareElement);\nvar hexElement =document.createElement(\"span\");\nhexElement.innerHTML = window.__themeState__.theme[k];\ncolorElement.appendChild(hexElement);\ncontainerElement.appendChild(colorElement);\n});\n
window.spModuleLoader._bundledComponents[\"b6917cb1-93a0-4b97-a84d-7cf49975d4ec\"].PageManager._instance.pageContext.legacyPageContext\n
"},{"location":"spfx/toolchain/","title":"Toolchain","text":""},{"location":"spfx/toolchain/#overview","title":"Overview","text":" - SharePoint Framework toolchain
- SharePoint Framework development tools and libraries
"},{"location":"spfx/toolchain/#from-classic-to-modern","title":"From classic to modern","text":" - Conquer your dev toolchain in 'Classic' SharePoint \u2013 Part 1
- Conquer your dev toolchain in 'Classic' SharePoint \u2013 Part 2
- Conquer your dev toolchain in 'Classic' SharePoint \u2013 Part 3
- Conquer your dev toolchain in 'Classic' SharePoint \u2013 Part 4
"},{"location":"spfx/toolchain/#webpack","title":"Webpack","text":" - webpack-basics-part-1
- getting-up-to-speed-with-webpack
- (Update the Webpack Config
"},{"location":"spfx/toolchain/#prepare","title":"Prepare","text":" - Preparing development machine for client-side SharePoint projects
"},{"location":"spfx/toolchain/#commands","title":"Commands","text":" - SPFx Commands Cheat Sheet
"},{"location":"spfx/toolchain/#gulp","title":"Gulp","text":" - Getting up to speed with Gulp
- Gulp: Basics
- SPFx Automatically Generating Revision Numbers
- SPFx Automatically Generating Revision Numbers + Versioning
- One command to create a clean solution package
"},{"location":"spfx/toolchain/#gulp-dist","title":"gulp dist","text":" - One command to create a clean solution package
install npm package
npm install gulp-sequence --save-dev\n
add to gulpfile.js
if (process.argv.indexOf('dist') !== -1){\nprocess.argv.push('--ship');\n}\n\nconst gulpSequence = require('gulp-sequence');\n\ngulp.task('dist', gulpSequence('clean', 'bundle', 'package-solution'));\n
"},{"location":"spfx/toolchain/#deployment","title":"Deployment","text":" - https://github.com/estruyf/UploadToOffice365SPFx/blob/master/gulpfile.js
- https://github.com/estruyf/gulp-spsync-creds
- https://n8d.at/blog/how-to-version-new-sharepoint-framework-projects/?platform=hootsuite
"},{"location":"spfx/toolchain/#npm","title":"NPM","text":""},{"location":"spfx/toolchain/#package-lockjson","title":"package-lock.json","text":" - https://medium.com/coinmonks/everything-you-wanted-to-know-about-package-lock-json-b81911aa8ab8
"},{"location":"spfx/toolchain/#optimization-packages","title":"Optimization packages","text":" - https://docs.microsoft.com/en-us/sharepoint/dev/spfx/toolchain/optimize-builds-for-production
- https://docs.microsoft.com/en-us/sharepoint/dev/spfx/toolchain/optimize-builds-for-production
- https://rencore.com/sharepoint-framework/script-check/
- https://www.techmikael.com/2018/08/an-adventure-into-optimizing-sharepoint.html
"},{"location":"spfx/toolchain/#update-packages","title":"Update packages","text":" - https://gist.github.com/iki/ec32bfdeeb23930efd15
# check\nnpm outdated -g\n\n# install\nnpm -g i npm-check\n\n# interactive update of global packages\nnpm-check -u -g\n\n# interactive update for a project you are working on\nnpm-check -u\n\n# unistall package\nnpm uninstall -g <module>\n
"},{"location":"spfx/toolchain/#check-package-version","title":"Check package version","text":" - https://github.com/dylang/npm-check
List global npm packages versions
npm list -g --depth 0\n
List detail global npm package versions from one package
npm view @microsoft/generator-sharepoint\n
"},{"location":"spfx/toolchain/#pnpm","title":"PNPM","text":" - NPM, Yarn and PNPM: Which Package Manager Should You Use for SharePoint Framework Projects?
- pnpm - Package Manager
- Using pnpm in SPFx projects
"},{"location":"spfx/toolchain/#packagejson","title":"Package.json","text":" - https://docs.npmjs.com/files/package.json
"},{"location":"spfx/toolchain/#security","title":"Security","text":" - have-you-ever-thought-about-checking-your-dependency-for-vulnerabilities
- 5 ways to manage and monitor your digital workplace
"},{"location":"spfx/toolchain/#installation","title":"Installation","text":" - getting-up-to-speed-with-node-js-and-npm
"},{"location":"spfx/toolchain/#update-spfx-version","title":"Update SPFx version","text":" - go into solution folder
- search f\u00fcr \"@micorosoft/sp-\"
- update all package (latest or version)
npm outdated\n
npm install package-name@latest --save\n
npm install package-name@version --save\n
gulp clean\n
gulp build\n
"},{"location":"spfx/toolchain/#test","title":"Test","text":"gulp serve --nobrowser\n
"},{"location":"spfx/toolchain/#tips","title":"Tips","text":" - https://pdemro.com/improve-sharepoint-framework-build-times-by-hacking-gulp-and-webpack
- https://github.com/pdemro/spfx-gulpfile-hack
"},{"location":"spfx/toolchain/#deployment_1","title":"Deployment","text":"npm i\ngulp clean\ngulp build\ngulp --ship\ngulp package-solution --ship\n
"},{"location":"spfx/toolchain/#dependencies","title":"Dependencies","text":" - https://docs.npmjs.com/cli/install
npm install saves any specified packages into dependencies by default. Additionally, you can control where and how they get saved with some additional flags:\n\n-P, --save-prod: Package will appear in your dependencies. This is the default unless -D or -O are present.\n\n-D, --save-dev: Package will appear in your devDependencies.\n\n-O, --save-optional: Package will appear in your optionalDependencies.\n
"},{"location":"spfx/toolchain/#version-manger-nvm-npx","title":"Version Manger (nvm, npx)","text":" - How to install Node.js on Windows
- Node Version Manager (nvm) for Windows
- Use SPFx and NVM in an easy way with PowerShell
- How to use specific NodeJS version with your SPFx project
- Better Node.js Install Management with Node Version Manager
- Use Node Version Manager to develop your SPFx apps
// check version\nnode --version\n\n// list installed versions of node (via nvm)\nnvm ls\n\n// To list available remote versions on Windows 10 you can type\nnvm list available\n\n// install a specific version of node\nnvm install 10.22.1\nnvm install 8.17.0\n\nnvm list\n\n// switch version of node\nnvm use 10.22.1\n\n# for spfx deployment\n\nnpm i -g gulp\nnpm i -g yo\nnpm i -g @microsoft/generator-sharepoint\ngulp trust-dev-cert\n\n# for spfx advanced\nnpm i -g @pnp/office365-cli\nnpm i -g spfx-fast-serve\nnpm i -g @pnp/generator-spfx\nnpm i -g npm-check\n
"},{"location":"spfx/toolchain/#eslint","title":"ESLint","text":""},{"location":"spfx/typescript/","title":"Typescript","text":""},{"location":"spfx/typescript/#reference","title":"Reference","text":" - TypeScript Cheatsheet
- Learn X in Y minutes
- TypeScript Handbook
- Why TypeScript
- pluralsight typescript course
- https://github.com/Microsoft/TypeScript/wiki
- https://github.com/basarat/typescript-book
- https://basarat.gitbooks.io/typescript/content/docs/getting-started.html
- https://www.gitbook.com/book/basarat/typescript/details
- https://codewich.com/
- https://github.com/lakshaydulani/typescript-summary
- https://github.com/netdur/typescript-design-patterns
- clean-code-typescript
"},{"location":"spfx/typescript/#typescript-version-for-spfx","title":"Typescript Version for SPFx","text":" - Use Different Versions of TypeScript in SPFx projects
"},{"location":"spfx/typescript/#tutorial","title":"Tutorial","text":" - http://dotnetdetail.com/learn-typescript-from-basic/
- http://dotnetdetail.com/learn-typescript-step-by-step-with-suitable-example/
"},{"location":"spfx/typescript/#library","title":"Library","text":" - https://github.com/alexjoverm/typescript-library-starter
"},{"location":"spfx/typescript/#typings","title":"Typings","text":" - https://github.com/cashfarm/autotypes
"},{"location":"spfx/typescript/#code-snippets","title":"Code Snippets","text":""},{"location":"spfx/typescript/#isemptystring","title":"isEmptyString","text":"/**\n * Check if the value is null, undefined or empty\n *\n * @param value\n */\nprivate _isEmptyString(value: string): boolean {\nreturn value === null || typeof value === \"undefined\" || !value.length;\n}\n
"},{"location":"spfx/typescript/#_isnull","title":"_isNull","text":"/**\n * Check if the value is null or undefined\n *\n * @param value\n */\nprivate _isNull(value: any): boolean {\nreturn value === null || typeof value === \"undefined\";\n}\n
"},{"location":"spfx/upgrade/","title":"Upgrade","text":""},{"location":"spfx/upgrade/#office-365-cli","title":"Office 365 CLI","text":" - https://blog.mastykarz.nl/upgrade-sharepoint-framework-project-office-365-cli/
- https://tahoeninjas.blog/2018/06/12/upgrade-your-spfx-solution-to-sharepoint-framework-package-v1-5/
"},{"location":"spfx/upgrade/#update-framework","title":"Update Framework","text":" go into solution folder
npm outdated\n
search f\u00fcr \"@micorosoft/sp-\" update all
npm install package-name@version --save\n
or npm install package-name@latest --save\n
gulp clean\ngulp build\n
"},{"location":"spfx/upgrade/#support-issues","title":"Support Issues","text":""},{"location":"spfx/upgrade/#azure-permission","title":"Azure Permission","text":" - http://spblog.net/post/2018/09/19/You-might-experience-errors-when-first-trying-new-SPFx-16-features
- https://github.com/SharePoint/sp-dev-docs/issues/2473#issuecomment-419111117
bs - Go to the \"API Management\"-section in the SharePoint Preview Admin Center (https://TENANT-admin.sharepoint.com/_layouts/15/online/AdminHome.aspx#/webApiPermissionManagement) - Ensure that no permissions are there anymore - Head over to the App Registrations Page in the Azure Portal. - Click \"View all applications\" - Click \"SharePoint Online Client Extensibility Web Application Principal\" - Choose \"Settings\" > \"Required Permissions\" - Click \"Add\" - \"Select an API\" and choose \"Windows Azure Active Directory\", press \"Select\" - \"Select Permissions\" and choose \"Sign in and read user profile\", press \"Select\" - Click \"Done\" - Click \"Grant permissions\" and \"Yes\" - Update the app package in the app catalog - Head back to the \"API Managment\"-section: - Ensure that \"Windows Azure Active Directory\" is already listed in the approved permissions (this permission should be here because of the previously executed steps). - Approve all permission requests one by one. Once this is done, reload the page to ensure that all permissions are actually approved as the SharePoint UI doesn't always behave as expected. - Wait a couple of minutes - Log out of SharePoint, close all browser windows and log in again - Access your intranet and everything should be fine
"},{"location":"spfx/userprofile/","title":"User Profile","text":" - Looking at Things in Profile
"},{"location":"spfx/userprofile/#sync-user-picture","title":"Sync User Picture","text":" - Information about profile picture synchronization in Microsoft 365
- SharePoint Online UserProfiles and the story about synchronizing with Azure Active Directory-Part 1
- SharePoint Online UserProfiles and the story about synchronizing with Azure Active Directory-Part 2
- How the UserProfile in Azure Active Directory and how a Mailbox in Exchange Online looks like
- How user profile picture synchronization works in Microsoft 365
- How to Control Updates for User Photos in Microsoft 365 Apps
- Change your own profile picture as a Guest in Microsoft Teams
- Profilbilder synchronisieren in Microsoft 365
"},{"location":"spfx/userprofile/#get-user-picture","title":"Get User Picture","text":" - How to get SharePoint profile picture
"},{"location":"spfx/userprofile/#edit-user-profiles","title":"Edit User Profiles","text":""},{"location":"spfx/ux/","title":"UX","text":""},{"location":"spfx/ux/#style-guide","title":"Style Guide","text":" - Simple Style Guide Generator for SharePoint and Office 365 Development
"},{"location":"spfx/ux/#design-rules","title":"Design Rules","text":" - Laws aof UX
- RefactoringUI
"},{"location":"spfx/ux/#ux-tools","title":"UX Tools","text":" - SP Axure Library Downloads
- CSS Grid Generator
- CSS shadows Generator
- neumorphism
- Open-Source UI elements made with HTML and CSS
"},{"location":"spfx/ux/#page-layout","title":"Page layout","text":" - Design Review: Page layout and typography of communication sites
"},{"location":"spfx/versions/","title":"SPFx Versions","text":" - Overview SPFx Versions
- SPFx Compatibility Matrix
- SPFx development tools and libraries compatibility
- SPFx project doctor
m365 spfx project doctor --output md > \"doctor-report.md\"\n
"},{"location":"spfx/versions/#check-versions","title":"Check versions","text":" - What version of Node can I use for SharePoint Framework?
- SharePoint 2016, 2019 & SharePoint Online: Which Version of the SharePoint Framework Should You Install?
- What SharePoint Framework version can I use?
- How to check SharePoint Framework version
"},{"location":"spfx/versions/#v18","title":"v1.8","text":" - What's in the latest Update of SPFx 1.8.0?
- Release notes for SharePoint Framework 1.8
- Using the full potential of React in SharePoint Framework 1.8.0
- SPFx 1.8 now supports Office Fabric React 6.156.0
- SharePoint Framework 1.8 Has Been Released!
- Common Issues in SPFx 1.8.0 with TypeScript 3.3
"},{"location":"spfx/versions/#office-fabric-version","title":"Office Fabric Version","text":" - Use Office UI Fabric React components in your SharePoint client-side web part
"},{"location":"spfx/versions/#fluent-ui","title":"Fluent UI","text":""},{"location":"spfx/versions/#azure-communication-service-ui-library","title":"Azure Communication Service UI Library","text":" - Azure Communication Services UI Library - UI Components
"},{"location":"spfx/webhooks/","title":"Webhooks","text":""},{"location":"spfx/webhooks/#reference","title":"Reference","text":" - introduction-to-sharepoint-webhook
"},{"location":"spfx/webhooks/#video","title":"Video","text":" - PnP Webcast - Introduction to SharePoint Webhooks -SharePoint Online Webhooks with Azure Functions
"},{"location":"spfx/webhooks/#sample","title":"Sample","text":" - WebHooks.List.AzureAD
- WebHooks.List
"},{"location":"spfx/webhooks/#guide","title":"Guide","text":" - SharePoint web hooks Azure AD reference implementation - Deployment guide
- Using Azure Functions with SharePoint webhooks
"},{"location":"spfx/webparts/","title":"Webparts","text":""},{"location":"spfx/webparts/#find-weparts","title":"Find WeParts","text":" - Find out where SPFx Web Parts are being used in Modern SharePoint sites
- Locatepages where particular webpart
- Upgrading the PnP Modern Search Web Parts from v3 to v4 - UpgradeWebParts
"},{"location":"spfx/webparts/#design","title":"Design","text":" - SharePointWireframes
- Designing a SharePoint web part
- SharePoint Framework Design Series: Property Panes \u2014 Part I
- SharePoint Framework Design Series: Property Panes \u2014 Part II
- SharePoint Framework Design Series: Property Panes \u2014 Part III
- SharePoint Framework Design Series: Web Part Titles and Descriptions
- harePoint Framework Design Series: Layout Patterns \u2014 Part I
"},{"location":"spfx/webparts/#localization","title":"Localization","text":" - Localize SharePoint Framework client-side web parts
- Implementing localization file checks to prevent issues in SharePoint Framework solutions
- Simplify localization in SharePoint Framework projects
- Using the SFPx library component for simplifing the localization experience
"},{"location":"spfx/webparts/#version","title":"Version","text":" - Display the solution version in your web part
"},{"location":"spfx/webparts/#properties","title":"Properties","text":" - spfx-web-part-properties-dynamic-dropdown
- simplify-adding-web-parts-with-preconfigured-entries
- Web part properties in the SharePoint Framework \u2013 part 1
- Web part properties in the SharePoint Framework \u2013 part 2
- Creating a property pane for editing items in your SPFx web parts
- Understanding manifest.js file in spx project
- Understanding spfx Solution Structure
- Restrict Permissions on Editing SharePoint SPFx Property Pane Configurations
- SharePoint Framework Web Part and Property Pane Lifecycles
- Integrate PnP SPFx React controls inside the Property Pane collection data control
- an SPFX Tour sample WebPart
"},{"location":"spfx/webparts/#edit-mode","title":"Edit Mode","text":" - Trigger the edit page experience from your SharePoint Framework solution
- Check the page display mode from within your SharePoint Framework extensions
"},{"location":"spfx/webparts/#sppagecontextinfo","title":"spPageContextInfo","text":" - Access _spPageContextInfo details in SharePoint Framework
In the F12 Developer Console, you can call
window.spModuleLoader._bundledComponents[\"b6917cb1-93a0-4b97-a84d-7cf49975d4ec\"].PageManager._instance.pageContext.legacyPageContext\n
"},{"location":"spfx/webparts/#dynamic-default-properties","title":"Dynamic default properties","text":" - Dynamic default properties in SPFx web parts
"},{"location":"spfx/webparts/#group-webpart","title":"Group WebPart","text":" - SharePoint Online Group Calendar Web Part Tutorial
"},{"location":"spfx/webparts/#news-webpart","title":"News WebPart","text":" - EXPIRING NEWS ACROSS MODERN SHAREPOINT
- Injecting HTML content with PnP PowerShell
"},{"location":"spfx/webparts/#highlighted-content-web-part-hcwp","title":"Highlighted Content Web Part (HCWP)","text":" - Highlighted Content WebPart
- Use the Highlighted content web part
"},{"location":"spfx/webparts/#document-library-webpart","title":"Document Library WebPart","text":" - Can the document library web part look like Stream?
"},{"location":"spfx/webparts/#help-tutorial-webpart","title":"Help / Tutorial WebPart","text":" - Add in-place scripted tutorials in your SPFx components
"},{"location":"spfx/webparts/#samples","title":"Samples","text":" - SharePoint Framework Client-Side Web Part Samples
- https://github.com/wobba/spfx4fun/tree/master/react-pageheaderconfigurator
- https://github.com/wobba/sp-dev-fx-webparts/tree/modernscripted/samples/react-script-editor
- http://www.sharepointnutsandbolts.com/2017/03/provisioning-modern-pages-and-spfx-web-parts.html
- https://msdn.microsoft.com/en-us/pnp_articles/modern-experience-customizations-customize-pages#using-the-pnp-support-for-modern-pages-and-client-side-web-parts
- https://github.com/OlivierCC/spfx-40-fantastics
- https://www.codeproject.com/Articles/1235629/Sharepoint-Framework-SPFx-Large-List-Webpart-using
- https://github.com/SharePoint/sp-dev-fx-webparts/tree/master/samples
- https://gist.github.com/vman/1941ce6c61cebca1bfe3e490ce63185e#file-msgraphnospfx-js
- https://veenstra.me.uk/2017/07/18/office-365-spfx-samples-a-complete-overview/
- https://veenstra.me.uk/2017/08/01/office-365-sharepoint-spfx-web-parts-that-are-not-part-of-the-spfx-samples/
- https://blog.velingeorgiev.com/how-add-spfx-webpart-full-width-column
- https://blog.velingeorgiev.com/sharepoint-framework-slide-swiper
- https://techcommunity.microsoft.com/t5/SharePoint-Blog/MVP-Blog-Build-Targeted-Training-on-Office-365-Adoption-Center/ba-p/170840
- http://www.carlosmontilla.com/single-post/2017/12/05/Create-an-Enterprise-Search-Web-Part-for-Modern-Pages
- https://github.com/hugoabernier/react-calendar-feed
- https://github.com/aflyen/spfx-webpart-sitesifollow
- https://github.com/aflyen/spfx-extension-fullpagecanvas
- Office UI Fabric Persona with Skype for Business status integration
- Facebook Feed webpart with custom UI
- Web Part built using React showing documents trending in the current site
- Employee Directory with SPFX ReactJS Using SharePoint Search Rest Api \u2013 Modern Webpart
- Puzzlepart presents the modern flexible Divider web part
- Vimeo webpart
- Filtered Documents webpart
- Birthday SPFx, Web Part
- Celebrate work anniversaries on your SharePoint Intranet
- Add Google Charts into SharePoint Framework Web Part
- Display Google Fit Information | Getting Started With Google Fitness REST API
- How to let users fill out new documents based on a template in Office client directly from SharePoint | Office URI Schemes
- Google search web part
- Promoted Links Web Part
- List Pivot Table \u2013 WebPart
- React Flow Diagram Web Parts
- Fabric UI React GroupedLists inside Pivot Tabs
- React Tree Organization Web Part
- react-display-hierarchy
- react-cs-images-suggestion: a SPFX sample webpart using Azure Cognitive Services
- Share data between SPFx webpart
- Office 365 Usage Reports using Microsoft Graph API
- Group People Web Part | gitlab.lsonline.fr
- How To Create/ Generate QRcode In SPFx Web Part
- Create a simple a \u2013 z in page
- spfx-react-covid-19 - chart
- spfx-jquery-owlcarousel
- sudharsank - samples
"},{"location":"spfx/webparts/#project-webparts","title":"Project WebParts","text":" - Modern Project Site Example
- VerticalTimeline
- react-google-charts - timeline
- JavaScript Calendar React
"},{"location":"spfx/webparts/#isolated-webparts","title":"Isolated WebParts","text":" - Isolated web parts
- SPFx isolated web parts with AadHttpClient
"},{"location":"spfx/webparts/#filtering-webparts","title":"Filtering WebParts","text":" - SPFx - Image Gallery with filtering
- Microsoft Search and the integrated image search in M365
"},{"location":"spfx/webparts/#send-mail","title":"Send Mail","text":" - SPFx - Send Emails & Attachments With Graph API
- How to Send an Email Using a Graph API in SharePoint Framework (SPFx)
- How To Attach A File While Sending Email Using Graph API In SharePoint Framework (SPFx)
"},{"location":"spfx/webparts/#external-lib","title":"External Lib","text":" - How to add external libraries and assets in SharePoint client-side web part
- React Templates using SPFx Library Component
- How to consume a third-party SPFx library
"},{"location":"spfx/webparts/#config-variables","title":"Config Variables","text":" - Using .env files in SharePoint Framework development
"},{"location":"spfx/webparts/#create-pdf","title":"Create PDF","text":" - Generate PDF Document In Spfx
"},{"location":"spfx/webparts/#caml-query","title":"CAML Query","text":" - Query schema
- CamlJs
- Camlex.NET.dll
- CAML Query
"},{"location":"spfx/webparts/#terms-sets","title":"Terms Sets","text":" - Display hierarchical Term Sets to your Web Part
- Get all child terms from term group in SharePoint Taxonomy using PnP JS
- How to filter list items by Managed Metadata Fields or Taxonomy Columns
"},{"location":"spfx/webparts/#reusable-react-control","title":"Reusable React control","text":" - SPFx reusable React control field-picker-list-data
"},{"location":"spfx/webparts/#share-data-in-webpart","title":"Share Data in WebPart","text":" - Share data between SPFx webpart
"},{"location":"spfx/webparts/#dynamic-load-webpart","title":"Dynamic Load WebPart","text":" - https://github.com/wobba/spfx4fun/blob/master/DynamicLoad
"},{"location":"spfx/webparts/#samplesexercises","title":"Samples/Exercises","text":" - https://github.com/ktskumar/spfxguidesamples
- https://www.c-sharpcorner.com/article/amazing-guide-to-sharepoint-framework-development-with-react/
- https://github.com/agzertuche/SPFx-Exercises
"},{"location":"spfx/webparts/#overview-modern-webparts","title":"Overview Modern WebParts","text":" - http://aurorabits.com/modern-sharepoint-web-parts/
- http://aurorabits.com/modern-sharepoint-web-parts-2/
"},{"location":"spfx/webparts/#available-webparts","title":"Available WebParts","text":" - https://tracyvanderschyff.com/2018/07/23/overview-of-sharepoint-online-web-parts/
- Available web parts
"},{"location":"spfx/webparts/#modern-pages","title":"Modern Pages","text":" - http://www.sharepointnutsandbolts.com/2017/03/provisioning-modern-pages-and-spfx-web-parts.html
"},{"location":"spfx/webparts/#css-tips","title":"CSS Tips","text":" - Alternative to innerHTML in SharePoint Framework web parts
- Add SPFx Web Part to a Full Width Column
"},{"location":"spfx/webparts/#rest-call","title":"Rest Call","text":" - async rest calls with promises httpclient jquery
- Get list of frequent sites in SharePoint
- Get list of recent documents in SharePoint
"},{"location":"spfx/webparts/#cors","title":"CORS","text":" - Getting around CORS issues in SPFx with SPHttpClient
"},{"location":"spfx/webparts/#products","title":"Products","text":" - http://bindtuning.com/webparts
"},{"location":"spfx/webparts/#package-bundling","title":"Package bundling","text":" - Video Dynamic SPFx Package Bundling
"},{"location":"spfx/webparts/#web-accessibility-a11y","title":"Web accessibility (a11y)","text":" - Web accessibility (also referred to as a11y) in React components
"},{"location":"spfx/webparts/#redirecting","title":"Redirecting","text":" - SPFx Anchor Tags
- Navigating to other pages in SharePoint Framework from code
- sp-starter-kit: redirect
"},{"location":"spfx/webparts/#dialog","title":"Dialog","text":" - Modal Dialog, show classic SharePoint forms
"},{"location":"spfx/webparts/#wiki-pages","title":"Wiki Pages","text":" - Create a TOC for your SharePoint Wiki pages
"},{"location":"spfx/webparts/#replacing-the-out-of-the-box-web-part","title":"Replacing the out of the box web part","text":" - Replacing the out of the box divider web part with this one
Connect-PnPOnline https://tenantname-admin.sharepoint.com\n$ctx = Get-PnPContext\n$tenant = New-Object -TypeName \"Microsoft.Online.SharePoint.TenantAdministration.Tenant\" -ArgumentList $ctx\n# Get existing list of blocked web parts\n$ids = @($tenant.DisabledWebPartIds)\n# Add the id for the out of the box Divider web part\n$ids += [Guid]'2161a1c6-db61-4731-b97c-3cdb303f7cbb'\n$ids = $ids | Where-Object {$_}\n$tenant.DisabledWebPartIds = $ids\n$tenant.Update()\nInvoke-PnPQuery\n
"},{"location":"spfx/webparts/#office-add-in","title":"Office Add-in","text":" - Register an Office Add-in that uses single sign-on (SSO) with the Microsoft identity platform
- Enable single sign-on (SSO) in an Office Add-in
"},{"location":"tools/blazor/","title":"Blazor","text":""},{"location":"tools/blazor/#overview","title":"Overview","text":" - Awesome Blazor
- Blazor University
- aspnet-core-blazor
- Blazor Web Assembly and Microsoft Graph with Azure Functions
"},{"location":"tools/blazor/#teams-apps","title":"Teams Apps","text":" - Blazorade-Teams
- Video: Building Microsoft Teams Apps with Blazor
- PnP Dev General Community Call Demo, Feb 4 2021 - Blazor Teams App
"},{"location":"tools/blazor/#blogger","title":"Blogger","text":""},{"location":"tools/blazor/#workshop","title":"Workshop","text":" - Blazor - app building workshop
- Blazor MS-Teams Tab App Series
- Video: Microsoft Graph Toolkit with Blazor
"},{"location":"tools/contentful/","title":"Contentful","text":""},{"location":"tools/contentful/#overviews","title":"Overviews","text":" - Create a Blog App With Next.js and Contentful API
"},{"location":"tools/contentful/#samples","title":"Samples","text":""},{"location":"tools/dev/","title":"Dev Tools","text":" - 2022.stateofjs
- 2022.stateofcss
- Web Almanac
"},{"location":"tools/dev/#secret-knowledge","title":"Secret knowledge","text":" - The book of Secret knowledge
"},{"location":"tools/dev/#html-prototype","title":"Html Prototype","text":" - html-codepen
- codesandbox
- images-unsplash
- icons-iconfinder
"},{"location":"tools/dev/#stack-2020","title":"Stack 2020","text":" - My Tech Stack (2020 Edition)
"},{"location":"tools/dev/#nextjs","title":"Next.js","text":" - Awesome Next.js
- Next.js and Reactstrap Admin Dashboard Project
- nextjs-reactstrap
- Airframe React
- react-admin
- Next.js from the Ground Up
- How Next.js is delivering React\u2019s vision for the future
"},{"location":"tools/dev/#shopify","title":"Shopify","text":""},{"location":"tools/dev/#hydrogen","title":"Hydrogen","text":" - How We Built Hydrogen: A React Framework for Building Custom Storefronts
"},{"location":"tools/dev/#create-new-project","title":"Create new project","text":" - Create Next App
- nextjs-admin-template - Pal.js UI
"},{"location":"tools/dev/#tailwind-css","title":"Tailwind CSS","text":" - tailwindcss.com
- tailwindcss play
- Integrating Tailwind CSS framework into a SPFx React project for advance User Experience
- react-tailwindcss
- Your First Tailwind Website
- How to build a landing page with Tailwind CSS, Tailwind UI, Vite.js \u2013 tutorial video
- Tailwind CSS: From Zero to Production\" on YouTube
- Source Code - From Zero to Production
"},{"location":"tools/dev/#tailwind-spfx","title":"Tailwind & SPFx","text":" - react-tailwindcss
- How to Set Up Tailwind CSS in a SPFx Project
- spfx-react-tailwindcss
"},{"location":"tools/dev/#design-to-code","title":"Design to Code","text":" - MS Fabric and Stardust to Fluent UI
- MS Fluent UI Starting
- Design to HTML
- Top 22 Prototyping Tools For UI And UX Designers 2020
"},{"location":"tools/dev/#best-practises","title":"Best practises","text":" - khalilstemmler - advanced TypeScript & Node.js best practices
"},{"location":"tools/dev/#msdn","title":"MSDN","text":""},{"location":"tools/dev/#tools-list","title":"Tools List","text":" - Useful Developer Tools
- My 12 Favorite Chrome Extensions as a Web Developer
- The tools for a SharePoint developer - Part 2
- msportals.io
- SharePoint Quicklinks
- Graph X-Ray
- PnP Sharing is Caring VS Code Extensions
- Tools that I use & \u2764\ufe0f
"},{"location":"tools/dev/#framework-trends","title":"Framework Trends","text":""},{"location":"tools/dev/#regexp","title":"RegExp","text":""},{"location":"tools/dev/#create-shortcuts","title":"Create shortcut(s)","text":" - create shortcut(s) for your common SharePoint Framework generator commands
"},{"location":"tools/dev/#debug","title":"Debug","text":" - mastykarz: easily debug production version
- sergei-sergeev: easily debug production version
"},{"location":"tools/dev/#tweetdeck-twitter","title":"TweetDeck (Twitter)","text":" - How to filter for SharePoint Framework #SPFx related tweets in TweetDeck
"},{"location":"tools/dev/#powershell-module-installs","title":"PowerShell Module Installs","text":" - Office 365 PowerShell Module Installs
- O365 PowerShell Module Installs
"},{"location":"tools/dev/#translation","title":"Translation","text":""},{"location":"tools/dev/#dokumentation-site-generator","title":"Dokumentation Site Generator","text":" - mkdocs-material
- docusaurus
- dochameleon
"},{"location":"tools/dev/#zoomit","title":"ZoomIt","text":" - How to present like a PRO using ZoomIt
"},{"location":"tools/dev/#convert-format","title":"Convert / Format","text":""},{"location":"tools/dev/#content-generators","title":"Content generators","text":" - loremipsum generator
- http://socialgoodipsum.com
- Office Ipsum
- http://trollemipsum.appspot.com
"},{"location":"tools/dev/#image-tools","title":"Image Tools","text":" - unsplash - free images
- pixabay - free images
- 20 Websites To Find Free High-Quality Images
- mazwai - free background images
- dummyimage
- Screenshots
- Convert Modern SharePoint Page Banner Images to Base-64 using PowerShell
- screenshots tool greenshot
"},{"location":"tools/dev/#emoji","title":"Emoji","text":" - Windows 10 keyboard tips and tricks
- Alt Code Shortcuts for Emoji, Smileys and Emoticons
"},{"location":"tools/dev/#sound-tools","title":"Sound Tools","text":""},{"location":"tools/dev/#password-generators","title":"Password generators","text":" - Random password generator
- password-generators
"},{"location":"tools/dev/#guid","title":"GUID","text":""},{"location":"tools/dev/#json","title":"JSON","text":" - Introduction to JSON
- Online Json viewer
- json formatter
- Fake Json Generator
- JSON to CSV Converter
"},{"location":"tools/dev/#change-log","title":"Change Log","text":""},{"location":"tools/dev/#download-website-offline","title":"Download Website / offline","text":" - Download entire website for offline
wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows -domains www.yourwebsite.com --no-parent www.yourwebsite.com/someurl\n
"},{"location":"tools/dev/#email","title":"Email","text":" - Responsive Email Foundation Zurb
- mailchimp - newsletter
- 10MinuteMail
- Free Mobile-Friendly & Responsive HTML Email Templates
"},{"location":"tools/dev/#ressourcen-files","title":"Ressourcen Files","text":" - https://poeditor.com/
- https://github.com/ypcode/spfx-dev-tools (Ressourcen Files mit Excel editieren)
- Excel and PowerShell to maintain your SPFx localized resources
- JavaScript Internationalization Framework
"},{"location":"tools/dev/#vscode","title":"VS.Code","text":""},{"location":"tools/dev/#c-development","title":"C# Development","text":" - Basic dotnet commands to create a C# Project in Visual Studio Code
"},{"location":"tools/dev/#command-line","title":"Command Line","text":" - Command Line Interface (CLI)
open last active window
code -r .\n
open in new window
code -n\n
"},{"location":"tools/dev/#vscode-extensions","title":"VS.Code Extensions","text":" - markdownlint
- Introducing SharePoint Typed Item
- Backup and Synchronize VSCode Settings with a GitHub Gist
- Visual Studio Code Extension \u2013 Settings Sync
- Top 10 VSCode Extensions for React
- Code Spell Checker
- abracadabra
settings.json
// Is git enabled\n\"git.enabled\": false,\n
// Path to the git executable\n\"git.path\": null,\n
// Whether auto fetching is enabled.\n\"git.autofetch\": false,\n
Info: https://stackoverflow.com/questions/30331338/remove-git-integrations-from-vscode
"},{"location":"tools/dev/#configure-vscode-intellisense","title":"Configure VSCode Intellisense","text":" - Avoid errors editing SharePoint Framework project configuration with Visual Studio Code intellisense
- VSCode SharePoint Framework JSON schemas configuration
"},{"location":"tools/dev/#edge-browser","title":"Edge Browser","text":" - Launching Edge with different profiles using shortcuts
"},{"location":"tools/dev/#exclude-folders-from-vscode","title":"Exclude Folders from VS.Code","text":" - How can I exclude a directory from Visual Studio Code 'Explore' tab
"},{"location":"tools/dev/#cli-app-generator","title":"CLI App Generator","text":" - generator-sppp
- SharePoint front-end projects automation and tasks tool-belt
- create-react-app
- generator-simplestyle
"},{"location":"tools/dev/#fabric-icons","title":"Fabric Icons","text":" - Render Office Fabric UI Icons into Canvas
- Tool to Generate Images Using Office UI Fabric Icons
- Fabric Icons
- Office UI Fabric Icons
-
- Using Flicon to support visual hierarchy on a homepage
- Microsoft-Integration-and-Azure-Stencils-Pack-for-Visio
"},{"location":"tools/dev/#favicons","title":"Favicons","text":""},{"location":"tools/dev/#website-builder","title":"WebSite Builder","text":""},{"location":"tools/dev/#sp-bookmarklets","title":"SP bookmarklets","text":" - Manage SharePoint using bookmarklets
Open Site Settings
javascript:(function(){var url = document.location.href.split('/Pages')[0].split('/SitePages')[0].split('/_layouts')[0];if(url.endsWith('.aspx')){url = url.replace(new RegExp('\\/[a-z A-Z 0-1 \\- _]*.aspx'),'')}location.replace(url+\"/_layouts/15/settings.aspx\")}());\n
Open Page in Maintenance Mode
javascript:(function(){location.replace(window.location.href+\"?maintenancemode=true\")})();\n
Go to Classic
javascript:(function(){document.cookie=\"splnu=0;domain=\"+window.location.hostname+\";\"; location.href=location.href;})();\n
Go to Modern
javascript:(function(){document.cookie=\"splnu=1;domain=\"+window.location.hostname+\";\"; location.href= location.href})();\n
Open Web Part Manager
javascript:(function(){location.replace(window.location.href+\"?contents=1\")})();\n
"},{"location":"tools/dev/#delete-node_modules-folder","title":"Delete node_modules Folder","text":" npm install rimraf -g\n
- creat fast-del.bat file
@ECHO OFF\nSET FOLDER=%1\nIF [%1]==[] (\n ECHO Delete Folder: \"%CD%\"?\n PAUSE\n SET FOLDER=\"%CD%\"\n CD /\n)\nECHO Deleting folder %FOLDER%\nrimraf %FOLDER%\n
-
This .bat file should be available under your \"PATH\" environmental variable. In other words, you should be able to run it from any command-line from any location. The easiest approach is to just copy this file to C:\\Windows directory (it's absolutely safe).
-
Open regedit and go to \"HKEY_CLASSES_ROOT\\Directory\\shell\\\" path.
-
Right-click on the \"shell\" folder and select New -> Key. Give it the name \"Fast Delete\".
-
Right-click on a newly created \"Fast Delete\" folder, then New -> Key. Give it the name \"command\".
-
Double-click on the default value for \"command\" folder and under value data enter:
cmd /c \"cd %1 && fast-del.bat\"\n
"},{"location":"tools/dev/#link-checker","title":"Link Checker","text":" - Crawl your website links and images to find broken links/images
- Copy an object from the console
- Check-SPOBrokenLink
copy($$('a').map(a => a.href).join('\\n'))\n
function Get-UrlStatusCode([string] $Url)\n{\n try\n {\n (Invoke-WebRequest -Uri $Url -UseBasicParsing -DisableKeepAlive).StatusCode\n }\n catch [Net.WebException]\n {\n [int]$_.Exception.Response.StatusCode\n }\n}\n\n\nforeach($line in Get-Content C:\\url.txt) \n{\n if($line -match $regex){\n\n $statusCode = Get-UrlStatusCode $line\n if($statusCode -le \"200\")\n {\n $line + \" => OK\"\n }\n else\n {\n $line + \" => Error\"\n }\n }\n}\n
"},{"location":"tools/dev/#static-search-library","title":"Static Search Library","text":""},{"location":"tools/dev/#public-api","title":"Public API","text":""},{"location":"tools/gatspy/","title":"Gatspy","text":""},{"location":"tools/gatspy/#blog-template","title":"Blog Template","text":" - https://github.com/RyanFitzgerald/devportfolio
- https://github.com/RyanFitzgerald/devblog
"},{"location":"tools/git/","title":"Git","text":""},{"location":"tools/git/#reference","title":"Reference","text":""},{"location":"tools/git/#cheatsheet","title":"Cheatsheet","text":""},{"location":"tools/git/#git-for-tenant-admins","title":"Git for Tenant Admins","text":" - Source Control for Microsoft 365 Tenant Admins
- Source Control for Microsoft 365 Tenant Admins: Part II
- Source Control for Microsoft 365 Tenant Admins: Part III
"},{"location":"tools/git/#learning","title":"Learning","text":" - Github Skills
- My GitHub cheat sheet for PnP contributions
- Git Fundamentals
- Git Real
"},{"location":"tools/git/#tips","title":"Tips","text":" - How to be more productive on GitHub
- How to write the perfect pull request
- Update a Severely Out of Date GitHub Repository Fork
- Merging 2 Different Git Repositories Without Losing your History
- Push your code into a git repo
- Keeping your fork up to date
- 7 Git Commands You May Not Know
"},{"location":"tools/git/#rebase-merge","title":"Rebase / Merge","text":" - An Introduction to Git Merge and Git Rebase: What They Do and When to Use Them
"},{"location":"tools/git/#commit-guidlines","title":"Commit Guidlines","text":" - How We Do It - Keeping a Clean Commit Log
- How to Write a Git Commit Message
"},{"location":"tools/git/#gitflow","title":"Gitflow","text":""},{"location":"tools/git/#deleted-file","title":"Deleted File","text":"git log --full-history -- src/path/to/file.js\n
"},{"location":"tools/git/#github","title":"GitHub","text":""},{"location":"tools/git/#github-actions","title":"GitHub Actions","text":" - Automate your CI/CD workflow using CLI for Microsoft 365 GitHub Actions
- Deploy SPFx solutions on multiple sites using GitHub Actions and Office 365 CLI
- Create GitHub actions for SPFx solution
- GitHub Actions + Power Automate + Teams
"},{"location":"tools/git/#git-cli","title":"Git CLI","text":""},{"location":"tools/hr/","title":"HR","text":""},{"location":"tools/hr/#office","title":"Office","text":" - Onboard new employees more effectively
"},{"location":"tools/hr/#sample-code","title":"Sample Code","text":" - msteams-sample-contoso-hr-talent-app
"},{"location":"tools/hugo/","title":"Hugo","text":""},{"location":"tools/hugo/#hosting","title":"Hosting","text":""},{"location":"tools/hugo/#deployment","title":"Deployment","text":" - Automated Hugo Releases With Azure Devops
- Set up Hugo with GitHub pages
"},{"location":"tools/image/","title":"Image","text":""},{"location":"tools/image/#header-banner","title":"Header Banner","text":" - Creating Banners for your SharePoint Online Pages
- Image Sizing\u00a0und Scaling
- Convert Modern SharePoint Page Banner Images to Base-64 using PowerShell
"},{"location":"tools/image/#tools","title":"Tools","text":" - colors picker
- http://dummyimage.com/
- http://makephotogallery.net/
- https://www.fotocollagen.de/
- http://wearekiss.com/spritepad
- http://www.colorzilla.com/gradient-editor/
- http://iconbench.com/
- http://www.drweb.de/magazin/fontello-icomoon-konkurrent-hilft-beim-zusammenstellen-eigener-iconfonts/
- http://www.imagemagick.org/script/index.php
- http://www.maschek.hu/imagemap/imgmap
- https://github.com/heyalexej/awesome-images
- http://www.screenpresso.com/de/
- http://free.zoner.com/
- https://appiconizer.com/
- http://gifmaker.me/
- https://www.base64-image.de/
- https://shields.io
- CSS clip path macker - clippy
- Responsive Image Breakpoints Generator
"},{"location":"tools/image/#image-file-types","title":"Image File Types","text":""},{"location":"tools/image/#videos","title":"Videos","text":" - Remotion - Create motion graphics in React
"},{"location":"tools/markdown/","title":"Markdown","text":""},{"location":"tools/markdown/#cheatsheet","title":"Cheatsheet","text":" - Markdown Cheatsheet
- Mastering Markdown
"},{"location":"tools/markdown/#tools","title":"Tools","text":" - VS.Code Extension: markdownlint
- Markdown Website Conversion
- Markdown Conversion
- devpen.io - Editor
- Markdown Plus - Editor
- WebSequenceDiagrams
- PlantText
- Word to Markdown Converter
- Creating markdown readme file
- Tables Generator
- markmap
"},{"location":"tools/markdown/#technical-writing-courses-for-engineers","title":"Technical Writing Courses for Engineers","text":" - Technical Writing Courses
"},{"location":"tools/mkdocs/","title":"MkDocs","text":""},{"location":"tools/mkdocs/#links","title":"Links","text":" - MkDocs
- Creating a beautiful documentation site with MkDocs
"},{"location":"tools/powerapps/","title":"PowerApps","text":" - Power Platform Basics - Layer
- Power Platform Basics - Project Activities
"},{"location":"tools/powerapps/#user-settings","title":"User Settings","text":" - Your Power Apps user settings are probably wrong
"},{"location":"tools/powerapps/#resources","title":"Resources","text":" - Microsoft Power Platform guidance documentation
- Power Platform Training Materials
- Power Wiki
- Microsoft Power Platform: Learning Resources
- A collection of awesome things regarding the Power Platform ecosystem
"},{"location":"tools/powerapps/#codeing-guide","title":"Codeing Guide","text":" - Naming convention for Power Automate
- Naming convention for Power Apps
"},{"location":"tools/powerapps/#frameworks","title":"Frameworks","text":" - PowerApps Tools
- 5 Power Platform projects developers must know!
- Creator kit overview
- Powercat creator kit
"},{"location":"tools/powerapps/#video-tutorials","title":"Video Tutorials","text":" - Youtube Microsoft PowerApps Channel
"},{"location":"tools/powerapps/#price","title":"Price","text":" - Power Apps and Power Automate licensing FAQs
- Power Apps pricing
- Licensing overview for Power Platform
- The comprehensive licensing guide to Microsoft Power Automate (formerly Flow) and Power Apps
- Power Platform Licensing QnA \u2013 Key takeaways
- Power Platform licensing, November 2021 updates
- Power Apps Pricing Explained
"},{"location":"tools/powerapps/#performance-connectors","title":"Performance / Connectors","text":" - Considerations for optimized performance in Power Apps
"},{"location":"tools/powerapps/#webparts","title":"WebParts","text":" - PowerApps web part for SharePoint Online
"},{"location":"tools/powerapps/#tipps","title":"Tipps","text":" - Tips for making your apps more maintainable
- Embed PowerApps in Modern SharePoint Online Site Page
- Application Lifecycle Management
- PowerApps source code editing for Canvas Apps
"},{"location":"tools/powerapps/#samples","title":"Samples","text":" - SharePoint PowerApps Solution samples
- SharePoint custom forms and automated business workflow
- Flow provisioning with azure function and PNP template
- SelfService Portal for Microsoft 365
"},{"location":"tools/powerapps/#localization","title":"Localization","text":" - Building multilingual apps in PowerApps
"},{"location":"tools/powerapps/#custom-forms","title":"Custom Forms","text":" - Getting started with custom forms in SharePoint build with PowerApps
- How to Customize SharePoint list forms with Power Apps - Beginners Tutorial
- Customize SharePoint Document Library Form using Power Apps
"},{"location":"tools/powerapps/#charts","title":"Charts","text":" - Canviz Power Apps Chart Components
"},{"location":"tools/powerapps/#create-documentation","title":"Create Documentation","text":""},{"location":"tools/powerappsportal/","title":"Powerapps Portal","text":" - Canvas vs. Model-Driven Apps
"},{"location":"tools/powerappsportal/#cds","title":"CDS","text":" - What is Common Data Service?
- What is the storage engine behind the scene for CDS?
"},{"location":"tools/powerappsportal/#start","title":"Start","text":" - Start Power Apps
- Admin Power Apps
"},{"location":"tools/powerappsportal/#dev-enviroment","title":"Dev Enviroment","text":" - Power Apps Community Plan
- How to Delete your Power Apps Community Plan Environment
"},{"location":"tools/powerappsportal/#einfuhrung","title":"Einf\u00fchrung","text":" - Fall into Power Apps Portals
- Gesamt\u00fcberblick
- Einf\u00fchrungs Videos
- Einf\u00fchrung Portal App Studio
- Power Apps Community
- Overview of the PowerApps Portals Management App
"},{"location":"tools/powerappsportal/#design","title":"Design","text":" - Bootstrap Samples
- Bootstrap Live Customizer
- MDBootstrap
"},{"location":"tools/powerappsportal/#devops","title":"DevOps","text":" - Power Platform Build Tools (1.0.13)
- XrmToolbox Portal Records Mover as a Console Application
- Portal Records Mover Console updates (finally!)
- PortalRecordsMoverConsole
"},{"location":"tools/powerappsportal/#liquid","title":"Liquid","text":" - Liquid Templates in PowerApps Portals
- Liquid template language reference
- Work with Liquid templates
- PowerApps Portals Branding
- Designing and Developing PowerApps Portals
- Creating public anonymous sites is back in O365
- Portals Community Call - August 20, 2020 - Power Apps Portals Theming
- Power Apps Portals: Portal Configuration
- Building a Multi-Brand Dynamics 365 Portal
"},{"location":"tools/powerappsportal/#coding-javscript-ajax","title":"Coding / Javscript / Ajax","text":" - (The Power Platform Community Conference - Nick Doelman)[https://youtu.be/udJ9gpCh6M0?t=30693]
"},{"location":"tools/powerappsportal/#login","title":"Login","text":" - Configure Azure AD B2C for PowerApps Portals
"},{"location":"tools/powerappsportal/#sharepoint","title":"SharePoint","text":" - Manage SharePoint documents
"},{"location":"tools/powerappsportal/#training-labs","title":"Training Labs","text":" - App in a Day
- Power Platform Training Materials
"},{"location":"training/course/","title":"Training","text":""},{"location":"training/course/#trainer","title":"Trainer","text":" - Why SharePoint Training is Important
"},{"location":"training/course/#o365","title":"O365","text":" - Customize the Learning Experience
- Microsoft 365 learning pathways
- Adding Partner Custom Content to Microsoft Learning Pathways Portals
"},{"location":"training/course/#ms-certification","title":"MS-Certification","text":" - Azure Solutions Architect vs. Azure Administrator
- Microsoft 365 Fundamentals - Cloud deployment models
"},{"location":"training/course/#news","title":"News","text":" - http://icansharepoint.com/how-to-stay-up-to-date-with-office-365/
"},{"location":"training/course/#programming","title":"Programming","text":" - https://guide.freecodecamp.org
"},{"location":"training/course/#typescript","title":"Typescript","text":""},{"location":"training/course/#online-course","title":"Online course","text":" - Pluralsight - sharepoint-framework-tooling
"},{"location":"training/course/#learning-tutorials","title":"Learning / Tutorials","text":" - OfficeDev: TrainingContent
- sp-dev-docs
- dev-office.com: getting-started-with-sharepoint-framework-tutorials
- techcommunity: Hidden-gems-at-Ignite-A-conference-guide-from-the-SharePoint
"},{"location":"training/learning/","title":"Learning","text":" - Microsoft Learn
- The 10 Best Ideas I Learned in 2022
- Web Development for Beginners - A Curriculum
- free-for.dev
- React lernen und verstehen
- ByteByteGoHq - system-design-101
"},{"location":"training/learning/#ms-certification","title":"MS Certification","text":" - Become Microsoft Certified
"},{"location":"training/learning/#architecture","title":"Architecture","text":" - Client-Side Architecture Basics - Guide
"},{"location":"training/learning/#web-developer","title":"Web Developer","text":" - Step by step guide to becoming a modern frontend developer in 2022
- Web Development for Beginners - A Curriculum
- Front-end Developer Handbook 2019
- Microsoft Frontend Bootcamp
- Full-stack Web Developer Plan - 2021
- The Modern JavaScript Tutorial
- freecodecamp
- devdocs.io
"},{"location":"training/learning/#react-learning-course","title":"React Learning Course","text":" - React roadmap
- besten-react-tutorials
- react-lernen
- https://www.udemy.com/react-the-complete-guide-incl-redux/?start=0
- https://www.udemy.com/react-redux/
- https://udilia.com/courses/learn-react-by-building-a-web-app
- https://tylermcginnis.com/reactjs-tutorial-a-comprehensive-guide-to-building-apps-with-react/
- frontendmasters - learn - react
- reactscreencasts
- React Wednesdays
- Designing React 17 Component
"},{"location":"training/learning/#lifecycle-methods","title":"Lifecycle methods","text":" - Interactive React Lifecycle Methods diagram
- SharePoint Framework Client-Side Webparts mit React
- React Best Practices
"},{"location":"training/learning/#manage-state-methods-in-react","title":"Manage state methods in react","text":" - How to Manage State in Your React Apps
"},{"location":"training/learning/#roadmap","title":"Roadmap","text":" - roadmap-react
- React Developer Roadmap
- The 2018 Web Developer Roadmap
- The 2018 React JS RoadMap
"},{"location":"training/learning/#reference","title":"Reference","text":" - awesome-react-components
- SurviveJS - React
- react-redux-links
- Clone Wars - Open source clones of popular sites
"},{"location":"training/learning/#blogs","title":"Blogs","text":" - overreacted - Personal blog by Dan Abramov
"},{"location":"training/learning/#styleguide","title":"Styleguide","text":" - Airbnb React/JSX Style Guide
- Airbnb JavaScript Style Guide
"},{"location":"training/learning/#cheatsheet","title":"Cheatsheet","text":" - react-redux-typescript-guide
- React TypeScript Cheatsheets
"},{"location":"training/learning/#patterns","title":"Patterns","text":" - React in patterns
- Design Patterns
- Modularizing React Applications with Established UI Patterns
"},{"location":"training/learning/#jsreact-vscode-extensions","title":"JS/React VS.Code Extensions","text":" - The Ultimate VSCode Setup for Front End/JS/React
"},{"location":"training/learning/#boilerplate","title":"Boilerplate","text":" - https://github.com/artofcodelabs/front-end-boilerplate
"},{"location":"training/learning/#lessons","title":"Lessons","text":" - The most important lessons I\u2019ve learned after a year of working with React
"},{"location":"training/learning/#frameworks","title":"Frameworks","text":" - react-grid-layout
- chartjs
- Rush
- fuzzy searching
- primereact
"},{"location":"training/learning/#state-management","title":"State management","text":" - TanStack Query - Server state
- jotai - UI state
- zustand - UI state
"},{"location":"training/learning/#tutorials","title":"Tutorials","text":" - React & Redux Tutorial - Build a Hacker News Clone
- React Portfolio Website Tutorial From Scratch \u2013 Build & Deploy React JS Portfolio Website
"},{"location":"training/learning/#multi-step-form","title":"Multi-Step Form","text":" - React Wizard Form
- React-Stepzilla
- Sample Form with React-Stepzilla
- React multi-page poll webpart -React Reusable Wizard component for SPFx
- How To Use Material UI Steppers In SharePoint Framework SPFx
- SPFx webpart form validation using React Formik
"},{"location":"training/learning/#errors","title":"Errors","text":" - Dealing with Undefined 'this' in React Event Handlers in a Performant Way
"},{"location":"training/learning/#hooks","title":"Hooks","text":" - How to use React hooks with the SharePoint Framework (SPFx)
- React Hooks - How to Use Them with the SharePoint Framework
- Using React hooks to globally share service scope between components
- Hooks FAQ
- SharePoint Framework and React hooks. Should I care?
- React, Hooks, and Office Development \u2013 Bringing It All Together
- Rooks - Collection of React hooks
"},{"location":"training/learning/#collection-of-hooks","title":"Collection of Hooks","text":" - Collection of React Hooks
- usehooks
- react-use
- React hook library for managing cart state
- React-shopping-cart
- Shopping-cart-react-typescript
"},{"location":"training/learning/#react-ecommerce-shops","title":"React eCommerce Shops","text":" - How to Build a Production Ready eCommerce Website with ReactJS, TailwindCSS, PlanetScale and Stripe
"},{"location":"training/ms-600/","title":"MS-600","text":""},{"location":"training/ms-600/#skills","title":"Skills","text":" - Exam MS-600: Building Applications and Solutions with Microsoft 365 Core Services\u2013Skills Measured
"},{"location":"training/ms-600/#graph-developing","title":"Graph Developing","text":" - An introduction to Microsoft Graph for developers - Part I - Getting started - October 2019
- An introduction to Microsoft Graph for developers - Part 2 \u2013 Advanced topics - November 2019 microsoft-identity-platform-developer-community-calloctober-2019)
- Microsoft 365 Developer - YouToube Videos
"},{"location":"training/ms-600/#microsoft-identity-plattform","title":"Microsoft identity plattform","text":" - Slides - Microsoft identity platform developer community call-October 2019
- Microsoft identity plattform for Developers
"},{"location":"training/must-read/","title":"Must read","text":""},{"location":"training/must-read/#guidance","title":"Guidance","text":" - office-365-development-patterns-and-practices-solution-guidance
"},{"location":"training/must-read/#spfx","title":"SPFx","text":" - FutureofSPDev-SPFxExtensions.pptx
- PnP Controls
"},{"location":"training/must-read/#office-fabric","title":"Office Fabric","text":" - https://github.com/guzmonne/office-ui-layout
- https://github.com/eoverfield/SP-Office-UI-Fabric
- Sample App
- DetailsList.Advanced.Example
"},{"location":"training/must-read/#office-fabric-react-redux","title":"Office Fabric / React / Redux","text":" - http://dattabase.com/office-fabric-reactredux-sp-starter-project/
- http://dattabase.com/office-fabric-ui-reactredux-part-1-5/
- https://github.com/gunjandatta/sp-react-redux
"},{"location":"training/must-read/#cloud","title":"Cloud","text":" - IaaS vs. PaaS: which one is best?
- What are the main cloud service models?
"},{"location":"training/must-read/#google-engineering","title":"Google Engineering","text":" - Site Reliability Engineering
"},{"location":"training/react-learning/","title":"React Learning","text":""},{"location":"training/react-learning/#react-documentation-tutorial","title":"React Documentation / Tutorial","text":" - react.dev
- create-react-app.dev
- react-dom-components-common
- react-lernen
- react-tutorial
"},{"location":"training/react-learning/#typescript","title":"Typescript","text":" - typescriptlang-handbook
- typescript-cheatsheets
- totaltypescript - React with TypeScript
"},{"location":"training/react-learning/#style-guide","title":"Style guide","text":" - airbnb-react
- airbnb-javascript
- typescript-styleguide
- Naming cheatsheet
- clean-code-javascript
"},{"location":"training/react-learning/#markdown","title":"Markdown","text":" - markdownguide-basic-syntax
- onvert-markdown-to-word-document
"},{"location":"training/react-learning/#vs-code-extension","title":"VS Code Extension","text":" - Typescript React code snippets
- Path Intellisense
- npm Intellisense
- Prettier - Code formatter
- Template String Converter
"},{"location":"training/react-learning/#markdown-to-word","title":"Markdown to Word","text":"pandoc -o output.docx -f markdown -t docx filename.md\n
"},{"location":"training/react-learning/#libs","title":"Libs","text":""},{"location":"training/react-learning/#creating-typescript-react-project","title":"Creating Typescript React Project","text":"cd C:\\ProgrammeBLS\\projects\nnpx create-react-app quickstart --template typescript\n
"},{"location":"training/react-learning/#jsx-tsx-converter","title":"JSX, TSX Converter","text":""},{"location":"training/react-learning/#recap","title":"Recap","text":""},{"location":"training/react-learning/#importing-and-exporting-components","title":"importing-and-exporting-components","text":""},{"location":"training/react-learning/#conditional-rendering","title":"conditional-rendering","text":" - In React, you control branching logic with JavaScript.
- You can return a JSX expression conditionally with an if statement.
- You can conditionally save some JSX to a variable and then include it inside other JSX by using the curly braces.
- In JSX, {cond ? : } means \u201cif cond, render , otherwise \u201d.
- In JSX, {cond && } means \u201cif cond, render , otherwise nothing\u201d.
"},{"location":"training/react-learning/#passing-props-to-a-component","title":"passing-props-to-a-component","text":" - To pass props, add them to the JSX, just like you would with HTML attributes.
- To read props, use the function Avatar({ person, size }) destructuring syntax.
- You can specify a default value like size = 100, which is used for missing and undefined props.
- You can forward all props with JSX spread syntax, but don\u2019t overuse it!
- Nested JSX like will appear as Card component\u2019s children prop.
- Props are read-only snapshots in time: every render receives a new version of props.
- You can\u2019t change props. When you need interactivity, you\u2019ll need to set state.
"},{"location":"training/react-learning/#react-function-components","title":"React Function components","text":" - what-are-react-pure-functional-components
- react-function-component
More Infos
- react-conditional-rendering
- the-ultimate-guide-to-conditional-rendering-in-react
"},{"location":"training/react-learning/#samples","title":"Samples","text":" - react-typescript-todomvc-2022
- bulletproof-react
- cypress-realworld-app
- Frontend Clean Architecture
- Awesome Codebases
- refine - React-based CRUD
- payloadcms
"},{"location":"training/react-learning/#samples-videos","title":"Samples Videos","text":" - Typescript Learning Videos
- React Typescript Video Tutorial
- Fullstack React GraphQL TypeScript Video Tutorial
"},{"location":"training/redux/","title":"Redux","text":""},{"location":"training/redux/#overview","title":"Overview","text":" - A reduced explanation of Redux(Reducers, Actions, and Store)
"},{"location":"training/redux/#connect-redux-to-spfx","title":"Connect Redux to SPFx","text":" - Connect React Redux to SharePoint Framework
- Using Redux Async Actions and ImmutableJS in SharePoint Framework
- Using React and Redux in SharePoint Framework (SPFx)
"},{"location":"training/redux/#samples","title":"Samples","text":" - SPFx webpart using Redux-Form library and React
- Webpart with React and Redux
"},{"location":"training/redux/#tips","title":"Tips","text":" - How do I change SPFx and Reactjs to SPFx React-Redux?
- Combine async redux actions in SPFx react components
"},{"location":"training/resume/","title":"Resume","text":""},{"location":"training/resume/#tips","title":"Tips","text":" - How to write a killer Software Engineering r\u00e9sum\u00e9
- https://www.careercup.com/resume
- How to Get 1% Better Every Day
- How To Write A Stand-Out Technical Resume
"},{"location":"training/bytebytego/architectural-styles/","title":"Architectural styles","text":"All images and links are coming from: https://blog.bytebytego.com/archive
"},{"location":"training/bytebytego/architectural-styles/#architectural-styles_1","title":"Architectural styles","text":""},{"location":"training/bytebytego/how-git-works/","title":"How Git works","text":"All images and links are coming from: https://blog.bytebytego.com/archive
"},{"location":"training/bytebytego/how-git-works/#how-git-works_1","title":"How Git works","text":"Git is a distributed version control system. Every developer maintains a local copy of the main repository and edits and commits to the local copy. The commit is very fast because the operation doesn\u2019t interact with the remote repository. If the remote repository crashes, the files can be recovered from the local repositories.
"},{"location":"training/bytebytego/ship-code/","title":"Ship Code","text":"All images and links are coming from: https://blog.bytebytego.com/archive
"},{"location":"training/bytebytego/ship-code/#how-companies-ship-code-to-production","title":"How Companies ship code to production","text":"Step 1: The process starts with a product owner creating user stories based on requirements.
Step 2: The dev team picks up the user stories from the backlog and puts them into a sprint for a two-week dev cycle.
Step 3: The developers commit source code into the code repository Git.
Step 4: A build is triggered in Jenkins. The source code must pass unit tests, code coverage threshold, and gates in SonarQube.
Step 5: Once the build is successful, the build is stored in artifactory. Then the build is deployed into the dev environment.
Step 6: There might be multiple dev teams working on different features. The features need to be tested independently, so they are deployed to QA1 and QA2.
Step 7: The QA team picks up the new QA environments and performs QA testing, regression testing, and performance testing.
Steps 8: Once the QA builds pass the QA team\u2019s verification, they are deployed to the UAT environment.
Step 9: If the UAT testing is successful, the builds become release candidates and will be deployed to the production environment on schedule.
Step 10: SRE (Site Reliability Engineering) team is responsible for prod monitoring.
"},{"location":"training/bytebytego/url-into-browser/","title":"Browser URL","text":"All images and links are coming from: https://blog.bytebytego.com/archive
"},{"location":"training/bytebytego/url-into-browser/#what-happens-when-you-type-a-url-into-a-browser","title":"What happens when you type a URL into a browser","text":"Step 1: The user enters a URL (www. bytebytego. com) into the browser and hits Enter. The first thing we need to do is to translate the URL to an IP address. The mapping is usually stored in a cache, so the browser looks for the IP address in multiple layers of cache: the browser cache, OS cache, local cache, and ISP cache. If the browser couldn\u2019t find the mapping in the cache, it will ask the DNS (Domain Name System) resolver to resolve it.
Step 2: If the IP address cannot be found at any of the caches, the browser goes to DNS servers to do a recursive DNS lookup until the IP address is found.
Step 3: Now that we have the IP address of the server, the browser sends an HTTP request to the server. For secure access of server resources, we should always use HTTPS. It first establishes a TCP connection with the server via TCP 3-way handshake. Then it sends the public key to the client. The client uses the public key to encrypt the session key and sends to the server. The server uses the private key to decrypt the session key. The client and server can now exchange encrypted data using the session key.
Step 4: The server processes the request and sends back the response. For a successful response, the status code is 200. There are 3 parts in the response: HTML, CSS and Javascript. The browser parses HTML and generates DOM tree. It also parses CSS and generates CSSOM tree. It then combines DOM tree and CSSOM tree to render tree. The browser renders the content and display to the user.
HTTP Status Codes Explained In 5 Minutes
A Crash Course in DNS (Domain Name System)
"},{"location":"viva/viva-connections/","title":"Viva Connections","text":""},{"location":"viva/viva-connections/#issues","title":"Issues","text":""},{"location":"viva/viva-connections/#license-pricing","title":"License / Pricing","text":""},{"location":"viva/viva-connections/#overview","title":"Overview","text":" - Video - Your intranet is now in Microsoft Teams with Microsoft Viva Connections
- Video - Getting started on deploying Viva Connections for Microsoft Teams desktop
- What is Microsoft Viva Connections
"},{"location":"viva/viva-connections/#install","title":"Install","text":" - Microsoft Viva: An Administrator\u2019s View
- Add Viva Connections for Microsoft Teams desktop
- Create Viva Connections App Using PnP PowerShell-Publish-PnPCompanyApp
- How to create and Install the Viva Connections application from O365-CLI
"},{"location":"viva/viva-connections/#viva-connection-experience","title":"Viva Connection Experience","text":" - Set up Viva Connections in the Microsoft 365 admin center
- Introducing Multiple Viva Connections Experiences for Your Organization
"},{"location":"viva/viva-connections/#dashboard","title":"Dashboard","text":" - Create a Viva Connections dashboard and add cards
"},{"location":"viva/viva-sales/","title":"Viva Sales","text":""},{"location":"viva/viva-sales/#architecture","title":"Architecture","text":""},{"location":"viva/viva-topics/","title":"Viva Topics","text":""},{"location":"viva/viva-topics/#overview","title":"Overview","text":" - Introduction to Viva Topics
- Build an ever-growing Corporate Knowledge Base with Microsoft Viva Topics : An Overview
"},{"location":"viva/viva-topics/#learning","title":"Learning","text":" - Project Cortex - classifiers
- Project Cortex - entity extractors
- Syntex-Tips-document-understanding-forms-processing
- Syntex on a page - December 2022
- Understanding classifiers in Microsoft Syntex and Microsoft Purview
- Microsoft Syntex: An AI-Powered SharePoint Content Service in Microsoft 365
(Source: @ChrisO_Brien)
## Tools
- Microsoft 365 Assessment tool
"}]}
\ No newline at end of file
diff --git a/sitemap.xml.gz b/sitemap.xml.gz
index ddfad04557f8f7e61e7c57e9d61366dc8a16c540..99589183f1ef5dcd4cfa95d651ceddc4453b97d7 100755
GIT binary patch
delta 14
VcmZo+YGGoN@8;kLUNVvG9{?Jq1X%z8
delta 14
VcmZo+YGGoN@8;kTSTK?89{?Ff1QGxM
diff --git a/viva/viva-connections/index.html b/viva/viva-connections/index.html
index 3d63c349..619d494d 100755
--- a/viva/viva-connections/index.html
+++ b/viva/viva-connections/index.html
@@ -1696,6 +1696,13 @@