Microsoft 365 PnP Blog articles https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/bg-p/Microsoft365PnPBlog Microsoft 365 PnP Blog articles Mon, 02 Aug 2021 22:13:11 GMT Microsoft365PnPBlog 2021-08-02T22:13:11Z Microsoft 365 Dev Podcast - SPFx, Azure Functions and PnP Re-Usable controls with Joel Rodrigues https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-dev-podcast-spfx-azure-functions-and-pnp-re-usable/ba-p/2597804 <P>Joel Rodrigues joins Paul to talk about his projects using SPFx and Azure Functions, as well as his role as a maintainer of the PnP Re-Usable controls repository.</P> <P><IFRAME src="https://www.podbean.com/player-v2/?i=txdvy-10a49be-pb&amp;from=pb6admin&amp;share=0&amp;download=0&amp;rtl=0&amp;fonts=Courier%20New&amp;skin=1&amp;font-color=&amp;btn-skin=6" width="100%" height="150" scrolling="no" style="border: none; min-width: min(100%, 430px);" title="SPFx, Azure Functions and PnP Re-Usable controls with Joel Rodrigues" allowtransparency="true" data-name="pb-iframe-player"></IFRAME></P> <P>Listen to the show here:&nbsp; <A href="#" target="_blank" rel="noopener">SPFx, Azure Functions and PnP Re-Usable controls with Joel Rodrigues (m365devpodcast.com)</A></P> <P>&nbsp;</P> <H2>Links from the show:</H2> <UL> <LI><A href="#" target="_blank" rel="noopener">Work with Azure Functions Proxies</A></LI> <LI><A href="#" target="_blank" rel="noopener">Authentication and authorization in Azure App Service and Azure Functions</A></LI> <LI><A href="#" target="_blank" rel="noopener">PnP Reusable Controls</A></LI> <LI><A href="#" target="_blank" rel="noopener">Joel on Twitter</A></LI> <LI><A href="#" target="_blank" rel="noopener">Joel's blog</A></LI> </UL> <H2>Microsoft News</H2> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/office-add-in-development-community-pnp-july-2021-update/ba-p/2576650?WT.mc_id=M365-MVP-4025164" target="_blank" rel="noopener">Office Add-in Development Community (PnP) – July 2021 update</A></LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-teams-blog/introducing-the-broadcast-development-kit-for-microsoft-teams/ba-p/2568670?WT.mc_id=M365-MVP-4025164" target="_blank" rel="noopener">Introducing the broadcast development kit for Microsoft Teams</A></LI> <LI><A href="#" target="_blank" rel="noopener">Secure Open API (Swagger) calls with Azure Active Directory</A></LI> </UL> <H2>Community Links</H2> <UL> <LI><A href="#" target="_blank" rel="noopener">Using VS Code Teams Toolkit Extension for Teams App Development</A></LI> <LI><A href="#" target="_blank" rel="noopener">Secretless applications: use Azure Identity SDK to access data with a Managed Identity</A></LI> <LI><A href="#" target="_blank" rel="noopener">Get with the times &amp; ditch TSLint in favor of ESLint in SharePoint Framework projects</A></LI> </UL> Mon, 02 Aug 2021 13:35:26 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-dev-podcast-spfx-azure-functions-and-pnp-re-usable/ba-p/2597804 paulschaeflein 2021-08-02T13:35:26Z CLI for Microsoft 365 v3.12 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/cli-for-microsoft-365-v3-12/ba-p/2589506 <H2><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="banner-cli-m365.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298556i721EBA9B05939597/image-size/large?v=v2&amp;px=999" role="button" title="banner-cli-m365.png" alt="CLI for Microsoft 365 3.12" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">CLI for Microsoft 365 3.12</span></span></SPAN></H2> <P>&nbsp;</P> <H2><SPAN>Manage Microsoft 365 and SharePoint Framework projects on any platform</SPAN></H2> <DIV>&nbsp;</DIV> <DIV><SPAN>CLI for Microsoft 365 is a cross-platform CLI that allows you to manage various configuration settings of Microsoft 365 and SharePoint Framework projects no matter which operating system or shell you use.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV><SPAN>While building solutions for Microsoft 365 expands beyond the Windows operating system, managing many of the platform settings is possible only through PowerShell on Windows. As more and more users work on non-Windows machines, it’s inconvenient for them to have to use a Windows virtual machine to configure their tenants. With the CLI for Microsoft 365, you can configure your tenant no matter which operating system you use. Additionally, using CLI for Microsoft 365, you can manage your SharePoint Framework projects.</SPAN></DIV> <DIV>&nbsp;</DIV> <H2>New version of CLI for Microsoft 365 – v3.12</H2> <DIV>&nbsp;</DIV> <DIV> <DIV><SPAN>Following our monthly release cadence, we’ve released a new version of the CLI for Microsoft 365 with some new capabilities. Here are a few of the most noteworthy additions.</SPAN></DIV> <DIV>&nbsp;</DIV> <H3 id="toc-hId-1543689684"><SPAN>New Commands</SPAN></H3> <P>&nbsp;</P> <P><SPAN>We’ve continued improving the CLI, adding new commands and we've introduced in the previous version.</SPAN></P> <P>&nbsp;</P> <H4><SPAN>Create a bucket in a Microsoft Planner plan</SPAN></H4> <P>&nbsp;</P> <P><SPAN>We have added a new command that gives you the ability to create new buckets in your Microsoft Planner Plans.</SPAN></P> <P>&nbsp;</P> <P><SPAN>To create a new bucket in a given plan, execute:</SPAN></P> <P>&nbsp;</P> <PRE>m365 planner bucket add --name <SPAN class="s2">"My Planner Bucket"</SPAN> --planName <SPAN class="s2">"My Planner Plan"</SPAN> --ownerGroupName <SPAN class="s2">"My Planner Group"</SPAN></PRE> <P>&nbsp;</P> <H4><SPAN>Retrieve buckets from a&nbsp;Microsoft Planner plan</SPAN></H4> <P>&nbsp;</P> <P><SPAN>We have added a new command that gives you the ability list the existing buckets in a given Microsoft Planner Plan.</SPAN></P> <P>&nbsp;</P> <P><SPAN>To retrieve information about buckets in a given plan, execute:</SPAN></P> <P>&nbsp;</P> <PRE>m365 planner bucket list --planName <SPAN class="s2">"My Plan"</SPAN> --ownerGroupName <SPAN class="s2">"My Group"<BR /></SPAN></PRE> <P>&nbsp;</P> <H4>Retrieve a list of Microsoft Planner plans</H4> <P>&nbsp;</P> <P><SPAN>We have added a new command that gives you the ability list the Microsoft Planner plans associated with a given Microsoft 365 Group.</SPAN></P> <P>&nbsp;</P> <P><SPAN>To retrieve information about the plans in a given group, execute:</SPAN></P> <P>&nbsp;</P> <PRE>m365 planner plan list --ownerGroupName <SPAN class="s2">"My Planner Group"</SPAN></PRE> <P>&nbsp;</P> <H4>List OneDrive sites</H4> <P>&nbsp;</P> <P><SPAN>We have added a new command that gives you the ability to list information about all of the OneDrive sites in a Microsoft 365 tenant.</SPAN></P> <P>&nbsp;</P> <P><SPAN>To retrieve a list of OneDrive sites, execute:</SPAN></P> <P>&nbsp;</P> <PRE>m365 onedrive list</PRE> <P>&nbsp;</P> <H4>cli doctor</H4> <P>&nbsp;</P> <P>We have introduced a new command that to make it easier for you to provide&nbsp;<SPAN>all the necessary diagnostic information needed to triage and debug CLI issues without exposing any security-sensitive details.</SPAN></P> <P>&nbsp;</P> <P><SPAN>To retrieve&nbsp;diagnostic information about the current environment, execute:</SPAN></P> <P>&nbsp;</P> <PRE>m365 cli doctor</PRE> <P>&nbsp;</P> <DIV> <H3 id="toc-hId-183572944"><SPAN>Changes</SPAN></H3> <DIV>&nbsp;</DIV> <DIV><SPAN>We’ve continued improving the CLI, building upon the changes we’ve introduced in the previous version.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV> <DIV> <DIV> <H4>Upgraded commands to use Microsoft Graph v1.0 endpoints</H4> </DIV> </DIV> <DIV> <DIV>&nbsp;</DIV> <DIV>When new capabilities are added to the Microsoft Graph they are usually added to the beta endpoint, this is to give developers early access to new capabilities however this is based on an assumption that these endpoints are subject to change until they reach general availability where they are added to the v1.0 endpoint.</DIV> <DIV>&nbsp;</DIV> </DIV> </DIV> <DIV> <DIV>Sometimes when we add new commands to the CLI for Microsoft 365 we make use of beta endpoints to add new capabilities to the CLI, for example, we recently added several Microsoft To Do commands that used the beta endpoints when they were initially released.</DIV> <DIV>&nbsp;</DIV> <DIV>Over time however these endpoints have matured, reaching general availability and are now available in the v1.0 endpoint, therefore we have updated our code to reflect this.</DIV> <DIV>&nbsp;</DIV> <DIV>We have updated the following commands in this version of the CLI to use v1.0 endpoints.</DIV> </DIV> <UL> <LI><SPAN>teams user app list</SPAN></LI> <LI><SPAN>teams channel get</SPAN></LI> </UL> <P>&nbsp;</P> <H4>Project upgrade support for latest SharePoint Framework developer preview</H4> <P>&nbsp;</P> <P>The&nbsp;<EM>spfx project upgrade</EM> command has been updated to support the latest developer preview versions.</P> <P>&nbsp;</P> <P><SPAN>Starting with SharePoint Framework (SPFx) v1.12, developers can try preview releases of new SPFx generator packages as part of a developer preview.</SPAN></P> <P>&nbsp;</P> <P>This release adds the ability to upgrade SharePoint Framework projects to version 1.13.0-beta.15 which previews Viva Connections extensibility with Adaptive Card Extensions.</P> <P>&nbsp;</P> <P>To generate instructions for upgrading to the latest preview version, execute:</P> <P>&nbsp;</P> <PRE>m365 spfx project upgrade --preview</PRE> <P>&nbsp;</P> <H4><SPAN>Retrieve Associated Groups of a site&nbsp;</SPAN></H4> <P>&nbsp;</P> <P><SPAN>The <EM>spo web get</EM> command can be used to return information about a given site,&nbsp;previously this did not include returning information about its associated groups such as Owners, Members and Visitors groups however in this release we have updated the command to&nbsp;return this information.</SPAN></P> <P>&nbsp;</P> <P><SPAN>To retrieve&nbsp;information about a given site&nbsp;along with it's associated groups, execute:</SPAN></P> <P>&nbsp;</P> <PRE>m365 spo web get --webUrl https://contoso.sharepoint.com/subsite --withGroups</PRE> <H3 id="toc-hId--2071219242"><SPAN>New script samples</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>CLI for Microsoft 365 is a great tool both for quick adjustments to the configuration of your Microsoft 365 tenant as well as automating more complex tasks. Because CLI for Microsoft 365 is cross-platform you can use it on any OS and in any shell. To help you get started using the CLI for Microsoft 365 for automation scenarios, we started gathering some </SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer"><SPAN>sample scripts</SPAN></A><SPAN>.</SPAN></DIV> <P>&nbsp;</P> <DIV><SPAN>If you have any scripts that you use frequently, please </SPAN><A href="#" target="_self" rel="noreferrer"><SPAN>share</SPAN></A><SPAN>&nbsp;them with us so that we can learn more about the common automation scenarios.</SPAN></DIV> <DIV>&nbsp;</DIV> <H4><SPAN>Add multiple lists in multiple sites</SPAN></H4> <P>&nbsp;</P> <DIV>When provisioning lists in SharePoint Online, sometimes we want to replicate the same list across multiple site collections.</DIV> <DIV>&nbsp;</DIV> <DIV><SPAN>This <A href="#" target="_self" rel="nofollow noreferrer">script</A> will create multiple lists in multiple sites, including also mapping a content type to the created lists.</SPAN></DIV> <DIV>&nbsp;</DIV> <H4><SPAN>Identify failed Site Designs executions</SPAN></H4> <DIV>&nbsp;</DIV> <DIV><SPAN>When people in your organization create new SharePoint sites, you often need to ensure some level of consistency. For example, you may need proper branding and theming applied to each new site when they are created, Site Designs enable to run scripts and code&nbsp;automatically on the creation of those sites.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV><SPAN>This <A href="#" target="_self">script</A> will&nbsp;iterate through all site collections in the tenant and returns a list of site design executions that have errors.</SPAN></DIV> <DIV>&nbsp;</DIV> <H4>List number of files in all lists and folders in a site</H4> <DIV>When carrying out migrations it is useful to understand the number of files in a given site and where they are before moving files to a new location.</DIV> <DIV>&nbsp;</DIV> <DIV>This <A href="#" target="_self">script</A> will iterate over all lists, folders and subfolders in a given site and return the item count for each.</DIV> <DIV>&nbsp;</DIV> <DIV> <H3 id="toc-hId-962667237"><SPAN>Contributors</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>This release wouldn’t be possible without the help of (in alphabetical order)</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV> <UL> <LI><A href="#" target="_self"><SPAN>Aakash Bhardwaj</SPAN></A></LI> <LI><A href="#" target="_self" rel="noopener noreferrer"><SPAN>Vipul Kelkar</SPAN></A></LI> <LI><A href="#" target="_self"><SPAN>Sudharsan&nbsp;Kesavanarayanan</SPAN></A></LI> <LI><A href="#" target="_self" rel="noopener noreferrer"><SPAN>Shantha Kumar</SPAN></A></LI> <LI><A href="#" target="_self"><SPAN>Patrick Lamber</SPAN></A></LI> <LI><SPAN><A href="#" target="_self" rel="noopener noreferrer">Waldek Mastykarz</A></SPAN></LI> <LI><A href="#" target="_self"><SPAN>Arjun Menon</SPAN></A></LI> <LI><A href="#" target="_self" rel="noopener noreferrer"><SPAN>Abderahman Moujahid</SPAN></A></LI> <LI><SPAN><A href="#" target="_self" rel="noopener noreferrer">Albert Jan-Schot</A></SPAN></LI> <LI><A href="#" target="_self"><SPAN>Dipen Shah</SPAN></A></LI> <LI><A href="#" target="_self" rel="noopener noreferrer"><SPAN>Rabia Williams</SPAN></A></LI> </UL> <P>&nbsp;</P> <P><SPAN>Thank you all for the time you chose to spend on the CLI for Microsoft 365 and your help to advance it!</SPAN></P> <P>&nbsp;</P> <H2 id="toc-hId--844787226"><SPAN>Work in progress</SPAN></H2> <P>&nbsp;</P> <DIV><SPAN>Here are some things that we’re currently working on.</SPAN></DIV> <P>&nbsp;</P> <H3 id="toc-hId-1771808326"><SPAN>More commands, what else</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>Microsoft 365 is evolving and new capabilities are being released every day. With CLI for Microsoft 365, we aim to help you manage your tenant on any platform in a consistent way, no matter which part of Microsoft 365 you interact with. While we keep adding new commands to CLI for Microsoft 365 each release, we still barely scratched the surface with what’s possible in Microsoft 365. In the upcoming versions of the CLI for Microsoft, you can expect us to add more commands across the different workloads in Microsoft 365.</SPAN></DIV> <DIV>&nbsp;</DIV> <H3 id="toc-hId--1843100600"><SPAN>Updating Azure AD apps</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>Recently, we introduced a command to easily create Azure AD app registrations. Because they're backbone of every app you'd build on Microsoft 365, we think you should be able to create them as easily as possible. So with CLI for Microsoft 365, you can create a fully configured Azure AD app for the most common scenarios with just one line of code.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV><SPAN>We're currently working on adding support for updating Azure AD app registration which will be helpful for example when building apps for Microsoft Teams. Stay tuned!</SPAN></DIV> <DIV>&nbsp;</DIV> <H3 id="toc-hId-644412233"><SPAN>Script examples</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>In every release of the CLI for Microsoft 365, we introduce new commands for managing Microsoft 365. With over 350 commands across the different Microsoft 365 services, the CLI for Microsoft 365 has become a powerful tool, not just for managing your tenant but also for automating your daily work.</SPAN></DIV> <P>&nbsp;</P> <DIV><SPAN>We’d love to show you how you can use the CLI for Microsoft 365 to build automation scripts in PowerShell Core and Bash. If you have any scripts using SPO or PnP PowerShell that you use frequently, please share them with us so that we can learn more about the common automation scenarios.</SPAN></DIV> <DIV>&nbsp;</DIV> <H3 id="toc-hId--1163042230"><SPAN>'ensure' commands</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>Recently, we shipped our first ensure command - an <A href="#" target="_self" rel="nofollow noopener noreferrer">easy way to help you that a site with specific settings exists</A>. If it doesn't, CLI creates it for you, if it does, CLI ensures it has the right properties. All in one line of code. We'd love to hear from you how you like it and if it's something you'd like us to implement for other commands as well.</SPAN></DIV> <P>&nbsp;</P> <H2 id="toc-hId-1195387884"><SPAN>Try it today</SPAN></H2> <P>&nbsp;</P> <DIV><SPAN>Get the latest release of the CLI for Microsoft 365 from npm by executing:</SPAN></DIV> <P>&nbsp;</P> <DIV><LI-CODE lang="bash">npm i -g @pnp/cli-microsoft365</LI-CODE></DIV> <P>&nbsp;</P> <DIV><SPAN>Alternatively, you can get the latest release from Docker by executing:</SPAN></DIV> <P>&nbsp;</P> <DIV><LI-CODE lang="bash">docker run --rm -it m365pnp/cli-microsoft365:latest</LI-CODE></DIV> <P>&nbsp;</P> <DIV><SPAN>If you need more help getting started or want more details about the commands, the architecture or the project, go to </SPAN><A href="#" target="_self" rel="noopener noreferrer"><SPAN>aka.ms/cli-m365</SPAN></A><SPAN>. </SPAN></DIV> <P>&nbsp;</P> <DIV><SPAN>If you see any room for improvement, please, don’t hesitate to reach out to us either on </SPAN><A href="#" target="_self" rel="noopener noreferrer"><SPAN>GitHub</SPAN></A><SPAN>&nbsp;or </SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer"><SPAN>twitter</SPAN></A><SPAN>.</SPAN></DIV> </DIV> </DIV> </DIV> </DIV> Fri, 30 Jul 2021 09:28:10 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/cli-for-microsoft-365-v3-12/ba-p/2589506 garrytrinder 2021-07-30T09:28:10Z SharePoint Framework Community Call – 29th of July, 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-29th-of-july-2021/ba-p/2481295 <P>SharePoint Framework Special Interest Group (SIG) bi-weekly community call recording from July 29th is now available from the Microsoft 365 Community YouTube channel at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp-videos</A>. You can use SharePoint Framework for building solutions for<SPAN>&nbsp;</SPAN><STRONG>Microsoft Teams</STRONG><SPAN>&nbsp;</SPAN>and for<SPAN>&nbsp;</SPAN><STRONG>SharePoint</STRONG><SPAN>&nbsp;</SPAN>Online.</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/BMXZlYtyKp4" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><STRONG>Call summary:</STRONG></P> <P>&nbsp;</P> <P>Summer and Fall community call schedule updates reviewed.&nbsp; Register today for August events on <A href="#" target="_blank" rel="noopener">Sharing-is-caring</A>.&nbsp; &nbsp;<A href="#" target="_blank" rel="noopener">PnP Recognition Program</A> announced.&nbsp; &nbsp;<A href="#" target="_blank" rel="noopener">Viva Connections public developer preview!</A> &nbsp;&nbsp;<STRONG>SharePoint Framework v1.13 beta</STRONG> released earlier this week with preview on the Viva Connections extensibility tooling. &nbsp;</P> <P>&nbsp;</P> <P><STRONG>Latest project updates include:&nbsp;</STRONG><SPAN>&nbsp;</SPAN>(<STRONG>Bold<SPAN>&nbsp;</SPAN></STRONG>indicates update from previous report 2 weeks ago)&nbsp;</P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="33.333333333333336%" height="30px"><STRONG>PnP Project</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>Current version</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>Release/Status</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">SharePoint Framework (SPFx)</TD> <TD width="33.333333333333336%" height="30px">v1.12.1,&nbsp;<STRONG>v1.13 beta</STRONG>&nbsp;</TD> <TD width="33.333333333333336%" height="30px">v1.13.0 Beta end of July</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">PnPjs Client-Side Libraries</TD> <TD width="33.333333333333336%" height="30px">v2.7.0</TD> <TD width="33.333333333333336%" height="30px"> <P><STRONG>2.8.0 scheduled for Aug&nbsp;13,&nbsp;</STRONG></P> <P>v3.0.0 developments underway</P> </TD> </TR> <TR> <TD width="33.333333333333336%" height="57px">CLI for Microsoft 365</TD> <TD width="33.333333333333336%" height="57px">v3.12.0 Preview,&nbsp;v4.0.0 Preview&nbsp;</TD> <TD width="33.333333333333336%" height="57px">v4.0.0 to release this fall</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">Reusable SPFx React Controls</TD> <TD width="33.333333333333336%" height="30px">v2.8.0 (SPFx v1.11), v3.2.1 (SPFx v1.12.1)</TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">Reusable SPFx React Property Controls</TD> <TD width="33.333333333333336%" height="30px">v2.7.0 (SPFx v1.11), v3.2.0 (SPFx v1.12.1)</TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">PnP SPFx Generator</TD> <TD width="33.333333333333336%">v1.16.0</TD> <TD width="33.333333333333336%">v1.17.0 on the way</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">PnP Modern Search</TD> <TD width="33.333333333333336%" height="30px">v4.3.0 &amp; v3.21.0</TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>There was 1 <STRONG>PnP SPFx extension </STRONG>and 4<STRONG> PnP web part samples</STRONG> delivered in the last 2 weeks as well. &nbsp;Nice work!&nbsp;&nbsp;&nbsp; The host of this call is <A href="#" target="_blank" rel="noopener">Patrick Rodgers</A> (Microsoft) | @mediocrebowler.&nbsp; Q&amp;A takes place in chat throughout the call.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="PnP-Calls-TogetherMode-LowResolution.gif" style="width: 800px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/299353iFCDF3C257BCC9093/image-size/large?v=v2&amp;px=999" role="button" title="PnP-Calls-TogetherMode-LowResolution.gif" alt="PnP-Calls-TogetherMode-LowResolution.gif" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Yep!&nbsp; Nice wave action.&nbsp; Great seeing you this week.&nbsp; Looking forward to seeing you again in August.&nbsp; &nbsp; Data for Hugo:&nbsp; 24 left-handed wavers, 4 right-handed wavers, 2 bi-handed wavers and 4 non-handed wavers.&nbsp; But wait, now there's 35 wavers!&nbsp; &nbsp;Data corruption.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Actions:</STRONG></P> <UL> <LI>Register for Sharing is Caring Events: <UL> <LI>First Time Contributor Session –&nbsp;<A href="#" target="_blank" rel="noopener">August 31<SUP>st</SUP></A> (EMEA, APAC &amp; US friendly times available)</LI> <LI>Community Docs Session –&nbsp;<A href="#" target="_blank" rel="noopener">August 23<SUP>rd</SUP></A></LI> <LI>PnP – SPFx Developer Workstation Setup – <A href="#" target="_blank" rel="noopener">August 24<SUP>th</SUP></A>&nbsp; &nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">August 25<SUP>th</SUP></A></LI> <LI>Ask Me Anything – Power Platform Development &amp; Samples – <A href="#" target="_blank" rel="noopener">September 28<SUP>th</SUP></A></LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">August 30<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – TBS</LI> <LI>Maturity Model Practitioners – <A href="#" target="_blank" rel="noopener">August 17<SUP>th</SUP></A> and every 3<SUP>rd</SUP> Tuesday of month, 7:00am PT</LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> <LI>PnP Buddy System - <A href="#" target="_blank" rel="noopener">Request a Buddy</A></LI> </UL> </LI> <LI>Download the recurrent invite for this call –&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spdev-spfx-call</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Demos:</STRONG></P> <UL> <LI> <P><STRONG>Hero Web Part and Tiles V2 Web Part</STRONG> – <STRONG>Tiles v2</STRONG> – displays a group of responsive flex tiles that can be configured to navigate to different URLs. &nbsp;&nbsp;<STRONG>REACT Hero</STRONG> – provides a customizable Hero webpart that displays 5 images in a stand-alone carousel view. &nbsp;&nbsp;Both web parts use a stored collection from PnP&nbsp;PropertyFieldCollectionData&nbsp;control and custom field rendering control, file/icon pickers and fluid flex layout. &nbsp;&nbsp;Site theme selectable in Tiles v2. &nbsp;Thorough code walkthrough.</P> </LI> <LI> <P><STRONG>Exposing business data in Viva Connections or in SharePoint with custom diagram web parts</STRONG>​ – or in Microsoft Teams.&nbsp; React diagraming web parts updated to v1.13.&nbsp; Updates accommodate Dynamic Data Connections, full bleed, handling section color changes, Viva Connections, and to search content in web part. &nbsp;Web parts leverage libraries/code from Mermaid, flowchart.js, and js-sequence-diagrams along with the Monaco Editor and PnP markdown property pane to both generate diagrams and to overlay text on them.</P> </LI> </UL> <P>&nbsp;</P> <DIV><STRONG>SPFx extension samples:&nbsp; (<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spfx-extensions</A>)&nbsp;</STRONG> <P>&nbsp;</P> <UL> <LI><STRONG><A href="#" target="_blank" rel="noopener">Machine Translations</A> - </STRONG><A href="#" target="_blank" rel="noopener">Michał Romiszewski</A>&nbsp;|&nbsp;@romiszewski</LI> </UL> </DIV> <P><STRONG>SPFx web part samples:&nbsp; (<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spfx-webparts</A>)&nbsp;</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG><A href="#" target="_blank" rel="noopener">Datatable</A></STRONG> - <A href="#" target="_blank" rel="noopener">Abderahman Moujahid</A>&nbsp;|&nbsp;@Abderahman88</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Hero Web Part</A></STRONG> - <A href="#" target="_blank" rel="noopener">Omar El-Anis</A>&nbsp;|&nbsp;@omarelanis</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Cross-Device Data</A></STRONG>&nbsp;(link pending) - <A href="#" target="_blank" rel="noopener">Giuliano De Luca</A>&nbsp;|&nbsp;<LI-USER uid="1038317"></LI-USER></LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Diagrams</A></STRONG>&nbsp;(link pending) - <A href="#" target="_blank" rel="noopener">Hugo Bernier</A>&nbsp;|&nbsp;@bernierh</LI> </UL> <P>Thank you for your great work.&nbsp; Samples are often showcased in Demos.&nbsp; &nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Agenda items:</STRONG></P> <UL> <LI>SharePoint Framework -&nbsp;<SPAN><A href="#" target="_self">Patrick Rodgers</A> (Microsoft) @mediocrebowler</SPAN>&nbsp;-<SPAN>&nbsp;<A href="#" target="_self">7:16</A></SPAN></LI> <LI>PnPjs Client-Side Libraries -<SPAN> <A href="#" target="_self">Patrick Rodgers</A> (Microsoft) @mediocrebowler&nbsp;</SPAN>–<SPAN>&nbsp;<A href="#" target="_self">10:11</A></SPAN></LI> <LI>CLI for Microsoft 365 - <SPAN><A href="#" target="_self">Patrick Rodgers</A> (Microsoft) @mediocrebowler</SPAN>&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">11:47</A></SPAN></LI> <LI>PnP SPFx Controls -<SPAN> <A href="#" target="_self">Patrick Rodgers</A> (Microsoft) @mediocrebowler&nbsp;</SPAN>–<SPAN>&nbsp;<A href="#" target="_self">13:08</A></SPAN></LI> <LI>PnP Modern Search -<SPAN> <A href="#" target="_self">Patrick Rodgers</A> (Microsoft) @mediocrebowler&nbsp;</SPAN>–<SPAN>&nbsp;<A href="#" target="_self">13:58</A></SPAN></LI> <LI><SPAN>P</SPAN>nP SPFx Samples -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Hugo Bernier</A><SPAN>&nbsp;</SPAN>(Tahoe Ninjas) | @bernierh&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">15:00</A></SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Demos:</STRONG></P> <UL> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Hero Web Part and Tiles V2 Web Part&nbsp;– <A href="#" target="_blank" rel="noopener">Omar El-Anis</A> | @omarelanis&nbsp;<SPAN style="font-family: inherit;">–</SPAN><SPAN style="font-family: inherit;">&nbsp;<A href="#" target="_self">18:12</A></SPAN></P> </LI> <LI> <P><STRONG style="font-family: inherit;">Demo:</STRONG><SPAN style="font-family: inherit;">&nbsp; Exposing business data in Viva Connections or in SharePoint with custom diagram web parts – </SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">Hugo Bernier</A><SPAN style="font-family: inherit;">&nbsp;(Microsoft) | @bernierh&nbsp;</SPAN><SPAN style="font-family: inherit;">–</SPAN><SPAN style="font-family: inherit;">&nbsp;<A href="#" target="_self">41:12</A></SPAN></P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>Additional resources around the covered topics and links from the slides.</P> <UL> <LI> <P>Omar’s blog – <A href="#" target="_blank" rel="noopener">SP Bytes</A>&nbsp;</P> </LI> <LI> <P>Sample - <A href="#" target="_blank" rel="noopener">Hero web part</A>&nbsp;</P> </LI> <LI> <P>Sample - <A href="#" target="_blank" rel="noopener">Tiles V2</A>&nbsp;</P> </LI> <LI> <P>Controls – <A href="#" target="_blank" rel="noopener">PropertyFieldCollectionData control</A>&nbsp;</P> </LI> <LI> <P>Hugo’s Repo - <A href="#" target="_blank" rel="noopener">React Diagram Web Parts</A>&nbsp;</P> </LI> <LI> <P>Gallery - <A href="#" target="_blank" rel="noopener">SharePoint Framework Client-Side Web Part Samples</A>&nbsp;</P> </LI> <LI> <P>Tool - <A href="#" target="_blank" rel="noopener">About Mermaid</A>&nbsp;</P> </LI> <LI> <P>Library - <A href="#" target="_self">js-sequence-diagrams&nbsp;</A></P> </LI> <LI> <P>Tool – <A href="#" target="_blank" rel="noopener">flowchart.js</A>&nbsp;</P> </LI> <LI> <P>Editor – <A href="#" target="_blank" rel="noopener">Monaco Editor</A>&nbsp;</P> </LI> <LI> <P>PnP/SPFx-property-controls - <A href="#" target="_blank" rel="noopener">PropertyPaneMarkdownContent control</A>&nbsp;</P> </LI> <LI> <P>PnP/SPFx-controls-react - <A href="#" target="_blank" rel="noopener">Placeholder control</A>&nbsp;</P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>General Resources:</STRONG></P> <UL> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A></LI> <LI>Archives - Microsoft 365 PnP Weekly -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">Videos</A>,<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">Podcasts</A>&nbsp;&nbsp;</LI> <LI>Tools -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Teams Toolkit (v2.2 Preview)</A>&nbsp;</LI> <LI> <P>Tools -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Teams Framework (TeamsFx)</A>&nbsp;</P> </LI> <LI>Gallery -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>&nbsp;&nbsp;</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Build sessions guide</A><SPAN>&nbsp;</SPAN>(Modern Work Digital Brochure) - aka.ms/modernworkbuildsessions</LI> <LI>SharePoint Framework - v1.12.1 npm install –g<SPAN>&nbsp;</SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/user/viewprofilepage/user-id/41501" target="_blank" rel="noopener">@microsoft</A>/generator-sharepoint@next</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">CLI for Microsoft 365 v3</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">CodeTour</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Sharing is Caring</A><SPAN>&nbsp;</SPAN>| aka.ms/sharing-is-caring</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Tools -<SPAN>&nbsp;</SPAN></A><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnP Modern Search v4</A><A href="#" target="_blank" rel="noopener noreferrer">&nbsp; |<SPAN>&nbsp;</SPAN></A><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/pnp-search</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">M365 PnP site</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Starter Kit v2</A></LI> <LI>Blog: "<A href="#" target="_blank" rel="noopener noreferrer">A Lap Around Microsoft Graph Toolkit" blog series</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">New Microsoft 365 Patterns and Practices (PnP) team model with new community leads</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Community Content</A><SPAN>&nbsp;</SPAN>(non-Dev docs)</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx web part samples</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx extension samples</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">GitHub PnPjs</A></LI> <LI>Tutorials -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started with SharePoint Framework v1.10 Tutorials</A><SPAN>&nbsp;</SPAN>(12 videos)</LI> <LI>Tutorials -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started with SharePoint Framework v1.10 Extensions</A><SPAN>&nbsp;</SPAN>(6 videos)</LI> <LI>Docs -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Tutorials and training material for SharePoint Development</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFX Training Package</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Web Parts</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Extensions</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Library Components</A></LI> <LI>Documentation -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnPjs v2 documentation</A></LI> <LI>Link -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 developer training</A></LI> <LI>Link -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Office 365 Developer Program</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">Latest documentation on SharePoint Framework</A></LI> <LI>Found an issue with SharePoint Dev? - please let us know at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/spdev-issues</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Reusable web part property controls</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Reusable react controls for SharePoint Framework solutions</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">Reusable controls webcast</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener nofollow">Office 365 CLI</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx Yeoman Generator</A><SPAN>&nbsp;</SPAN>- Extends the out-of-the-box experience with open-source community capabilities</LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint Dev UserVoice</A><SPAN>&nbsp;</SPAN>- for new feature requests</LI> </UL> <P>&nbsp;</P> <P><STRONG>Other mentioned topics:</STRONG></P> <UL> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint dev documentation</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint dev issue list</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Upcoming calls | Recurrent invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>M365 General Dev call </STRONG>– August 5<SUP>th</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>Office add-in monthly call </STRONG>– August 11<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG>SharePoint Framework call </STRONG>– August 12<SUP>th</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG>Adaptive Cards monthly call </STRONG>– August 12<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> <LI><STRONG>Power Apps monthly call </STRONG>– August 18<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A></LI> <LI><STRONG>Microsoft Identity Platform </STRONG>– August 19<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A></LI> </UL> <P>&nbsp;</P> <P>PnP SharePoint Framework Special Interest Group bi-weekly calls are targeted at anyone who is interested in the JavaScript-based development towards Microsoft Teams, SharePoint Online, and also on-premises. SIG calls are used for the following objectives.</P> <UL> <LI>SharePoint Framework engineering update from Microsoft</LI> <LI>Talk about PnP JavaScript Core libraries</LI> <LI>Office 365 CLI Updates</LI> <LI>SPFx reusable controls</LI> <LI>PnP SPFx Yeoman generator</LI> <LI>Share code samples and best practices</LI> <LI>Possible engineering asks for the field - input, feedback, and suggestions</LI> <LI>Cover any open questions on the client-side development</LI> <LI>Demonstrate SharePoint Framework in practice in Microsoft Teams or SharePoint context</LI> <LI>You can download a recurrent invite from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">https://aka.ms/spdev-spfx-call</A>. Welcome and join the discussion!</LI> </UL> <P><EM>“Sharing is caring”</EM></P> <HR /> <P><EM>Microsoft 365 PnP team, Microsoft - 29th of July 2021</EM></P> Thu, 29 Jul 2021 23:59:55 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-29th-of-july-2021/ba-p/2481295 Vesa Juvonen 2021-07-29T23:59:55Z Use CLI for Microsoft 365 to recognize contributions https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/use-cli-for-microsoft-365-to-recognize-contributions/ba-p/2595191 <P>So, recognition is important, and it is important to keep in mind that not everything should be automated. But a bit of gamification is a nice way to show people how they interact with different services. When considering this approach, the first step is to determine what we require.&nbsp;</P> <H2>What data is available?&nbsp;</H2> <P>Office 365 provides a whole lot of data you can use. You can choose to get all actions yourself or using existing reports that are available. Most of those reports can also be retrieved by the CLI for Microsoft 365. You can use the <A title="Microsoft Docs to read what activity reports are available" href="#" target="_blank" rel="noopener">Microsoft Docs to read what activity reports are available</A>.</P> <P>&nbsp;</P> <P>Querying these reports using the CLI is done using a pattern:&nbsp;</P> <UL> <LI><EM>m365</EM> to execute the cli</LI> <LI><EM>service</EM> to pass the get the report for</LI> <LI><EM>report</EM> to identify the group&nbsp;</LI> <LI><EM>report type</EM> to identify what type of data is returned by the cli.&nbsp;</LI> </UL> <P>You can query services like SharePoint using <EM>spo&nbsp;</EM>or <EM>teams.&nbsp;</EM>And there are different report types available depending on the type of data you require.&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">m365 spo report activityuserdetail m365 teams report activeuserdetail </LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>The <EM>activityuserdetail</EM> provides insights into what each user is doing. The <EM>activeuserdetail </EM>returns the amount of active users. For insights into who is doing what the <EM>activityuserdetail</EM> provides the most value. Using additional parameters you can specify the timeframe to get reporting for. You can read all about all options on the <A title="CLI for Microsoft 365 documentation" href="#" target="_self">CLI for Microsoft 365 documentation</A>.</P> <P>&nbsp;</P> <P>In our case we want to post the weekly progress and thus retrieve a weeks worth of data. And since we are going to work with the data the output is going to be JSON. Resulting in the following snippet:&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">m365 teams report useractivityuserdetail --period D7 --output json</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <H2>Working with the result set</H2> <P>The data returned contains a bit of information we do not require and is not quite the format that we need to do reporting on. To remediate that we will use JMESPath to sort and filter the returned data. This ensures that we get only the information we need.&nbsp;</P> <P>&nbsp;</P> <P>The data returned is ordered by the user display name, so the first step is to order by a metric we care about. The data returned contains four metrics we can use.</P> <OL> <LI>Team Chat Message Count</LI> <LI>Private Chat message Count</LI> <LI>Call Count</LI> <LI>Meeting Count</LI> </OL> <P>For this demo we will use the Team Chat Message count, but you can pick any option you like. Using JMESPath we can use the <EM>sort_by()&nbsp;</EM>functionality. Add a <EM>reverse() </EM>to make sure it is sorted with the highest number on top.&nbsp; And since we only care about the User itself and do not need other information we can tell JMESPath to only return the&nbsp;<EM>User Principal Name</EM>. We can even specify that we care only about the top 3 users. So the full query would look as follows.&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">m365 teams report useractivityuserdetail --period D7 --output json --query 'reverse(sort_by(@, &amp;\"Team Chat Message Count\")) | [0:3].\"User Principal Name\"'</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>Given that there are other services as well we might use different options to order by for different services. For SharePoint you could use the <EM>Viewed or Edited File Count</EM>, <EM>Visited Page Count</EM>, the&nbsp;<EM>Shared Internally File Count</EM> or the <EM>Shared Externally File count</EM>. And services like Yammer offer a <EM>Posted Count, Read Count</EM>&nbsp;and Liked<EM> Count.&nbsp;</EM></P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">m365 spo report activityuserdetail --period D7 --output json --query 'reverse(sort_by(@, &amp;\"Viewed Or Edited File Count\")) | [0:3].\"User Principal Name\"' m365 yammer report activityuserdetail --period D7 --output json --query 'reverse(sort_by(@, &amp;\"Posted Count\")) | [0:3].\"User Principal Name\"'</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <H2>&nbsp;Presenting your results</H2> <P>With the commands above we can retrieve the information we need to identify the social champions of last week. The next challenge is to present this information.&nbsp;On the techcommunity there is a great walkthrough on&nbsp;<A title="How to send Adaptive Cards with CLI Microsoft 365" href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-send-adaptive-cards-with-cli-microsoft-365/ba-p/2143466" target="_blank" rel="noopener">How to send Adaptive Cards with CLI Microsoft 365</A>. It explains into detail how to create a new webhook in teams and use the CLI to send information to this webhook.&nbsp; If you follow that walkthrough and perhaps set a fancy logo you will end up with the URL you need and a welcome post that looks something like the following:&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="social-webhook.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/299219iA1191C410B1AE7EF/image-size/large?v=v2&amp;px=999" role="button" title="social-webhook.png" alt="social-webhook.png" /></span></P> <H2>Sharing your data</H2> <P>Once the webhook is set up you can use the URL and post results to it. Since we already have the data present we can use PowerShell to set the JSON of the card, add our users to it and post the card to Teams. Make sure to add some emojis to the Adaptive card to make it look pretty 🦾 or tweak it to your own liking.&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">$m365Status = m365 status if ($m365Status -eq "Logged Out") { # Connection to Microsoft 365 m365 login } $webhookUrl = "&lt;PUTYOURURLHERE&gt;" # Send top 3 for SharePoint based on file actions. $activityUsers = m365 spo report activityuserdetail --period D7 --output json --query 'reverse(sort_by(@, &amp;\"Viewed Or Edited File Count\")) | [0:3].\"User Principal Name\"' | ConvertFrom-Json $title = " SharePoint Weekly Social Champions " $card = '{ \"type\": \"AdaptiveCard\", \"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\", \"version\": \"1.2\", \"body\": [ { \"type\": \"TextBlock\", \"text\": \"'+$($title)+'\", \"wrap\": true, \"size\": \"Medium\", \"weight\": \"Bolder\", \"color\": \"Attention\" }, { \"type\": \"TextBlock\", \"wrap\": true, \"text\": \"Week '+$(get-date -UFormat %V)+'\", \"fontType\": \"Default\", \"size\": \"Small\", \"weight\": \"Lighter\", \"isSubtle\": true }, { \"type\": \"FactSet\", \"facts\": [ { \"title\": \"First place\", \"value\": \"'+$($activityUsers[0])+'\" }, { \"title\": \"Second place\", \"value\": \"'+$($activityUsers[1])+'\" }, { \"title\": \"Third place\", \"value\": \"'+$($activityUsers[2])+'\" } ] } ] }' m365 adaptivecard send --url $webhookUrl --card $card</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Executed the result will look as follows:&nbsp;&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2021-07-29_17-51-58.png" style="width: 978px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/299220i27CF4CD57EEA3ED7/image-size/large?v=v2&amp;px=999" role="button" title="2021-07-29_17-51-58.png" alt="2021-07-29_17-51-58.png" /></span></P> <P>&nbsp;</P> <P>You can find this sample, and many more samples at the <A title="CLI for Microsoft Sample script repository" href="#" target="_blank" rel="noopener">CLI for Microsoft Sample script repository</A>! If you want additional reports the script would look almost the same. The main difference is the service to call, and the query to sort the results on. You can use the same approach to see who is active on Teams or Yammer. Or who is working a lot on OneDrive or Exchange if you like.&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash"># Send top 3 for Teams based on chat messages $activityUsers = m365 teams report useractivityuserdetail --period D7 --output json --query 'reverse(sort_by(@, &amp;\"Team Chat Message Count\")) | [0:3].\"User Principal Name\"' | ConvertFrom-Json $title = " Teams Weekly Social Champions " $card = '{ \"type\": \"AdaptiveCard\", \"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\", \"version\": \"1.2\", \"body\": [ { \"type\": \"TextBlock\", \"text\": \"'+$($title)+'\", \"wrap\": true, \"size\": \"Medium\", \"weight\": \"Bolder\", \"color\": \"Attention\" }, { \"type\": \"TextBlock\", \"wrap\": true, \"text\": \"Week '+$(get-date -UFormat %V)+'\", \"fontType\": \"Default\", \"size\": \"Small\", \"weight\": \"Lighter\", \"isSubtle\": true }, { \"type\": \"FactSet\", \"facts\": [ { \"title\": \"First place\", \"value\": \"'+$($activityUsers[0])+'\" }, { \"title\": \"Second place\", \"value\": \"'+$($activityUsers[1])+'\" }, { \"title\": \"Third place\", \"value\": \"'+$($activityUsers[2])+'\" } ] } ] }' m365 adaptivecard send --url $webhookUrl --card $card # Send top 3 for Yammer based on posts $activityUsers = m365 yammer report activityuserdetail --period D7 --output json --query 'reverse(sort_by(@, &amp;\"Posted Count\")) | [0:3].\"User Principal Name\"' | ConvertFrom-Json $title = " Yammer Weekly Social Champions " $card = '{ \"type\": \"AdaptiveCard\", \"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\", \"version\": \"1.2\", \"body\": [ { \"type\": \"TextBlock\", \"text\": \"'+$($title)+'\", \"wrap\": true, \"size\": \"Medium\", \"weight\": \"Bolder\", \"color\": \"Attention\" }, { \"type\": \"TextBlock\", \"wrap\": true, \"text\": \"Week '+$(get-date -UFormat %V)+'\", \"fontType\": \"Default\", \"size\": \"Small\", \"weight\": \"Lighter\", \"isSubtle\": true }, { \"type\": \"FactSet\", \"facts\": [ { \"title\": \"First place\", \"value\": \"'+$($activityUsers[0])+'\" }, { \"title\": \"Second place\", \"value\": \"'+$($activityUsers[1])+'\" }, { \"title\": \"Third place\", \"value\": \"'+$($activityUsers[2])+'\" } ] } ] }' m365 adaptivecard send --url $webhookUrl --card $card </LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <H2>What's next</H2> <P><SPAN>With that I hope that this blog provided some insights in how you can recognize your users&nbsp;</SPAN>based on their activity. Keep in mind that just automating something is not the only way to recognize contributions, but it is a fun way to see who is doing what. It might even be a great conversation starter. Or you could use the same approach to identify who is missing out and instead of sharing that publicly let a Teams Champion know who might need additional assistance. If you have any questions regarding the CLI for Microsoft or have feedback let us know! We are always looking for <A title="contributions" href="#" target="_self">contributions</A> or new <A title="CLI for Microsoft 365 sample script ideas" href="#" target="_self">sample script ideas</A>!&nbsp;</P> <P>&nbsp;</P> Thu, 29 Jul 2021 17:51:26 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/use-cli-for-microsoft-365-to-recognize-contributions/ba-p/2595191 Albert-Jan Schot 2021-07-29T17:51:26Z Microsoft 365 Developer Podcast - Office Add-Ins with Cam Dwyer https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-office-add-ins-with-cam-dwyer/ba-p/2594128 <P>Paul talks with Cam Dwyer about creating add-ins for Office, including DevOps and security principles.</P> <P><IFRAME src="https://www.podbean.com/player-v2/?i=vctcu-101c501-pb&amp;from=pb6admin&amp;share=0&amp;download=0&amp;rtl=0&amp;fonts=Courier%20New&amp;skin=1&amp;font-color=auto&amp;btn-skin=6" width="100%" height="150" scrolling="no" style="border: none; min-width: min(100%, 430px);" title="Office Add-Ins with Cam Dwyer" allowtransparency="true" data-name="pb-iframe-player"></IFRAME></P> <P>Listen to the show here:&nbsp; <A href="#" target="_blank">Office Add-Ins with Cam Dwyer (m365devpodcast.com)</A></P> <P>&nbsp;</P> <H2>Microsoft News</H2> <UL> <LI><A href="#" target="_blank">Visual Studio 2022</A></LI> <LI><A href="#" target="_blank">New feature request experience for&nbsp;Microsoft Graph&nbsp;and Office Platform</A></LI> <LI><A href="#" target="_blank">Microsoft Q&amp;A</A></LI> </UL> <H2>Community Links</H2> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/run-cli-for-microsoft-365-in-docker/ba-p/2207125" target="_blank">Run CLI for Microsoft 365 in Docker</A></LI> <LI><A href="#" target="_blank">Using the latest microsoft-graph-client in SPFx</A></LI> <LI><A href="#" target="_blank">SharePoint Syntex - teaching AI to extract contents of structured documents with Form Processing</A></LI> <LI><A href="#" target="_blank">Shared Channels (Microsoft Teams Connect) : rescheduled for November&nbsp;2021</A></LI> </UL> Wed, 28 Jul 2021 14:58:59 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-office-add-ins-with-cam-dwyer/ba-p/2594128 paulschaeflein 2021-07-28T14:58:59Z How to set up your first PnP Search Page https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-set-up-your-first-pnp-search-page/ba-p/2591265 <P>After<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">deploying PnP Modern Search to your tenant</A>, it’s time to create the first PnP search page.</P> <P>&nbsp;</P> <BLOCKQUOTE class="wp-block-quote"> <P>PnP search pages can be added to any modern site, so it’s your decision where to do this. My recommendation is always try this out on a “playground” site first, before deploying to production.</P> </BLOCKQUOTE> <H2><SPAN>1 – Create an empty page</SPAN></H2> <P>The first step is to create an empty page, where you’ll add the PnP web parts. Go to any of your modern sites, and create a new page:</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-page-01-new-page-1024x412" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298687iF74A57C4A3372019/image-size/large?v=v2&amp;px=999" role="button" title="pnp-modern-search-page-01-new-page-1024x412" alt="pnp-modern-search-page-01-new-page-1024x412" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <H2><SPAN>2 – Add the PnP web parts</SPAN></H2> <P>The next step is to add the PnP web parts to your page. The package, that you’ve deployed, adds the following web parts available on your modern pages:</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-page-02-web-parts" style="width: 306px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298688iA6AAE54F025A1AD5/image-size/medium?v=v2&amp;px=400" role="button" title="pnp-modern-search-page-02-web-parts" alt="pnp-modern-search-page-02-web-parts" /></span></P> <P>&nbsp;</P> <P>You can get to these web parts when search for “PnP” or “search” in the web part gallery:</P> <OL> <LI>PnP Search Box</LI> <LI>PnP Search Results</LI> <LI>PnP Search Filters</LI> <LI>PnP Search Verticals</LI> </OL> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-page-03-web-parts-example-1024x686" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298689i03C4AF25769623B8/image-size/large?v=v2&amp;px=999" role="button" title="pnp-modern-search-page-03-web-parts-example-1024x686" alt="pnp-modern-search-page-03-web-parts-example-1024x686" /></span></P> <P>&nbsp;</P> <P>On a very simple search page, we have at least two web parts: a search box and a search results web part.</P> <H3>Search Box Web Part</H3> <P>You simply add a Search Box to the page by choosing “PnP Search Box” web part. At this point, you don’t have to do any further configuration.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-page-04-search-box-web-part" style="width: 756px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298690i40190059668FD435/image-size/large?v=v2&amp;px=999" role="button" title="pnp-modern-search-page-04-search-box-web-part" alt="pnp-modern-search-page-04-search-box-web-part" /></span></P> <P>&nbsp;</P> <H3>Search Results Web Part</H3> <P>The next step is to add a “PnP Search Results” web part to the page.</P> <P>Once the web part is added to the page, you have to connect it to the Search Box web part, to receive the query from there. You can do this by following these steps:</P> <OL> <LI>Edit the page.</LI> <LI>Edit the properties of the Search Results web part.</LI> <LI>Switch to page “3 of 4” on the web part properties.</LI> <LI>Turn on “Use input query text”.</LI> <LI>Select “Dynamic value” in the radio button list.</LI> <LI>Select “PnP – Search Box” in the “Connect to source” dropdown.</LI> <LI>Select “Search query” in the “PnP – Search Box’s properties” dropdown.</LI> </OL> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-page-05-search-results-web-part-properties" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298691i7F33281C0C5ECFE3/image-size/medium?v=v2&amp;px=400" role="button" title="pnp-modern-search-page-05-search-results-web-part-properties" alt="pnp-modern-search-page-05-search-results-web-part-properties" /></span></P> <P>&nbsp;</P> <P><SPAN>Once done, save the page and enjoy your very first search page!</SPAN></P> <P>&nbsp;</P> <P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-page-06-search-page-101" style="width: 800px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298692i21BB76583CD75EEE/image-size/large?v=v2&amp;px=999" role="button" title="pnp-modern-search-page-06-search-page-101" alt="pnp-modern-search-page-06-search-page-101" /></span></SPAN></P> <P>&nbsp;</P> <P><SPAN><EM>This article was originally posted on&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Search Explained Blog</A>.</EM></SPAN></P> Tue, 27 Jul 2021 15:22:06 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-set-up-your-first-pnp-search-page/ba-p/2591265 Agnes Molnar 2021-07-27T15:22:06Z How to Deploy PnP Modern Search Web Parts v4 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-deploy-pnp-modern-search-web-parts-v4/ba-p/2591253 <P><!-- wp:paragraph --></P> <P>If you use Microsoft 365 (Office 365), you probably have been using <A href="#" target="_blank" rel="noopener">Microsoft Search</A>, too. But there might be use cases, when it's not enough - for example, when you need a customized Search Application. If this is the case, your number one option might be to deploy <A href="#" target="_blank" rel="noopener">PnP Modern Search Web Parts</A>. This is an open source solution that helps you to build customized search applications in SharePoint Online modern experience.</P> <P>&nbsp;</P> <P><SPAN style="font-family: inherit;">However, this solution has to be deployed manually to your tenant. Let's see how.</SPAN></P> <P>&nbsp;</P> <H2><SPAN style="font-family: inherit;">1 - Download the PnP package</SPAN></H2> <P><SPAN style="font-family: inherit;"><!-- wp:paragraph --></SPAN></P> <P>You can download the latest releases <A href="#" target="_blank" rel="noreferrer noopener">HERE</A>.</P> <P>&nbsp;</P> <P><SPAN style="font-family: inherit;"><!-- /wp:paragraph --> <!-- wp:paragraph {"style":{"color":{"background":"#ffffff"}}} --></SPAN></P> <P class="has-background">You'll see there are two major versions: v3 and v4. Important notes:</P> <P><SPAN style="font-family: inherit;"><!-- /wp:paragraph --> <!-- wp:list {"style":{"color":{"gradient":"linear-gradient(194deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%)"}}} --></SPAN></P> <UL class="has-background"> <LI><STRONG>The v4 version uses a brand new code architecture and replaces the older v3 codebase</STRONG>. There will be no new features added to v3.x anymore, but bug fixes will be provided as needed.</LI> <LI>Because v4.x is not at feature parity yet with v3.x, you can still use the v3.x packages to meet your requirements.</LI> <LI>Also, <STRONG>there is not an auto-upgrade path from v3 to v4</STRONG> due to the new architecture.</LI> <LI>New search functionality backed by the Microsoft Graph Search API will be v4 only.</LI> </UL> <P><SPAN style="font-family: inherit;"><!-- /wp:list --></SPAN></P> <P>&nbsp;</P> <P><FONT color="#993300"><STRONG>If this is the first time you install PnP Modern Search, always go for v4.</STRONG></FONT></P> <P>&nbsp;</P> <P>On the Releases page, scroll down to Assets, and then click on the .sppkg file:</P> <DIV id="tinyMceEditorAgnesMolnar_0" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P><STRONG><SPAN>Note</SPAN></STRONG><SPAN>:&nbsp;</SPAN><EM>If you’ve installed the 2021 Jan release of v4, you had to deploy two packages, because the extensibility library was a separate .sppkg file. With the 2021 March release, there’s only one package, the team has replaced the extensibility library dependency by an&nbsp;<A href="#" target="_blank" rel="noopener">npm package</A>. Now you only need to deploy one SPFx solution in you app catalog.</EM></P> <P>&nbsp;</P> <H2><SPAN>2 – Deploy the PnP Modern Search package to your tenant’s App Catalog</SPAN></H2> <P>App Catalog is a special site collection in SharePoint, that stores the apps for your organization’ use. If you have an existing App Catalog, you can<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">deploy the PnP Modern Search package there</A>. Otherwise, you have to create a new App Catalog.</P> <H3>2.1 – Create a new App Catalog</H3> <P>You have to be a tenant administrator to create a new App Catalog.</P> <P>Go to Microsoft 365 Admin / SharePoint Admin Center. On the left menu, click on “More features”, and the select “Apps”:</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-sharepoint-app-catalog-01-1024x834" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298677iBE9DBBA877984A83/image-size/large?v=v2&amp;px=999" role="button" title="pnp-modern-search-sharepoint-app-catalog-01-1024x834" alt="pnp-modern-search-sharepoint-app-catalog-01-1024x834" /></span></P> <P>&nbsp;</P> <P><SPAN>Once here, click on New App Catalog, then fill in the form, so that the new site collection will be created:</SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-sharepoint-app-catalog-02-1024x535" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298678iB9FA7FB1790BB970/image-size/large?v=v2&amp;px=999" role="button" title="pnp-modern-search-sharepoint-app-catalog-02-1024x535" alt="pnp-modern-search-sharepoint-app-catalog-02-1024x535" /></span></SPAN></P> <P>&nbsp;</P> <H3 id="deploy-pnp">2.2 – Deploy the PnP Modern Search Package</H3> <P>Once your App Catalog is done, or you have one that has been created earlier, open its URL and then click on “Apps for SharePoint”:</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-sharepoint-app-catalog-03-1024x553" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298682iFE847005315A31AC/image-size/large?v=v2&amp;px=999" role="button" title="pnp-modern-search-sharepoint-app-catalog-03-1024x553" alt="pnp-modern-search-sharepoint-app-catalog-03-1024x553" /></span></P> <P>&nbsp;</P> <P><SPAN>On this screen, click on Upload, then choose the PnP Modern Search package file which you downloaded above</SPAN><SPAN>.</SPAN></P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-sharepoint-app-catalog-04-1024x652" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298683i9F61C7A55D8A9332/image-size/large?v=v2&amp;px=999" role="button" title="pnp-modern-search-sharepoint-app-catalog-04-1024x652" alt="pnp-modern-search-sharepoint-app-catalog-04-1024x652" /></span></P> <P><SPAN>When you’re asked if you trust PnP Modern Search Web Parts, click the checkbox if you want to deploy it to all site collections, otherwise leave it unchecked if you need it on a few selected sites only. Then click Deploy:</SPAN></P> <P>&nbsp;</P> <P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-sharepoint-app-catalog-05" style="width: 932px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298684i8925F9C0A92215B5/image-size/large?v=v2&amp;px=999" role="button" title="pnp-modern-search-sharepoint-app-catalog-05" alt="pnp-modern-search-sharepoint-app-catalog-05" /></span></SPAN></P> <P>&nbsp;</P> <P><SPAN>Once done, you should see the PnP Modern Search Web Parts in the App Catalog:</SPAN></P> <P>&nbsp;</P> <P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-sharepoint-app-catalog-06-1024x274" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298685iC7A61983F9CD5483/image-size/large?v=v2&amp;px=999" role="button" title="pnp-modern-search-sharepoint-app-catalog-06-1024x274" alt="pnp-modern-search-sharepoint-app-catalog-06-1024x274" /></span></SPAN></P> <P>&nbsp;</P> <H2><SPAN>3 – Enjoy!</SPAN></H2> <P>Now, go to any (modern) site on your tenant (in a site collection where you’ve deployed PnP Modern Search above), and edit the page. In the web parts list, search for “PnP”, and you’ll see the PnP Modern Search Web Parts there:</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="pnp-modern-search-v4-webparts" style="width: 246px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298686iA4A17C62AEA28C58/image-size/large?v=v2&amp;px=999" role="button" title="pnp-modern-search-v4-webparts" alt="pnp-modern-search-v4-webparts" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><EM>This article was originally posted on&nbsp;<A href="#" target="_blank" rel="noopener">Search Explained Blog</A>.</EM></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --></P> Tue, 27 Jul 2021 15:19:49 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-deploy-pnp-modern-search-web-parts-v4/ba-p/2591253 Agnes Molnar 2021-07-27T15:19:49Z The friendly SMS reminder with Logic Apps, Azure Functions + Key Vault https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/the-friendly-sms-reminder-with-logic-apps-azure-functions-key/ba-p/2588691 <H2 class="the_title">Learn how to combine Logic Apps, Azure Functions &amp; Key Vault to send a friendly SMS reminder</H2> <P>&nbsp;</P> <DIV class="cm-post-meta"> <P><STRONG><SPAN style="font-family: inherit;">Yay <img class="lia-deferred-image lia-image-emoji" src="https://techcommunity.microsoft.com/html/@A027B0AAF3CA617A1E2E22C4E761B2FEhttps://techcommunity.microsoft.com/images/emoticons/stareyes_40x40.gif" alt=":stareyes:" title=":stareyes:" />, this is a new blog post series on how to put the FUN in Azure Functions</SPAN><SPAN style="font-family: inherit;">&nbsp;</SPAN></STRONG></P> </DIV> <DIV class="the_content"> <P>Recently, I was learning about Azure Functions and came up with a sweet use case what I could do to combine Azure Functions and Logic Apps: I want to automatically call or text myself (using Twilio) to remind me of recurring tasks, like putting away the laundry, buying more Lego, or similar.</P> <P>&nbsp;</P> <P>There will be of course more sophisticated use cases, for the sake of an easy demonstration we will stick to this and use a simple SMS.&nbsp;</P> <H2>Prerequisites</H2> <UL> <LI>Azure subscription -If you don’t have one, you can get one for<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">free here</A></LI> <LI>Twilio account</LI> <LI>Twilio trial number – trial comes for free – sign up here<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">Twilio Luise</A><SPAN>&nbsp;</SPAN>(Transparency: This is a referral link, which will get you and me 10$ to spend on Twilio for cool future projects that aren’t covered by the trial. However, if you don’t like us to get the 10 bucks, you can also&nbsp; sign up without the referral link with<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">https://www.twilio.com)</A></LI> </UL> <P>Here is our solution overview:&nbsp;</P> <P>&nbsp;</P> <DIV id="tinyMceEditorLuiseFreese_1" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P>&nbsp;</P> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AZTwilio.png" style="width: 679px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298504i428BA74B318E7DFC/image-dimensions/679x344?v=v2" width="679" height="344" role="button" title="AZTwilio.png" alt="AZTwilio.png" /></span> <P>As you can see, we will touch some interesting things like&nbsp;</P> <UL> <LI>Azure Logic Apps</LI> <LI>Azure Function App</LI> <LI>Azure Key Vault</LI> <LI>Managed Identity</LI> <LI>Twilio API&nbsp;</LI> </UL> <P>I will sometimes provide several approaches to reach the same goal, you can pick whatever feels right to you.&nbsp;</P> <H2>Azure Resource group &amp; Function App</H2> <P>Ok, so we will create an Azure Function App that will do the heavy lifting for us. Our Azure Function needs a Resource group to live in, and we will first create the Resource Group and then add some resources to it.</P> <UL> <LI>Go to<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">portal.azure.com</A></LI> <LI>Select&nbsp;<SPAN>&nbsp;</SPAN><STRONG>Create a resource</STRONG></LI> </UL> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AzureCreateResource.png" style="width: 536px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298505iF4CABEB78B5FF744/image-dimensions/536x66?v=v2" width="536" height="66" role="button" title="AzureCreateResource.png" alt="AzureCreateResource.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <UL> <LI>Search for<SPAN>&nbsp;</SPAN><STRONG>Function App<SPAN>&nbsp;</SPAN></STRONG>in the search bar</LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Function App</STRONG></LI> </UL> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_3-1627339056564.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298534i609CCBD6D2F39E18/image-size/medium?v=v2&amp;px=400" role="button" title="LuiseFreese_3-1627339056564.png" alt="LuiseFreese_3-1627339056564.png" /></span> <P>&nbsp;</P> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="FunctionAppNew.png" style="width: 541px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298506i49B8C464EA96E930/image-dimensions/541x504?v=v2" width="541" height="504" role="button" title="FunctionAppNew.png" alt="FunctionAppNew.png" /></span> <P> </P> <P>Select<SPAN>&nbsp;</SPAN><STRONG>Create</STRONG></P> <DIV id="tinyMceEditorLuiseFreese_4" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P>&nbsp;</P> <UL> <LI>Fill out the form: <UL> <LI>(1) Select your Azure subscription</LI> <LI>(2) Select&nbsp;<STRONG>Create New</STRONG><SPAN>&nbsp;</SPAN>to create a new Resource Group where our Function app lives in</LI> <LI>(3) Type in the name of your new Resource group</LI> <LI>(4) Select<SPAN>&nbsp;</SPAN><STRONG>OK</STRONG></LI> <LI>(5) Give your app a name</LI> <LI>(6) Select<SPAN>&nbsp;</SPAN><STRONG>Node.js</STRONG><SPAN>&nbsp;</SPAN>as Runtime stack</LI> <LI>(7) Select your Region</LI> <LI>(8) Select&nbsp;<STRONG><SPAN>&nbsp;</SPAN>Review + Create</STRONG></LI> </UL> </LI> </UL> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="FunctionAppCreateSteps.png" style="width: 518px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298537i651D1A3E1BE52AE8/image-dimensions/518x537?v=v2" width="518" height="537" role="button" title="FunctionAppCreateSteps.png" alt="FunctionAppCreateSteps.png" /></span><BR /> <FIGURE class="wp-block-image size-large"> <P>&nbsp;</P> </FIGURE> <P>you can now review everything – as a last step</P> <UL> <LI>Select&nbsp;<STRONG>Create</STRONG></LI> </UL> <P>It will take a few seconds for Azure to deploy your Resource group and the Function App. You will be notified when everything is ready for you.</P> <P>As an alternative, you may want to create your Azure Function from within Visual Studio Code:&nbsp;</P> <H2>Creating the Azure Function in Visual Studio Code</H2> <P>Please follow these steps:&nbsp;</P> <OL> <LI>Install the Core Tools package with<SPAN>&nbsp;</SPAN><CODE>npm install -g azure-functions-core-tools@3 --unsafe-perm true</CODE></LI> <LI>Install the<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">Azure Functions extension for VS Code</A></LI> <LI>Select&nbsp;<STRONG>New Project</STRONG></LI> <LI>Select a folder for your project</LI> <LI>Select a language</LI> <LI>&nbsp;Select<SPAN>&nbsp;</SPAN><STRONG>HTTP trigger</STRONG><SPAN>&nbsp;</SPAN>as a template</LI> <LI>Type in a better name, like SampleTexts</LI> <LI>Select Authorization level&nbsp;<STRONG>Function</STRONG></LI> <LI>Select how you want to open your project – I prefer<SPAN>&nbsp;</SPAN><STRONG>Add to workspace</STRONG></LI> </OL> <P>You will now see your&nbsp;<STRONG>Local Project</STRONG><SPAN>&nbsp;</SPAN>in the pane.</P> <DIV id="tinyMceEditorLuiseFreese_6" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P>&nbsp;</P> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="azfunctionVSCode.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298508iE654F9D3C384EBE8/image-size/medium?v=v2&amp;px=400" role="button" title="azfunctionVSCode.png" alt="azfunctionVSCode.png" /></span> <P>You can now develop, debug and test your function locally and have source control of your code . I like this way more than jumping back and forth in the different blades of the Azure portal – also, I rely on IntelliSense pretty much ¯\_(ツ)_/¯</P> <P>To deploy your function app, select the<SPAN>&nbsp;</SPAN><STRONG>deploy&nbsp;</STRONG>icon. If you are not already logged into your Azure account, a browser window will pop up and ask you to sign in with your credentials.&nbsp;<BR /><BR /></P> <P> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="swploy.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298511i7F67DC64F9E5A2C8/image-size/medium?v=v2&amp;px=400" role="button" title="swploy.png" alt="swploy.png" /></span></P> <P>&nbsp;</P> <P>Once you selected the&nbsp;<STRONG>deploy</STRONG><SPAN>&nbsp;</SPAN>icon, you need to specify the function in Azure and need to confirm that you know what you are doing<SPAN>&nbsp;</SPAN></P> <DIV id="tinyMceEditorLuiseFreese_8" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="confirmdeploy.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298510i2E45D34DF7213E4E/image-size/medium?v=v2&amp;px=400" role="button" title="confirmdeploy.png" alt="confirmdeploy.png" /></span></P> <BR /> <P>Azure needs again a few seconds to deploy and Visual Studio Code will let you know once this is done<SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <DIV id="tinyMceEditorLuiseFreese_10" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="confirmdeploysuccess.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298512iBAC6A66762C8D22A/image-size/medium?v=v2&amp;px=400" role="button" title="confirmdeploysuccess.png" alt="confirmdeploysuccess.png" /></span> <P> </P> <H2>Twilio</H2> <P>Before we add a function and some code to it, let’s understand first what we will be doing: We want to automagically send a text message to our own phone number. We do this by using our brand new Twilio account and log in with our account SID and an Auth token. We will also need our own phone number and the trial number we got from Twilio. As we do not want to hard-code these credentials, we will store them in the Function app configuration and refer to the configuration in our code. In a second scenario below, I will show how to store the credentials even more secure in an Azure Key Vault. But first, head over to Twilio, create an account and get a trial number. Your Twilio Dashboard should look a little like this:</P> <DIV id="tinyMceEditorLuiseFreese_12" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Codeandtest.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298513iD168BDE16E9D0E12/image-size/medium?v=v2&amp;px=400" role="button" title="Codeandtest.png" alt="Codeandtest.png" /></span></P> <UL> <LI>Copy<SPAN>&nbsp;</SPAN><STRONG>Account SID</STRONG></LI> <LI>Copy&nbsp;<STRONG>Auth token</STRONG></LI> <LI>Copy your Trial number</LI> <LI>Have your own phone number present</LI> </UL> <P>We will need these values in a moment!</P> <H2><STRONG>Azure Function App configuration</STRONG></H2> <P>Head over to your Azure Function App</P> <UL> <LI>(1) Select&nbsp;<STRONG>Configuration</STRONG></LI> <LI>(2) Select&nbsp;<STRONG>New application setting</STRONG></LI> <LI>(3) Type in<SPAN>&nbsp;</SPAN><STRONG>TWILIO_SID<SPAN>&nbsp;</SPAN></STRONG>as name</LI> <LI>(4) Paste in your copied<SPAN>&nbsp;</SPAN><STRONG>Account SID</STRONG><SPAN>&nbsp;</SPAN>as the value</LI> <LI>(5) Select&nbsp;<STRONG>OK</STRONG></LI> </UL> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_40-1627337771809.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298514iA353AC9FA9ED69E0/image-size/medium?v=v2&amp;px=400" role="button" title="LuiseFreese_40-1627337771809.png" alt="LuiseFreese_40-1627337771809.png" /></span> <P>&nbsp;</P> <P>Repeat step 1-5 from above for</P> <UL> <LI>TWILIO_TOKEN</LI> <LI>SENDER_NUMBER (your Twilio trial number)</LI> <LI>RECIPIENT_NUMBER (your phone number)</LI> </UL> <P>Hit save Your App setting should now look like this:</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_41-1627337799414.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298515iC5E1F8CBA671D1C1/image-size/medium?v=v2&amp;px=400" role="button" title="LuiseFreese_41-1627337799414.png" alt="LuiseFreese_41-1627337799414.png" /></span></P> <H2><STRONG>Azure Function App -add function</STRONG></H2> <P>Now its time to add some functionality to our app:</P> <UL> <LI>(1) Select<SPAN>&nbsp;</SPAN><STRONG>Functions</STRONG></LI> <LI>(2) Select<SPAN>&nbsp;</SPAN><STRONG>Add</STRONG></LI> <LI>(3) Select HTTP trigger</LI> <LI>(4) Type in a name</LI> <LI>(5) Select<SPAN>&nbsp;</SPAN><STRONG>Add</STRONG></LI> </UL> <BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_42-1627337856099.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298516i37B3EF13C56F4454/image-size/medium?v=v2&amp;px=400" role="button" title="LuiseFreese_42-1627337856099.png" alt="LuiseFreese_42-1627337856099.png" /></span> <P>&nbsp;</P> <P>&nbsp;</P> <UL> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Code + Test</STRONG></LI> <LI>Delete the sample code in the index.js file</LI> <LI>Paste in the following snippet:</LI> <LI>Don’t forget to hit the save button – I always do ¯\_(ツ)_/¯</LI> </UL> <PRE>const accountSid = process.env.TWILIO_SID;<BR />const authToken = process.env.TWILIO_TOKEN;<BR />const client = require('twilio')(accountSid, authToken);<BR /><BR />module.exports = function (context) {<BR />client.messages<BR />.create({ from: process.env.SENDER_NUMBER,<BR />body: `This is your friendly weekly reminder to put away the laundry 🧺 you folded last weekend. <BR />Also, you go girl 😎`,<BR />to: process.env.RECIPIENT_NUMBER<BR />})<BR />.then(message =&gt; { <BR />context.log("Message sent");<BR />context.res = {<BR />body: 'YAY it worked - girl check your phone '<BR />}; <BR />context.done();<BR />}).catch(err =&gt; {<BR />context.log.error("Twilio Error: " + err.message + " -- " + err.code);<BR />context.res = {<BR />status: 500,<BR />body: `Twilio Error Message: ${err.message}\nTwilio Error code: ${err.code}`<BR />};<BR />context.done();<BR />});<BR />}<BR /><BR /></PRE> <P>Please note</P> <UL> <LI>how we refer to the app configuration settings with environment variables – If this is your first Azure Function app, I can highly recommend that you have a look over here:<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">JavaScript developer reference for Azure Functions | Microsoft Docs</A></LI> <LI>that we of course want a success (for status 200/default) or error message (for status 500) to log</LI> <LI>More information on how to work with Twilio – including code –<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">How to Send an SMS with Node.js (twilio.com)</A></LI> </UL> <P>Now Select<SPAN>&nbsp;</SPAN><STRONG>Overview</STRONG><SPAN>&nbsp;</SPAN>and then<SPAN>&nbsp;</SPAN><STRONG>Get Function URL –</STRONG><SPAN>&nbsp;</SPAN>copy the URL- we will need this in the next step.</P> <H2>Azure Logic Apps workflow</H2> <P>Let’s now have some more fun in Azure and use a Logic Apps workflow to trigger our Azure Function. We will first add a Logic App to our resource group and then define a workflow within that app. We will cover two options how to call our Azure Function, option A with the built-in ‘Call an Azure Function’ action and as option B with an HTTP action. In both cases, navigate to your resource group&gt;</P> <UL> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Create a resource</STRONG></LI> <LI>Search in the search box for<SPAN>&nbsp;</SPAN><STRONG>Logic App</STRONG></LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Logic App<SPAN>&nbsp;</SPAN></STRONG>from the results</LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Create</STRONG></LI> </UL> <P>Now fill out the form as follows:</P> <UL> <LI>Select your Azure subscription</LI> <LI>Select your Resource Group</LI> <LI>Type in a name</LI> <LI>Select your region</LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Review + Create</STRONG></LI> </UL> <P>You can now review your input – when everything looks OK, then select<SPAN>&nbsp;</SPAN><STRONG>Create</STRONG></P> <P>&nbsp;</P> <P>Azure will need a few seconds to deploy your brand new resource and notify you once this is completed. Once this is done,</P> <UL> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Workflows</STRONG></LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Add</STRONG></LI> <LI>Type in a name for your workflow</LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Stateful</STRONG></LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Create</STRONG></LI> </UL> <P>Now select your new workflow and follow these steps:</P> <UL> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Designer</STRONG></LI> <LI>From the left hands pane, select<SPAN>&nbsp;</SPAN><STRONG>Recurrence</STRONG><SPAN>&nbsp;</SPAN>as a trigger</LI> <LI>Fill out the form as follows for a weekly reminder on Sundays (as an example) by adding parameters<SPAN>&nbsp;</SPAN><STRONG>Start time<SPAN>&nbsp;</SPAN></STRONG>and<SPAN>&nbsp;</SPAN><STRONG>On these days</STRONG><SPAN>&nbsp;</SPAN>– For testing purposes I’d choose a higher frequency<SPAN>&nbsp;</SPAN> <DIV id="tinyMceEditorLuiseFreese_17" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P>&nbsp;</P> </LI> </UL> <DIV id="tinyMceEditorLuiseFreese_43" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Createworkflow.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298517iB563619783F212FE/image-size/medium?v=v2&amp;px=400" role="button" title="Createworkflow.png" alt="Createworkflow.png" /></span> <P> </P> <P>as stated above, there are (at least) two ways to call our Azure function, this is:</P> <H3>Option A with the built-in ‘Call an Azure Function’</H3> <UL> <LI>Select the<SPAN>&nbsp;</SPAN><STRONG>+<SPAN>&nbsp;</SPAN></STRONG>icon in the designer</LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Add an action</STRONG></LI> <LI>In the left hands pane, search for<SPAN>&nbsp;</SPAN><STRONG>Azure Fun</STRONG></LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Call an Azure Function</STRONG></LI> <LI>Select your Azure Function App</LI> <LI>Give your connection a name</LI> <LI>Select the function within your Functions app</LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Create</STRONG></LI> </UL> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_44-1627338250789.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298519i91CD9D57C38E7DE0/image-size/medium?v=v2&amp;px=400" role="button" title="LuiseFreese_44-1627338250789.png" alt="LuiseFreese_44-1627338250789.png" /></span> <P>&nbsp;</P> <UL> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Get</STRONG><SPAN>&nbsp;</SPAN>as Method</LI> <LI>Save your app.</LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Overview</STRONG></LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Run Trigger</STRONG></LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Run</STRONG></LI> </UL> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_45-1627338310190.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298520i428C939099DE1471/image-size/large?v=v2&amp;px=999" role="button" title="LuiseFreese_45-1627338310190.png" alt="LuiseFreese_45-1627338310190.png" /></span> <P>Note the custom output body that we defined in our Azure Function</P> <P>Now let’s discover the other option to call our Azure function:</P> <H3>Option B with the generic HTTP action</H3> <P>Create your workflow as above, but instead of searching for<SPAN>&nbsp;</SPAN><STRONG>Azure Fun</STRONG>, search for<SPAN>&nbsp;</SPAN><STRONG>HTTP</STRONG></P> <UL> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>HTTP</STRONG></LI> <LI>Select Method<SPAN>&nbsp;</SPAN><STRONG>GET</STRONG></LI> <LI>Enter the copied Azure functions URL as URI</LI> <LI><STRONG>Save</STRONG><SPAN>&nbsp;</SPAN>your workflow</LI> </UL> <P>Once again, you can see the outputs of your workflow run<SPAN>&nbsp;</SPAN></P> <DIV id="tinyMceEditorLuiseFreese_21" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_46-1627338363471.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298521iD75DF881270E1E6F/image-size/large?v=v2&amp;px=999" role="button" title="LuiseFreese_46-1627338363471.png" alt="LuiseFreese_46-1627338363471.png" /></span> <P>&nbsp;</P> <P>Next step, makes this even more secure by storing our Twilio token and the Twilio SID in an Azure Key vault so that we can refer to it in our app configuration.&nbsp;</P> <H2>Azure Key Vault</H2> <P>Head over to your Resource Group</P> <UL> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Create a resource</STRONG></LI> <LI>Search in the search box for<SPAN>&nbsp;</SPAN><STRONG>Key vault</STRONG></LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Key Vault<SPAN>&nbsp;</SPAN></STRONG>from the results</LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Create</STRONG></LI> </UL> <P>Now fill out the form as follows:&nbsp;<BR /><BR /></P> <DIV id="tinyMceEditorLuiseFreese_23" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_47-1627338404313.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298522iE82D294091A653C9/image-size/large?v=v2&amp;px=999" role="button" title="LuiseFreese_47-1627338404313.png" alt="LuiseFreese_47-1627338404313.png" /></span> <P>&nbsp;</P> <P>Review and select&nbsp;<STRONG>Create.</STRONG></P> <P>It will take a couple of seconds again for Azure to deploy your resource and you will be notified once the Key vault is ready for you.&nbsp;</P> <P>In our shiny new Key Vault, we need to store the key/value pairs for both Twilio SID and Twilio Auth Token:&nbsp;</P> <UL> <LI>(1) Select<SPAN>&nbsp;</SPAN><STRONG>Secrets</STRONG></LI> <LI>(2) Select<SPAN>&nbsp;</SPAN><STRONG>Generate/Import</STRONG></LI> <LI>Fill in the form as follows:&nbsp; <UL> <LI>Name:&nbsp;<STRONG>TWILIOTOKEN&nbsp;</STRONG>(watch out, no underscores allowed)</LI> <LI>Value: the&nbsp; copied Twilio token value from your Twilio dashboard</LI> </UL> </LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>Create</STRONG></LI> <LI>Repeat for<SPAN>&nbsp;</SPAN><STRONG>TWILIOSID</STRONG></LI> </UL> <P>&nbsp;</P> <DIV id="tinyMceEditorLuiseFreese_24" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_48-1627338540906.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298523iA2E6409DFE7FBF88/image-size/large?v=v2&amp;px=999" role="button" title="LuiseFreese_48-1627338540906.png" alt="LuiseFreese_48-1627338540906.png" /></span> <P>&nbsp;</P> <P>&nbsp;</P> <P>We will use these two secrets later again in our Azure Function, but to make this work, we first need to enable system-assigned Managed Identity to it and then add an access policy for our function app. If you never heard about that,<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">Yannick Reekmans blogged a series about secretless applications</A>.</P> <P>Head over to your Function app again and&nbsp;</P> <UL> <LI>(1) Select&nbsp;<STRONG>Identity</STRONG></LI> <LI>(2) Switch the Status toggle to<SPAN>&nbsp;</SPAN><STRONG>On</STRONG></LI> <LI>(3) Select&nbsp;<STRONG>Save</STRONG></LI> </UL> <DIV id="tinyMceEditorLuiseFreese_25" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_49-1627338576580.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298525i3669F349573900E8/image-size/medium?v=v2&amp;px=400" role="button" title="LuiseFreese_49-1627338576580.png" alt="LuiseFreese_49-1627338576580.png" /></span> <P>&nbsp;</P> <P>A Pop-up displaying the following message appears, select<SPAN>&nbsp;</SPAN><STRONG>Yes</STRONG></P> <DIV id="tinyMceEditorLuiseFreese_26" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_50-1627338604177.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298526i34043B978792114B/image-size/large?v=v2&amp;px=999" role="button" title="LuiseFreese_50-1627338604177.png" alt="LuiseFreese_50-1627338604177.png" /></span> <P>&nbsp;</P> <P>Now we will add the access policy to our Key vault so that our function may read the secrets. Head over to the Key vault and&nbsp;</P> <UL> <LI>(1) Select&nbsp;<STRONG>Access policy</STRONG></LI> <LI>(2) Select&nbsp;<STRONG>Add Access Policy</STRONG></LI> </UL> <DIV id="tinyMceEditorLuiseFreese_27" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_51-1627338622825.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298527i597BE5E5F421912B/image-size/large?v=v2&amp;px=999" role="button" title="LuiseFreese_51-1627338622825.png" alt="LuiseFreese_51-1627338622825.png" /></span> <P> </P> <BR /> <P>Now fill out the form as follows:&nbsp;</P> <UL> <LI>Key permissions:&nbsp;<STRONG>Get</STRONG><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><STRONG>List</STRONG></LI> <LI>Secret permissions:<SPAN>&nbsp;</SPAN><STRONG>Get</STRONG><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><STRONG>List</STRONG></LI> <LI>Certificate permissions:&nbsp;<STRONG>Get</STRONG><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><STRONG>List</STRONG></LI> <LI>Select principal:&nbsp; <UL> <LI>Search for the name of your functions app</LI> <LI>Select it</LI> <LI>Select&nbsp;<STRONG>Select</STRONG></LI> </UL> </LI> <LI>Select&nbsp;<STRONG>Add</STRONG></LI> <LI>Don’t forget to<SPAN>&nbsp;</SPAN><STRONG>Save</STRONG>&nbsp;</LI> </UL> <DIV id="tinyMceEditorLuiseFreese_28" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="accesspolicyform.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298528i34A6C906E0C8547E/image-size/large?v=v2&amp;px=999" role="button" title="accesspolicyform.png" alt="accesspolicyform.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Now that our function app has permission to read the secrets from our Key vault, we will reference to the secret in the functions app configuration and get rid of the hard coded values in there. For this, we only need the name of our vault and the name of the secrets&nbsp;TWILIOTOKEN and TWILIOSID.&nbsp;</P> <P>Let’s now add these to the app configuration of our functions app. Head over to the functions app and&nbsp;</P> <UL> <LI>Select&nbsp;<STRONG>Configuration</STRONG></LI> <LI>Select&nbsp;<STRONG>New Application Settings</STRONG></LI> </UL> <DIV id="tinyMceEditorLuiseFreese_29" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_52-1627338697431.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298529i8A7FB47F2F8F936F/image-size/large?v=v2&amp;px=999" role="button" title="LuiseFreese_52-1627338697431.png" alt="LuiseFreese_52-1627338697431.png" /></span> <P>&nbsp;</P> <P>&nbsp;</P> <UL> <LI>Fill out the form as follows:&nbsp; <UL> <LI>Name:<SPAN>&nbsp;</SPAN><STRONG>TWILIOSID</STRONG></LI> <LI>Value:<SPAN>&nbsp;</SPAN><STRONG><LI-USER uid="41501"></LI-USER>.KeyVault(VaultName=myvault;SecretName=mysecret)</STRONG></LI> <LI>Select<SPAN>&nbsp;</SPAN><STRONG>OK</STRONG></LI> </UL> </LI> <LI>Repeat for<SPAN>&nbsp;</SPAN><STRONG>TWILIOTOKEN</STRONG></LI> <LI>Don’t forget to<SPAN>&nbsp;</SPAN><STRONG>Save<BR /></STRONG></LI> </UL> <P>Now let’s get rid of our hard coded values in the app configuration to clean up things:&nbsp;</P> <DIV id="tinyMceEditorLuiseFreese_30" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <DIV id="tinyMceEditorLuiseFreese_0" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <DIV id="tinyMceEditorLuiseFreese_3" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="cleanup.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298535i215E2805F6795A53/image-size/large?v=v2&amp;px=999" role="button" title="cleanup.png" alt="cleanup.png" /></span></P> <P>&nbsp;</P> <P>Select the&nbsp;<STRONG>Delete</STRONG><SPAN>&nbsp;</SPAN>icon – please check twice to delete the right settings!&nbsp;</P> <P>Now we need to make sure that our Azure function looks at the right app settings.<BR />Select<SPAN>&nbsp;</SPAN><STRONG>Functions</STRONG></P> <UL> <LI>Select your function&nbsp;</LI> <LI>Select&nbsp;<STRONG>Code + Test</STRONG></LI> <LI>Replace the old environment variables by the new ones&nbsp;</LI> <LI>Don’t forget to<SPAN>&nbsp;</SPAN><STRONG>Save</STRONG></LI> </UL> <P><STRONG>That’s it – you made it work! And this is the result:&nbsp;</STRONG></P> <DIV id="tinyMceEditorLuiseFreese_31" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <DIV id="tinyMceEditorLuiseFreese_54" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P>&nbsp;</P> <DIV id="tinyMceEditorLuiseFreese_55" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LuiseFreese_56-1627338765021.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298530i73C8D175DCC8AAFB/image-size/medium?v=v2&amp;px=400" role="button" title="LuiseFreese_56-1627338765021.png" alt="LuiseFreese_56-1627338765021.png" /></span> <P><STRONG>You successfully</STRONG></P> <DIV id="tinyMceEditorLuiseFreese_32" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <UL> <LI><SPAN>&nbsp;</SPAN>created a resource group</LI> <LI><SPAN>&nbsp;</SPAN>build a function app with one function</LI> <LI><SPAN>&nbsp;</SPAN>called an API in that function</LI> <LI><SPAN>&nbsp;</SPAN>stored secrets in a Key Vault</LI> <LI><SPAN>&nbsp;</SPAN>assigned Managed Identity</LI> <LI><SPAN>&nbsp;</SPAN>referenced to your Key vault in your function app configuration</LI> <LI><SPAN>&nbsp;</SPAN>created a Logic app that kicks off the function weekly</LI> </UL> <H2>Conclusion &amp; what’s next?&nbsp;</H2> <P>&nbsp;</P> <P>Both approaches low code (Logic Apps) and Code (Azure Functions) tie in nicely together. Some thoughts though for everyone who wondered:&nbsp;</P> <UL> <LI>yes, you could get the same result with about 42 other approaches – there is no THE right way to do it</LI> <LI>yes, you can replace the the Logic App with a Power Automate flow – which comes with some disadvantages: <UL> <LI>the HTTP action requires a premium license</LI> <LI>you can’t easily monitor your entire solution in Azure as your flow would now not live in your resource group anymore</LI> <LI>your flow would run in a user’s context – or would need a service account ( MFA)</LI> <LI>you can’t easily templatize and deploy and redeploy your entire solution anymore as the flow is not part of your resource group.&nbsp;</LI> </UL> </LI> <LI>no, I did not want to use the Twilio connector in Power Automate or in Logic Apps which allows to send SMS<SPAN>&nbsp;</SPAN><EM>without a single line of code</EM><SPAN>&nbsp;</SPAN>– I was looking for a well documented service outside of Azure to showcase that we can call any API in Azure Functions. If you want to level up:&nbsp;</LI> <LI>the amazing<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">Chloe Condon</A><SPAN>&nbsp;</SPAN>delivered a session on IOT and Azure Functions,<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">watch the video here</A></LI> <LI>yes, you can do all of the above in Azure CLI as well, to get you started, please read here:<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">Azure Functions | Microsoft Docs</A></LI> </UL> <P>You have a more fancy use case? Let me know about it! Just imagine that we can integrate other services/data in Azure and/or Microsoft 365 and beyond – and decide if we want to do this in a low code or code manner.&nbsp;&nbsp;In my next post I will show how to templatize and deploy a solution.&nbsp;</P> <H2>Additional resources</H2> <P>&nbsp;</P> <P>#NeverStopLearning! Here are some resources that may help you get started!&nbsp;</P> <P><A href="#" target="_blank" rel="noopener">Getting started with Azure Functions | Microsoft Docs</A></P> <P><A href="#" target="_blank" rel="noopener">Quickstart - Create integration workflows with Azure Logic Apps in the Azure portal - Azure Logic Apps | Microsoft Docs</A></P> <P><A href="#" target="_blank" rel="noopener">Azure Quickstart - Set and retrieve a secret from Key Vault using Azure portal | Microsoft Docs</A></P> <P><A href="#" target="_blank" rel="noopener">Managed identities for Azure resources | Microsoft Docs</A></P> <P>&nbsp;</P> <P>&nbsp;</P> </DIV> Mon, 26 Jul 2021 23:21:03 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/the-friendly-sms-reminder-with-logic-apps-azure-functions-key/ba-p/2588691 Luise Freese 2021-07-26T23:21:03Z Power Apps Community Call – July 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/power-apps-community-call-july-2021/ba-p/2369716 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="900x506-JulyPAThumbslide.png" style="width: 900px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/298460i1972FB932E413944/image-size/large?v=v2&amp;px=999" role="button" title="900x506-JulyPAThumbslide.png" alt="900x506-JulyPAThumbslide.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN><STRONG>Call Summary:</STRONG></SPAN></P> <P>Topics covered in this month’s community call includes an inside look at the top 5 community selected apps (from over 20 entries) from Demo Extravaganza 2021! &nbsp;&nbsp;The winning submissions - Course Maker Solution, Number Puzzle, Pandemic Response Solution, Kitty Run! Game, and Sports Stats Tracker.&nbsp; After the demos were presented, call attendees selected with slim margins, <SPAN>the top app.&nbsp; </SPAN>Also, Recent Power Apps News and Community Contributions and Latest on <A href="#" target="_blank" rel="noopener">PnP Power Platform Samples Contributions</A>.&nbsp;&nbsp; This session included Q&amp;A in chat.&nbsp; The call was<SPAN> hosted by </SPAN>Todd Baginski (Canviz)<SPAN>.&nbsp; Demo presenters are </SPAN>Rory Neary, Krishna Rachakonda, Venkat Rao, Nghiem Doan, Aakash Jain, Nicholas Nguyen, Todd Baginski and Matt Schuessler.&nbsp; This call was rec<SPAN>orded </SPAN>on July 21, 2021<SPAN>.&nbsp; Thank for attending the call or viewing it on demand.&nbsp; </SPAN></P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/4fqinmOt_TQ" align="center" size="large" width="600" height="338" uploading="false" thumbnail="https://i.ytimg.com/vi/4fqinmOt_TQ/hqdefault.jpg" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN><STRONG>Demos:&nbsp;</STRONG></SPAN></P> <UL> <LI> <P><STRONG>Course Maker Solution</STRONG> – course management - Canvas + Model driven app that organizes 300 lessons (42 hours of Rory!) on his Learn Power Platform. &nbsp;&nbsp;Search for a topic in Stream videos, go right to topic in video.&nbsp; Simple app (relations, tables, galleries, forms) that sits on Dataverse.&nbsp; Assets organized by course, module, lesson, lesson point.&nbsp;&nbsp;&nbsp; Features Power BI Stories (Power BI report embedded in a Power App).&nbsp;</P> </LI> <LI> <P><STRONG>Number Puzzle</STRONG> – automated number shuffling board game using only Power Apps components.&nbsp;&nbsp; User selects puzzle type and challenge level.&nbsp; Objective - rearrange numbers in particular order quickly and with fewest moves.&nbsp; &nbsp;Mobile and desktop.&nbsp; On screen help.&nbsp; Play history is stored.&nbsp; Separate and comprehensive power App to explain Number Puzzle’s capabilities, functions, and approach to building game.&nbsp;&nbsp; 10 core Power Apps building blocks used.&nbsp; &nbsp;</P> </LI> <LI> <P><STRONG>Pandemic Response Solution</STRONG> – cost effective strategy for brick and mortar small business to engage customers differently using social networking and customer facing Power Apps Portal and mobile app, standard connectors – Twitter and Dataverse, custom connectors – Google Maps and Plant ID and a Delivery Planning app.&nbsp; Technology is leveraged to help identify needs, connect customers to knowledge, provide convenient options to buy and efficient delivery.&nbsp;&nbsp;&nbsp;</P> </LI> <LI> <P><STRONG>Kitty Run! Game</STRONG> –&nbsp;a procedurally generated gesture controlled endless runner (a.k.a. Kitty) built in Power Apps (a.k.a., the low code rapid application development platform that's NOT for making games, but then again, why not?)&nbsp; Go behind scenes to see how Kitty is configured to run, jump and fly.&nbsp; Appreciate blocking for full parallax randomly generated background scrolling along with collision detection, pause, reset, score, and timing functionality.&nbsp;</P> </LI> <LI> <P><STRONG>Sports Stats Tracker</STRONG> - a Power App that allows team statisticians to capture statics, without having to take their eyes off the action.&nbsp; Record data points verbally.&nbsp; Flow variables call Azure Cognitive Services to handle speech to text conversion, other functions align stats to players and game, formatting for and storing stats in Dataverse, and updating Power App UI.&nbsp; &nbsp;Review and edit past stats. &nbsp;Use for any sport.</P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Recent News &amp; Cool Stuff:</STRONG></P> <UL> <LI> <P>3<SUP>rd</SUP> annual Power Apps Demo Extravaganza 2021 wrap up - <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsDemoExtravaganza</A></P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Microsoft Power Platform: 2021 release wave 2 plan</A>&nbsp;</P> </LI> <LI> <P>News - <A href="#" target="_blank" rel="noopener">Power Virtual Agents Community Challenge for all Communities</A>&nbsp;</P> </LI> </UL> <P><SPAN><STRONG>&nbsp;</STRONG></SPAN></P> <P><SPAN><STRONG>Actions:&nbsp;</STRONG></SPAN></P> <UL> <LI>Join us for our next call: August 18, 2021 at 08:00am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/powerappscommunitycall</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Call Agenda:</STRONG></P> <UL> <LI>Demo Extravaganza! <UL> <LI><STRONG>Course Maker Solution</STRONG> – <A href="#" target="_blank" rel="noopener">Rory Neary</A>&nbsp;| @azurerory&nbsp;– <A href="#" target="_self">4:52</A></LI> <LI><STRONG>Number Puzzle</STRONG> – <A href="#" target="_self">Krishna Rachakonda</A> | @rachakonda78&nbsp;– <A href="#" target="_self">15:17</A></LI> <LI><STRONG>Pandemic Response Solution</STRONG> – Venkat Rao, Nghiem Doan and Aakash Jain&nbsp;– <A href="#" target="_self">26:37</A></LI> <LI><STRONG>Kitty Run! Game</STRONG> – <A href="#" target="_blank" rel="noopener">Nicholas Nguyen</A> | @PowerAppsGamer1&nbsp;– <A href="#" target="_self">43:21</A></LI> <LI><STRONG>Sports Stats Tracker</STRONG> -&nbsp;<A href="#" target="_self">Todd Baginski</A>&nbsp;| <LI-USER uid="720073"></LI-USER>,&nbsp;<A href="#" target="_self">Matt Schuessler</A>&nbsp;| @mattschues,&nbsp;<A href="#" target="_self">Hubert Sui</A>&nbsp;| @HubertSui, Sarah Meyer, and Damian Gibbs&nbsp; – <A href="#" target="_self">58:16</A></LI> </UL> </LI> <LI>Recent Power Apps News and Community Contributions –&nbsp;<A href="#" target="_self">Todd Baginski</A>&nbsp;| <LI-USER uid="720073"></LI-USER> and&nbsp;Charles Sterling (Microsoft) | @chass&nbsp;– <A href="#" target="_self">73:46</A></LI> <LI>Latest PnP Power Apps Samples –&nbsp;<A href="#" target="_self">Todd Baginski</A>&nbsp;| <LI-USER uid="720073"></LI-USER>&nbsp;– <A href="#" target="_self">74:47</A></LI> <LI>Demo Extravaganza 2021 Winner&nbsp;– <A href="#" target="_self">76:30</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Referenced in this session:</STRONG></P> <UL> <LI> <P>Courses – <A href="#" target="_blank" rel="noopener">Power Platform Learn</A>&nbsp;</P> </LI> <LI> <P>Demo - <A href="#" target="_self">Make your Power Apps user experience awesome with Gestalt design principles</A> - Rory Neary <LI-USER uid="449976"></LI-USER>&nbsp;&nbsp;</P> </LI> <LI> <P>Video - <A href="#" target="_blank" rel="noopener">Power Fx Canvas Apps from Zero to Hero</A></P> </LI> <LI> <P>Entry - <A href="#" target="_self">Course Maker Solution</A>&nbsp;</P> </LI> <LI>Video – <A href="#" target="_blank" rel="noopener">Power Apps Numbers Puzzle for Kids</A> (23 minute demo)&nbsp;</LI> <LI> <P>Repo – <A href="#" target="_blank" rel="noopener">NumberPuzzle</A>&nbsp;</P> </LI> <LI> <P>Entry - <A href="#" target="_self">Number Puzzle</A> &nbsp;</P> </LI> <LI> <P>Detect Plant API - <A href="#" target="_blank" rel="noopener">https://web.plant.id/plant-identification-api/</A></P> </LI> <LI> <P>Direction API - <A href="#" target="_blank" rel="noopener">https://developers.google.com/maps/documentation/directions/overview</A></P> </LI> <LI> <P>Maps Embed API - <A href="#" target="_blank" rel="noopener">https://developers.google.com/maps/documentation/embed/get-started</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Enable external access with Power Apps portals</A>&nbsp;</P> </LI> <LI> <P data-unlink="true">Site - <A href="#" target="_self">Greenthumb Power Apps Portal&nbsp;</A>&nbsp;</P> </LI> <LI> <P>Entry -&nbsp;<A href="#" target="_self">Pandemic Response Solution</A>&nbsp;</P> </LI> <LI> <P>Video - <A href="#" target="_blank">View one life of Kitty Run here!</A>&nbsp;</P> </LI> <LI> <P>Video - <A href="#" target="_blank">View Kitty Run mobile experience</A>&nbsp;</P> </LI> <LI> <P>Video - <A href="#" target="_self">View one life of Kitty Run here!&nbsp;</A></P> </LI> <LI> <P>Video - <A href="#" target="_self">View Kitty Run mobile experience</A>&nbsp;</P> </LI> <LI> <P>Entry -&nbsp;<A href="#" target="_self">Kitty Run! Game</A>&nbsp;</P> </LI> <LI>Documentation - <A href="#" target="_blank" rel="noopener">What is the Speech service?</A>&nbsp;</LI> <LI>Video - <A href="#" target="_blank" rel="noopener">Speech to text in PowerApps with Power Automate by Yash Kamdar at Hyd Power Apps &amp; Power Automate UG</A>&nbsp;</LI> <LI>Blog - <A href="#" target="_blank" rel="noopener">Convert Speech to Text in Power Apps</A>&nbsp;</LI> <LI>Repo - <A href="#" target="_blank" rel="noopener">Azure Function - WebM to Wav Audio</A>&nbsp;</LI> <LI>Blog - <A href="#" target="_blank" rel="noopener">Create a Power Automate (Flow) that creates an HTML File Using the Text Obtained from the Output of Speech to Text.</A>&nbsp;</LI> <LI>Documentation - <A href="#" target="_blank" rel="noopener">Use expressions in conditions to check multiple values</A>&nbsp;</LI> <LI>chrome web store - <A href="#" target="_blank" rel="noopener">Metadata Browser for Dynamics 365/Power Apps</A>&nbsp;</LI> <LI>Article - <A href="#" target="_blank" rel="noopener">Setting Lookup in a Flow CDS Connector: Classic vs. Current Environment connector</A></LI> <LI>Blog - <A href="#" target="_blank" rel="noopener">Microsoft Power Automate: Setting Up Lookup Value Using the CDS Connector</A>&nbsp;</LI> <LI>Article - <A href="#" target="_blank" rel="noopener">[POWER AUTOMATE] HOW TO SET LOOKUP FIELD VALUE IN COMMON DATA SERVICE (CURRENT ENVIRONMENT) FLOW CONNECTOR</A>&nbsp;</LI> <LI>Package - <A href="#" target="_blank" rel="noopener">Microsoft.Recognizers.Text.Number</A>&nbsp;</LI> <LI>Entry <STRONG>-&nbsp;</STRONG><A href="#" target="_self">Sports Stats Tracker</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Learn more:</STRONG>&nbsp;&nbsp;</P> <UL> <LI>See the full blog post for this call on the Tech Community Blog -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community/blog</A></LI> <LI>Microsoft’s<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Power Platform website</A></LI> <LI>Power Apps Training Resources -&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/PowerAppsTraining</A></LI> <LI>Power Apps Community -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">https://Community.PowerApps.com</A></LI> <LI><SPAN>Power Apps Community Samples -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/PowerAppsCommunitySamples</A></LI> <LI><SPAN>Power Apps Community Videos -</SPAN><A href="#" target="_blank" rel="noopener noreferrer">&nbsp;https://aka.ms/PowerAppsCommunityVideos</A></LI> <LI>PowerPlatformLearn Resources | <A href="#" target="_blank" rel="noopener">https://www.powerplatformlearn.academy</A></LI> <LI>PnP Power Platform Samples | <A href="#" target="_blank" rel="noopener">https://www.aks.ms/powerplatform-samples</A></LI> <LI>Power Addicts Hangout -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">https://wearepoweraddicts.com</A></LI> <LI>#LessCodeMorePower Video Series -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://www.youtube.com/playlist?list=PL8IYfXypsj2Cr4DUqMKYkGM-Wejfim2QX</A></LI> <LI>Share more - draw attention to your great work -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">#PowerAppsCC</A></LI> </UL> <P><SPAN><STRONG>&nbsp;</STRONG></SPAN></P> <P><SPAN><STRONG>Stay connected:&nbsp;</STRONG></SPAN></P> <UL> <LI><SPAN>Twitter:&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">https://twitter.com/MSPowerPlat</A></SPAN></LI> <LI><SPAN>Twitter -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://twitter.com/microsoft365dev</A><SPAN>​</SPAN></LI> <LI><SPAN>YouTube -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://aka.ms/M365DevYouTube</A><SPAN>​</SPAN></LI> <LI><SPAN>Blogs -&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community/blog</A></SPAN></LI> <LI><SPAN>Recurrent Invite -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/powerappscommunitycall</A></LI> </UL> Mon, 26 Jul 2021 18:56:46 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/power-apps-community-call-july-2021/ba-p/2369716 Todd Baginski 2021-07-26T18:56:46Z Microsoft 365 Developer Podcast - Secretless Apps with Christos Matskas https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-secretless-apps-with-christos/ba-p/2587076 <P>Christos Mastkas returns to the show to talk with Jeremy and Paul about "secretless" applications and the latest on Azure.Identity.</P> <P><IFRAME src="https://www.podbean.com/player-v2/?i=ad5pr-102874d-pb&amp;from=pb6admin&amp;share=0&amp;download=0&amp;rtl=0&amp;fonts=Courier%20New&amp;skin=1&amp;font-color=&amp;btn-skin=6" width="100%" height="150" scrolling="no" style="border: none; min-width: min(100%, 430px);" title="Secretless Apps with Christos Matskas" allowtransparency="true" data-name="pb-iframe-player"></IFRAME></P> <P>Listen to the show here:&nbsp; <A href="#" target="_blank">Secretless Apps with Christos Matskas (m365devpodcast.com)</A></P> <P>&nbsp;</P> <H2>Links from the show:</H2> <UL> <LI><A href="#" target="_blank">https://dev.to/425show</A></LI> <LI><A href="#" target="_blank">Secure APIs using Node.js, Azure AD, Cosmos DB and the Azure SDKs</A></LI> </UL> <H2>Microsoft News</H2> <UL> <LI><A href="#" target="_blank">Microsoft Graph Mailbag –&nbsp;Create engaging apps with the Microsoft Teams Activity Feed API</A></LI> <LI><A href="#" target="_blank">Utilize change notification APIs for Microsoft Teams messages</A></LI> <LI><A href="#" target="_blank">Beyond Calibri: Finding Microsoft’s next default font</A></LI> </UL> <H2>Community Links</H2> <UL> <LI><A href="#" target="_blank">hTWOo UI framework (@stfbauer)</A></LI> </UL> Mon, 26 Jul 2021 14:32:23 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-secretless-apps-with-christos/ba-p/2587076 paulschaeflein 2021-07-26T14:32:23Z Microsoft 365 Developer Community Call recording – 22nd of July, 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-community-call-recording-22nd-of-july/ba-p/2481291 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sig-recordingly-22nd-july.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297668i9AA5AB6D207BA15E/image-size/large?v=v2&amp;px=999" role="button" title="sig-recordingly-22nd-july.png" alt="sig-recordingly-22nd-july.png" /></span></P> <P>&nbsp;</P> <P><STRONG>Call Summary</STRONG></P> <P>Summer break and community call schedule updates reviewed. Preview the new <A href="#" target="_blank" rel="noopener">Microsoft 365 Extensibility look book gallery</A>.&nbsp; Looking to get started with Microsoft Teams development? &nbsp;Don’t miss out on our <A href="#" target="_blank" rel="noopener">Teams samples gallery</A> (updated sample browser in June), and the new Microsoft 365 tenant – <A href="#" target="_blank" rel="noopener">script samples gallery</A> - s<EM>cripts for PowerShell and CLIs.&nbsp; </EM>Sign up and attend one of a growing list of events hosted by <A href="#" target="_blank" rel="noopener">Sharing is Caring</A> this month.&nbsp; Announced <A href="#" target="_blank" rel="noopener">PnP Recognition Program</A> and availability of <A href="#" target="_blank" rel="noopener">Power Platform Samples</A>.&nbsp; Heads down on PnP project bug fixes, new idea prototyping, and vacationing this month.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Open-source project status:&nbsp; (Bold indicates new this call)</STRONG></P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="33.333333333333336%"><STRONG>Project</STRONG></TD> <TD width="33.333333333333336%"><STRONG>Current Version</STRONG></TD> <TD width="33.333333333333336%"><STRONG>Release/Status</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%">PnP .NET Libraries - PnP Framework</TD> <TD width="33.333333333333336%">v1.5.0 GA,&nbsp;<STRONG>PnP Provisioning Engine Schema v202103 released</STRONG></TD> <TD width="33.333333333333336%">Version 1.6.0 – Summer 2021</TD> </TR> <TR> <TD width="33.333333333333336%">PnP .NET Libraries - PnP Core SDK</TD> <TD width="33.333333333333336%">v1.2.0 GA</TD> <TD width="33.333333333333336%">Version 1.3.0 – Summer 2021</TD> </TR> <TR> <TD width="33.333333333333336%">PnP PowerShell</TD> <TD width="33.333333333333336%">v1.6.0 &nbsp;GA</TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - generator-teams</TD> <TD width="33.333333333333336%">v3.2.0 GA</TD> <TD width="33.333333333333336%">v3.3.0 Preview soonish</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - yoteams-build-core</TD> <TD width="33.333333333333336%">v1.2.0 GA, v1.2.1 Preview</TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD>Yo teams – yoteams-deploy</TD> <TD>v1.1.0 GA</TD> <TD>&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - msteams-react-base-component</TD> <TD width="33.333333333333336%">v3.1.0</TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Microsoft Graph Toolkit (MGT)</TD> <TD width="33.333333333333336%">v2.2.0 GA</TD> <TD width="33.333333333333336%">Bug fixes and Updates</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>Two new Teams samples showcasing Adaptive Cards Universal Action Model.&nbsp; Great work!&nbsp; The host of this call was <A href="#" target="_blank" rel="noopener">David Warner II</A> (Catapult Systems) @DavidWarnerII. &nbsp;&nbsp;Q&amp;A takes place in chat throughout the call.</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/ebOtM8LpAK4" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><STRONG>Actions:&nbsp;&nbsp;</STRONG></P> <P>&nbsp;</P> <P><STRONG>Register for Sharing is Caring Events</STRONG>:</P> <UL> <LI>Register for Sharing is Caring Events: <UL> <LI>First Time Contributor Session –&nbsp;<A href="#" target="_blank" rel="noopener">August 31<SUP>st</SUP></A> (EMEA, APAC &amp; US friendly times available)</LI> <LI>Community Docs Session –&nbsp;<A href="#" target="_blank" rel="noopener">August 23<SUP>rd</SUP></A></LI> <LI>PnP – SPFx Developer Workstation Setup – <A href="#" target="_blank" rel="noopener">August 24<SUP>th</SUP></A>&nbsp; &nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">July 27<SUP>th</SUP>, August 25<SUP>th</SUP></A></LI> <LI>Ask Me Anything – Power Platform Development &amp; Samples – <A href="#" target="_blank" rel="noopener">September 28<SUP>th</SUP></A></LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">August 30<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – TBS</LI> <LI>Maturity Model Practitioners – <A href="#" target="_blank" rel="noopener">August 17<SUP>th</SUP></A> and every 3<SUP>rd</SUP> Tuesday of month, 7:00am PT</LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> <LI>PnP Buddy System - <A href="#" target="_blank" rel="noopener">Request a Buddy</A></LI> </UL> </LI> <LI>Download the recurrent invite for this call –&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365-dev-sig</A></LI> <LI><SPAN>Call attention to your great work by using the&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">#PnPWeekly</A><SPAN>&nbsp;on Twitter.</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Microsoft Teams Development Samples:&nbsp;<SPAN>&nbsp;</SPAN></STRONG>(<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/TeamsSampleBrowser</A>)</P> <UL> <LI> <P><SPAN style="font-size: 10.5pt; font-family: 'Segoe UI',sans-serif;"><STRONG><A href="#" target="_blank" rel="noopener">Card Bot - Bot showcasing the Adaptive Card Universal Action Model in Node/TypeScript</A></STRONG> <FONT color="#000000">- <A href="#" target="_blank" rel="noopener">Rabia Williams</A> | <LI-USER uid="792201"></LI-USER></FONT></SPAN></P> </LI> <LI> <P><SPAN style="font-size: 10.5pt; font-family: 'Segoe UI',sans-serif;"><A href="#" target="_blank" rel="noopener"><STRONG>MS Teams Incident Management Bot</STRONG></A> - <A href="#" target="_blank" rel="noopener">Nanddeep Nachan</A> | <LI-USER uid="659867"></LI-USER></SPAN></P> </LI> </UL> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="wave3.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297870i2270943C845C368D/image-size/large?v=v2&amp;px=999" role="button" title="wave3.gif" alt="wave3.gif" /></span></P> <P>&nbsp;</P> <P>Thank you for making time in your Summer time schedule to join us for today's PnP Community call.&nbsp; &nbsp;You're awesome!&nbsp; &nbsp;</P> <P>&nbsp;</P> <P><STRONG>Demos</STRONG><SPAN>&nbsp;</SPAN>delivered in this session</P> <UL> <LI> <P><STRONG>Publish a connector to the Power Platform</STRONG> – announcement July 19, anyone can submit a connector to the Microsoft Power Platform, need not be the API owner.&nbsp; Hear about the mission, goals and benefits of the Independent Publisher Connector Program.&nbsp; See a demo of the Airtable connector in Power Automate.&nbsp; &nbsp;Learn about the certification process in GitHub, connectors being developed presently and about how to get plugged into program communications channels.&nbsp;</P> </LI> <LI> <P><STRONG>How to update an Adaptive Card with a Teams Messaging Extension and MessagePreview</STRONG> – call on an action-based messaging extension created with the Teams Yeoman Generator to post a simple adaptive card to a Microsoft Team's news channel.&nbsp; Post 'as a bot' and with an action to update the same adaptive card again and again, as opposed to a 1-time action.&nbsp; Use workflow to cap number of permissible card updates, if necessary.</P> </LI> <LI> <P><STRONG>ACS – Teams InterOp with Call Routing</STRONG> – see the seamless interoperation between Azure Communication Services (ACS) and Microsoft Teams that enables a business user with a Teams license to have a video call/chat with a citizen consumer who doesn’t have a Teams license.&nbsp; &nbsp;The B2C solution uses a Bot for agent routing, adaptive cards for communications, and ACS for a web-based video call from desktop or mobile.&nbsp; &nbsp;&nbsp;Sample in PnP samples repository.&nbsp; &nbsp;</P> </LI> </UL> <P>Thank you for your work. Samples are often showcased in Demos.</P> <P>&nbsp;</P> <P><STRONG>Topics</STRONG><SPAN>&nbsp;</SPAN>covered in this call</P> <UL> <LI>PnP .NET library updates -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">Paolo Pialorsi</A><SPAN>&nbsp;</SPAN>(PiaSys.com) | @paolopia&nbsp;-<SPAN>&nbsp;<A href="#" target="_self">7:46</A></SPAN></LI> <LI><SPAN>PnP PowerShell -&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">Paolo Pialorsi</A><SPAN>&nbsp;</SPAN>(PiaSys.com) | @paolopia&nbsp;<SPAN>- <A href="#" target="_self">9:01</A></SPAN></LI> <LI>yo Teams updates -&nbsp;<A href="#" target="_self" rel="nofollow noopener noreferrer">Paolo Pialorsi</A><SPAN>&nbsp;</SPAN>(PiaSys.com) | @paolopia&nbsp;<SPAN>- <A href="#" target="_self">9:50</A></SPAN></LI> <LI>Microsoft Graph Toolkit updates -&nbsp;<SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">Beth Pan</A>&nbsp;(Microsoft) |&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/user/viewprofilepage/user-id/803637" target="_blank" rel="noopener">@beth_panx</A></SPAN><SPAN>&nbsp;</SPAN>-<SPAN>&nbsp;<A href="#" target="_self">10:37</A></SPAN></LI> <LI>Microsoft Teams Samples -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">Bob German</A><SPAN>&nbsp;</SPAN>(Microsoft) | @Bob1German<SPAN>&nbsp;</SPAN><SPAN>- <A href="#" target="_self">11:55</A></SPAN></LI> <LI><SPAN>Microsoft Power Platform Samples - <A href="#" target="_self">April Dunnam</A> (Microsoft) | @aprildunnam - <A href="#" target="_self">13:05</A></SPAN></LI> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Publish a connector to the Power Platform – Natalie Pienkowska (Microsoft) - <A href="#" target="_self">14:54</A></P> </LI> <LI> <P><STRONG>Demo:</STRONG>&nbsp; How to update an Adaptive Card with a Teams Messaging Extension and MessagePreview – <A href="#" target="_blank" rel="noopener">Markus Möller</A> (Avanade) | @Moeller2_0 - <A href="#" target="_self">24:29</A></P> </LI> <LI> <P><STRONG>Demo:</STRONG>&nbsp; ACS – Teams InterOp with Call Routing – Sathya Raveendran (Microsoft)&nbsp;<SPAN style="font-family: inherit;">-</SPAN><SPAN style="font-family: inherit;">&nbsp;<A href="#" target="_self">34:56</A></SPAN><SPAN style="font-family: inherit;">&nbsp;</SPAN></P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>Additional resources around the covered topics and links from the slides.</P> <UL> <LI> <P>Repo - <A href="#" target="_blank" rel="noopener">Welcome to the Independent Publisher Connector Directory!</A>&nbsp;</P> </LI> <LI> <P>Blog - <A href="#" target="_blank" rel="noopener">New connectors through the Independent Publisher connector program</A>&nbsp;</P> </LI> <LI> <P>Blog - <A href="#" target="_blank" rel="noopener">Submit a connector to the Power Platform as an Independent Publisher</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Independent publisher certification process</A>&nbsp;</P> </LI> <LI> <P>Video - <A href="#" target="_blank" rel="noopener">Independent Publisher Connector Program</A>&nbsp;</P> </LI> <LI> <P>Blog - <A href="#" target="_blank" rel="noopener">How to update an Adaptive Card with a Teams Messaging Extension</A>&nbsp;</P> </LI> <LI> <P>Sample - <A href="#" target="_blank" rel="noopener">Action Preview - Microsoft Teams App</A>&nbsp;</P> </LI> <LI> <P>Sample - <A href="#" target="_blank" rel="noopener">Azure Communication Services – Teams InterOp with Call Routing</A>&nbsp;</P> </LI> <LI>Archives - Microsoft 365 PnP Weekly - <A href="#" target="_blank" rel="noopener">Videos</A>, <A href="#" target="_blank" rel="noopener">Podcasts</A>&nbsp;&nbsp;</LI> <LI>Samples - <A href="#" target="_blank" rel="noopener">Power Platform Samples</A> | <A href="#" target="_blank" rel="noopener">aka.ms/</A><A href="#" target="_blank" rel="noopener">powerplatform</A><A href="#" target="_blank" rel="noopener">-samples</A></LI> <LI><SPAN>Microsoft 365 tenant –&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Script Samples Gallery</A><SPAN>&nbsp;| aka.ms/script-samples</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/m365/extensibility</LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Microsoft Teams Samples Gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/teams-samples</LI> </UL> <P>&nbsp;</P> <P><STRONG>General resources</STRONG>:</P> <UL> <LI>PnP Teams Quickstart |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">aka.ms/pnp-teams-quickstart</A></LI> <LI>Microsoft Teams Toolkit v2.2 |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/teams-toolkit</A></LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp/ct-p/Microsoft365PnP" target="_blank" rel="noopener">Microsoft 365 PnP Community hub</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp/community&nbsp;</LI> <LI>Microsoft Graph Toolkit in Microsoft Learn |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/learn-mgt</A></LI> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint look book</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Yo Teams video training package</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">.NET Standard 2.0 version of SharePoint Online CSOM API</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 community (PnP) videos</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp-videos</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Teams Toolkit for Visual Studio Code</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">yo Teams</A><SPAN>&nbsp;</SPAN>| aka.ms/yoteams</LI> <LI>Video -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started using yo Teams</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Wictor Wilén</A><SPAN>&nbsp;</SPAN>(Avanade)| @wictor</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-sharepoint-blog/build-a-crisis-management-site-to-connect-people-and-information/ba-p/1216791?WT.mc_id=m365-24198-cxa" target="_blank" rel="noopener">Build a crisis management site to connect people and information</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Developer documentation</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spdev-docs</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Power Shell</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Modernization Partner Guidance</A><SPAN>&nbsp;</SPAN>- Feedback welcome</LI> <LI>Solution -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Building a modern search experiences with SharePoint Framework web parts</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Page transformation guidance</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Page transformation videos</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Modernization scanner</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 developer program site</A><SPAN>&nbsp;</SPAN>- Need to become a Tenant Admin to test look book capabilities? Get a Microsoft 365 E5 developer subscription (free tenant for 90 days)</LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">SharePoint Provisioning Service<SPAN>&nbsp;</SPAN></A>- Easily provision look book designs to any tenant in the world</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Provisioning templates on Github</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Provisioning Tenant Templates documentation</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Page Transformation webcast series</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Power Shell</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Modernization Tools</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Upcoming Calls | Recurrent Invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>SharePoint Framework call </STRONG>– July 29<SUP>th</SUP> at 7:00 am PDT<STRONG> |&nbsp;</STRONG><A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG>M365 General Dev call </STRONG>– August 5<SUP>th</SUP> at 7:00 am PDT<STRONG> |&nbsp;</STRONG><A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>Office add-in monthly call </STRONG>– August 11<SUP>th</SUP> at 8:00 am PDT<STRONG> |&nbsp;</STRONG><A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG>Adaptive Cards monthly call </STRONG>– August 12<SUP>th</SUP> at 9:00 am PDT<STRONG> |&nbsp;</STRONG><A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> <LI><STRONG>Power Apps monthly call </STRONG>– August 18<SUP>th</SUP> at 8:00 am PDT<STRONG> |&nbsp;</STRONG><A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A></LI> <LI><STRONG>Microsoft Identity Platform </STRONG>– August 19<SUP>th</SUP> at 9:00 am PDT<STRONG> |&nbsp;</STRONG><A href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A></LI> </UL> <P>&nbsp;</P> <P>General Microsoft 365 Dev Special Interest Group bi-weekly calls are targeted at anyone who's interested in the general Microsoft 365 development topics. This includes Microsoft Teams, Bots, Microsoft Graph, CSOM, REST, site provisioning, PnP PowerShell, PnP Sites Core, Site Designs, Microsoft Flow, PowerApps, Column Formatting, list formatting, etc. topics. More details on the Microsoft 365 community from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/m365pnp</A>. We also welcome community demos, if you are interested in doing a live demo in these calls!</P> <P>&nbsp;</P> <P>You can download recurrent invite from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/m365-dev-sig</A>. Welcome and join in the discussion. If you have any questions, comments, or feedback, feel free to provide your input as comments to this post as well. More details on the Microsoft 365 community and options to get involved are available from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp</A>.</P> <P>&nbsp;</P> <P><EM>“Sharing is caring”</EM></P> <HR /> <P><EM>Microsoft 365 PnP team, Microsoft - 22nd of July 2021</EM></P> Mon, 26 Jul 2021 20:06:58 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-community-call-recording-22nd-of-july/ba-p/2481291 Vesa Juvonen 2021-07-26T20:06:58Z Office Add-in Development Community (PnP) – July 2021 update https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/office-add-in-development-community-pnp-july-2021-update/ba-p/2576650 <P>The Office Add-ins developer platform team has new updates to share this month on Office Add-ins Patterns and Practices. PnP is a community effort, so if you’re interested in contributing, see our <A href="#" target="_self">good first issue list</A>.</P> <P>&nbsp;</P> <H2>Use Outlook event-based activation to tag external recipients (preview)</H2> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="pnp-outlook-tag-external.png" style="width: 800px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297725i89CD213D6303C069/image-size/large?v=v2&amp;px=999" role="button" title="pnp-outlook-tag-external.png" alt="Diagram showing new email with added external recipient. OnMessageRecipientsChange event is sent to Outlook add-in. Add-in prepends the text external to the subject line" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Diagram showing new email with added external recipient. OnMessageRecipientsChange event is sent to Outlook add-in. Add-in prepends the text external to the subject line</span></span></P> <P>&nbsp;</P> <P>This sample uses event-based activation to run an Outlook add-in when the user creates a new message or appointment. The add-in can respond to events, even when the task pane is not open. It registers for the OnMessageRecipientsChanged event. If the message has external recipients, the add-in prepends "[External]" to the message subject. When the user sends an email message that includes external recipients, the add-in appends a disclaimer to the message.</P> <UL> <LI>Check out the code sample: <A href="#" target="_self">Use Outlook event-based activation to tag external recipients (preview)</A></LI> <LI>Check out the docs: <A href="#" target="_self">Configure your Outlook add-in for event-based activation (preview)</A></LI> </UL> <H2>Insert an external Excel file and populate it with JSON data</H2> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="pnp-outlook-set-signature.png" style="width: 800px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297726i3CCC9EE75A5C8BF5/image-size/large?v=v2&amp;px=999" role="button" title="pnp-outlook-set-signature.png" alt="Diagram showing a worksheet inserted into the current workbook from an external Excel file" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Diagram showing a worksheet inserted into the current workbook from an external Excel file</span></span></P> <P>&nbsp;</P> <P>This sample shows how to insert an existing template from an external Excel file into the currently open Excel file. Then it retrieves data from a JSON web service and populates the template for the customer.</P> <UL> <LI>Check out the code sample: <A href="#" target="_self">Insert an external Excel file and populate it with JSON data</A></LI> <LI>Check out the docs: <A href="#" target="_self">insertWorksheetsFromBase64 method</A></LI> </UL> <H2>SSO samples updated</H2> <P>We moved the SSO samples to the PnP repo. We also updated them to the latest packages and libraries. You can find them here:</P> <UL> <LI><A href="#" target="_self">Single Sign-on (SSO) sample Outlook add-in</A></LI> <LI><A href="#" target="_self">Office Add-in that supports Single Sign-on (SSO) using Node.js</A></LI> <LI><A href="#" target="_self">Office Add-in that supports Single Sign-on (SSO) using ASP.NET</A></LI> </UL> <H2>Want to contribute?</H2> <P>PnP is a community effort by developers like you. Check out our <A href="#" target="_self">good first issue list</A> as a great place to help with some samples. Feel free to contribute to existing samples or create new ones.</P> <H2>About Office Add-ins Patterns &amp; Practices (PnP)</H2> <P>Office Add-ins PnP is a Microsoft-led, community driven effort that helps developers extend, build, and provision customizations on the Office platform the right way by providing guidance and help through official documentation and open-source initiatives. The source is maintained in GitHub where anyone can participate and provide contributions to the samples, reusable components, and documentation. Office Add-ins PnP is owned and coordinated by Office engineering teams, but the work is done by the community for the community.<BR />Find code samples for Office Add-in development in the <A href="#" target="_self">Office Add-ins PnP repo</A>. Some samples are also documented in the <A href="#" target="_self">Office Add-ins docs</A>, such as <A href="#" target="_self">Open in Excel</A>.</P> <H2>Additional resources</H2> <UL> <LI>Get started with Office development by joining the <A href="#" target="_self">Microsoft 365 developer program</A>.</LI> <LI>Try out some samples and get coding quickly with Office add-ins by downloading <A href="#" target="_self">Script Lab</A>.</LI> <LI>Automate your solutions with <A href="#" target="_self">Office Scripts</A>.</LI> </UL> <P><BR />Learn more by joining the monthly <A href="#" target="_self">Office Add-ins community call</A>.</P> Thu, 22 Jul 2021 20:24:17 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/office-add-in-development-community-pnp-july-2021-update/ba-p/2576650 David Chesnut 2021-07-22T20:24:17Z Office Add-ins community call – July 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/office-add-ins-community-call-july-2021/ba-p/2573384 <H2>Call Summary:</H2> <P>Unfortunately, we had technical difficulties and were unable to record this month’s call. We’ll record the presentations again and update this blog with links when they are ready.<BR />This month’s community call featured presentations:</P> <UL> <LI><STRONG>Shared mailboxes in Outlook</STRONG>&nbsp;- Juan Balmori (Microsoft) and Ankush Oberoi (Microsoft) discussed shared mailboxes and shared folders. <A href="#" target="_self">Shared mailbox</A> is now in preview and we encourage you to try it out and give us feedback at <A href="#" target="_blank" rel="noopener">https://github.com/OfficeDev/office-js/issues</A>.</LI> <LI><STRONG>Message recipients changed event for Outlook</STRONG> - Elizabeth Samuel (Microsoft) shared a new PnP sample demonstrating how to use the Recipients Changed event to tag an email when there are external recipients.</LI> </UL> <H2><BR />Q&amp;A (Question &amp; Answers)</H2> <P><BR />Due to the technical difficulties we had on this call, we could not access the chat to read your questions and provide follow-up. If you had a question that did not get answered during the call, or in this blog, please reach out to us by using our short <A href="#" target="_self">survey form</A>. We’ll address any questions you have during the next call.</P> <P>&nbsp;</P> <P><STRONG>Can you add some additional error handling around failure cases for an Outlook add-in that uses the On-send event? We have a scenario where if an On-send add-in fails due to service outage users are unable to send emails unless an admin performs a companywide deactivation of the add-in. It would be helpful to let end-users still send their emails if the On-send add-in fails to load or throws an unhandled exception.</STRONG></P> <P><BR />That’s by design for the On-send event when we released the 1.8 requirement set. The good news is that the team is working on enabling a new version of this event that will deal with the “add-in unavailable” cases. We are working to get this into preview soon, so please keep an eye out on future community calls.</P> <P><BR /><STRONG>On the iOS and Android platforms, you only support Outlook API 1.5. Do you think we will see support for 1.6+ before 2022?</STRONG></P> <P><BR />We have this in our backlog, but we don't yet have an ETA.</P> <P><BR /><STRONG>Outlook on mobile still does not support compose mode add-ins, or the On-send event. This was a highly requested feature on the UserVoice system. When will Outlook on mobile support both of these? How did the 'Exclaimer' add-in from June 2021's community call work on Outlook mobile without support for compose mode add-ins?</STRONG></P> <P><BR />We have this in our backlog, but we don't yet have an ETA. The Exclaimer add-in isn’t designed for use on Outlook on mobile.</P> <P><BR /><STRONG>Is there a way to write a CSV file to the local computer’s storage where the add-in is running?</STRONG></P> <P><BR />Office Add-ins run in a browser runtime and only have the capabilities of any web app running in a browser. It's not possible to write directly to disk from the browser in any way that works cross-platform. A recommended approach to write to a CSV file is to <A href="#" target="_self">write to files using Microsoft Graph and OneDrive</A>.</P> <P>&nbsp;</P> <H2>Resources</H2> <H3><BR />Outlook shared mailbox</H3> <UL> <LI><A href="#" target="_self">Create a shared mailbox - Microsoft 365 admin | Microsoft Docs</A></LI> <LI><A href="#" target="_self">Remove automapping for a shared mailbox - Outlook | Microsoft Docs</A></LI> <LI> <P><A href="#" target="_self">Enable shared folders and shared mailbox scenarios in an Outlook add-in | Microsoft Docs</A></P> </LI> </UL> <H3><BR />PnP: Use Outlook event-based activation to tag external recipients (preview)</H3> <UL> <LI>PnP sample: <A href="#" target="_self">Use Outlook event-based activation to tag external recipients (preview)</A></LI> </UL> <H3><BR />Office Add-ins community call</H3> <UL> <LI><A href="#" target="_self">Recurring, monthly community call calendar invite</A></LI> <LI><A href="#" target="_self">Community call topic requests and questions</A></LI> <LI>Community call recordings on the <A href="#" target="_self">YouTube Microsoft 365 community channel</A></LI> </UL> <H3><BR />Office Add-ins feedback</H3> <UL> <LI>Technical questions – Microsoft Q&amp;A (<A href="#" target="_self">office-js-dev</A>), (<A href="#" target="_self">office-addins-dev</A>)</LI> <LI>Issues – <A href="#" target="_self">GitHub</A></LI> <LI>Recommendations and suggestions – <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-developer-platform/idb-p/Microsoft365DeveloperPlatform" target="_self">Microsoft 365 Developer Platform ideas</A></LI> </UL> <P><BR />The next Office Add-ins community call is on Wednesday, August 11, 2021 at 8:00AM PDT. Get the calendar invite at <A href="#" target="_self">https://aka.ms/officeaddinscommunitycall</A>.</P> <P>&nbsp;</P> Mon, 26 Jul 2021 20:46:28 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/office-add-ins-community-call-july-2021/ba-p/2573384 David Chesnut 2021-07-26T20:46:28Z Microsoft 365 Developer Podcast - Azure AD Entitlement Management and Governance with Elisabeth Olso https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-azure-ad-entitlement-management/ba-p/2575363 <P>Elisabeth Olson joins the show to answer questions about Azure AD Entitlement management and other AAD governance topics.</P> <P><IFRAME src="https://www.podbean.com/player-v2/?i=4p2b7-103b388-pb&amp;from=pb6admin&amp;share=0&amp;download=0&amp;rtl=0&amp;fonts=Courier%20New&amp;skin=1&amp;font-color=auto&amp;btn-skin=6" width="100%" height="150" scrolling="no" style="border: none; min-width: min(100%, 430px);" title="Azure AD Entitlement Management and Governance with Elisabeth Olson" allowtransparency="true" data-name="pb-iframe-player"> </IFRAME></P> <P>Listen to the show here:&nbsp; <A href="#" target="_blank"> (m365devpodcast.com)</A></P> <P>&nbsp;</P> <H2>Links from the show:</H2> <UL> <LI><A href="#" target="_blank">What is Azure AD entitlement management?</A></LI> <LI><A href="#" target="_blank">Azure Active Directory Identity Governance documentation</A></LI> </UL> <H2>Microsoft News</H2> <UL> <LI><A href="#" target="_blank">Microsoft Graph Mailbag –&nbsp;Azure AD applications and users for testing</A></LI> <LI><A href="#" target="_blank">Microsoft Graph .NET SDK v4 adds enhanced features –&nbsp;now in preview</A></LI> <LI><A href="#" target="_blank">425 Show: A visit from the Graph Team and then some more B2C custom policies</A></LI> </UL> <H2>Community Links</H2> <UL> <LI><A href="#" target="_blank">SPFx People Search web part, v2.5.0</A></LI> </UL> Thu, 22 Jul 2021 13:47:07 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-azure-ad-entitlement-management/ba-p/2575363 paulschaeflein 2021-07-22T13:47:07Z Microsoft Identity Platform community call – July 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-identity-platform-community-call-july-2021/ba-p/2571596 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SessionGraphic.png" style="width: 669px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/297428iBFDECE82381A4869/image-size/large?v=v2&amp;px=999" role="button" title="SessionGraphic.png" alt="SessionGraphic.png" /></span></P> <P>&nbsp;</P> <P><STRONG>Call Summary:&nbsp;&nbsp;</STRONG></P> <P><SPAN>This month’s in-depth topic:&nbsp; </SPAN><STRONG>From zero to hero with Microsoft Graph API</STRONG><SPAN>.&nbsp;&nbsp; This session opens with an overview of Microsoft Graph services and the Microsoft Graph Explorer tool.&nbsp; Then the presenter dives into access and permissions - source and access tokens, and REST API for CRUD operations including querying examples – filter, select, paging, batching, and throttling in Graph Explorer.&nbsp; There is a substantive review of metadata (queryable resources and their JSON structure, types, properties…), and finally options for automation &amp; DevOps (app registration, OAuth, policies, deployment).&nbsp; </SPAN>This session was delivered by Microsoft Program Managers Christer Ljung and Rohit Gulati and was recorded on July 15, 2021.&nbsp; Live and in-chat Q&amp;A throughout call.&nbsp;</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/LaBY6Jdhu5Q" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><SPAN><STRONG>Resources:</STRONG></SPAN></P> <UL> <LI><SPAN>Documentation – </SPAN><A href="#" target="_blank" rel="noopener">Microsoft Graph</A> | <A href="#" target="_blank" rel="noopener">https://graph.microsoft.com/</A></LI> <LI><SPAN>Tool – </SPAN><A href="#" target="_blank" rel="noopener">Graph Explorer</A><SPAN> | </SPAN><A href="#" target="_blank" rel="noopener">https://developer.microsoft.com/graph/graph-explorer</A></LI> <LI><SPAN>Deck used for call attached to this blog post contains many links to resources.</SPAN></LI> </UL> <P><SPAN><STRONG>&nbsp;</STRONG></SPAN></P> <P><SPAN><STRONG>Actions:&nbsp;&nbsp;</STRONG></SPAN></P> <UL> <LI> <P>Let us know how we’re doing and suggest topics for future calls, please complete this survey<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/IDDevCommunityCallSurvey</A></P> </LI> <LI>Mark your calendar.&nbsp; The next Identity Platform Community Call is on August 19th</LI> </UL> <P><SPAN><STRONG>&nbsp;</STRONG></SPAN></P> <P><SPAN><STRONG>Stay connected:</STRONG></SPAN></P> <UL> <LI><SPAN>Twitter&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://twitter.com/microsoft365dev</A><SPAN>​ and&nbsp;</SPAN>@azuread</LI> <LI><SPAN>YouTube&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://aka.ms/M365DevYouTube</A><SPAN>​</SPAN></LI> <LI><SPAN>Blog</SPAN><SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community/blog</A></LI> <LI>Recurrent Invite&nbsp;<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/IDDevCommunityCalendar</A>&nbsp;</LI> </UL> Wed, 21 Jul 2021 19:11:15 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-identity-platform-community-call-july-2021/ba-p/2571596 ViewPorter 2021-07-21T19:11:15Z Microsoft 365 Developer Podcast - Microsoft Teams Toolkit with Zhenya Savchenko and Tim Ng https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-microsoft-teams-toolkit-with/ba-p/2561993 <P>Zhenya Savchenko and Tim Ng from the Developer Division at Microsoft join Jeremy and Paul to talk about the Microsoft Teams Toolkit.</P> <P><IFRAME src="https://www.podbean.com/player-v2/?i=bgyya-1092212-pb&amp;from=pb6admin&amp;share=0&amp;download=0&amp;rtl=0&amp;fonts=Courier%20New&amp;skin=1&amp;font-color=auto&amp;btn-skin=6" width="100%" height="150" scrolling="no" style="border: none; min-width: min(100%, 430px);" title="Microsoft Teams Toolkit with Zhenya Savchenko and Tim Ng" allowtransparency="true" data-name="pb-iframe-player"></IFRAME></P> <P>Listen to the show here:&nbsp; <A href="#" target="_blank"> (m365devpodcast.com)</A></P> <P>&nbsp;</P> <H2>Links from the show:</H2> <UL> <LI><A href="#" target="_blank">Microsoft Teams Framework (TeamsFx)</A></LI> <LI><A href="#" target="_blank">Teams Toolkit for Visual Studio (Preview)</A></LI> <LI><A href="#" target="_blank">Teams Toolkit for VSCode (Preview)</A></LI> <LI><A href="#" target="_blank">Single sign-on (SSO) support for tabs</A></LI> <LI><A href="#" target="_blank">Developer Portal (Preview)</A></LI> <LI><A href="#" target="_blank">https://aka.ms/teamsdevdocs</A></LI> </UL> <H2>Microsoft News</H2> <UL> <LI><A href="#" target="_blank">MSAL for React is here!</A></LI> <LI><A href="#" target="_blank">MSAL for Angular v2 is now available</A></LI> </UL> <H2>Community Links</H2> <UL> <LI><A href="#" target="_blank">Azure AD User Account Federation Report (@darrenjrobinson)</A></LI> </UL> Mon, 19 Jul 2021 12:37:30 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-microsoft-teams-toolkit-with/ba-p/2561993 paulschaeflein 2021-07-19T12:37:30Z Get Associated Groups (Owners, Members, Visitors) of a SharePoint Site https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/get-associated-groups-owners-members-visitors-of-a-sharepoint/ba-p/2559637 <P>There will be cases where you want to know the associated Owner or a Member or a Visitor group of a specific SharePoint site. This will be very much needed if you want to,</P> <OL> <LI>assign permission</LI> <LI>to get the owners from the Owner Group.</LI> <LI>Or many many other use cases</LI> </OL> <P>This will be super helpful if you want to get the default groups when you get the Web properties. Especially when you are automating web provisioning along with the Permissions.</P> <P>For doing that you can use the properties like<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">associatedOwnerGroup</A>,<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">associatedMemberGroup</A>,<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">associatedVisitorGroup</A><SPAN>&nbsp;</SPAN>in REST API for getting the SP Web Properties REST API -<SPAN>&nbsp;</SPAN><CODE class="language-plaintext highlighter-rouge"><A href="#" target="_blank" rel="noopener">https://contoso.sharepoint.com/sites/contososite/_api/web</A></CODE>.</P> <P>So the entire REST call with all the associated groups (<CODE class="language-plaintext highlighter-rouge">associatedOwnerGroup</CODE>,<SPAN>&nbsp;</SPAN><CODE class="language-plaintext highlighter-rouge">associatedMemberGroup</CODE>,<SPAN>&nbsp;</SPAN><CODE class="language-plaintext highlighter-rouge">associatedVisitorGroup</CODE>), your complete REST API endpoint would look something like below</P> <P><CODE class="language-plaintext highlighter-rouge"><A href="#" target="_blank" rel="noopener">https://contoso.sharepoint.com/sites/contososite/_api/web?</A></CODE></P> <P><CODE class="language-plaintext highlighter-rouge">$expand=AssociatedOwnerGroup,AssociatedMemberGroup,AssociatedVisitorGroup</CODE></P> <P>The above REST call would fetch the associated group information of a particular SharePoint Web. Once you execute the API, you will get the result something like below.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="json">{ "AssociatedMemberGroup": { "Id": 5, "IsHiddenInUI": false, "LoginName": "Contoso Site Members", "Title": "Contoso Site Members", "PrincipalType": 8, "AllowMembersEditMembership": true, "AllowRequestToJoinLeave": false, "AutoAcceptRequestToJoinLeave": false, "Description": null, "OnlyAllowMembersViewMembership": false, "OwnerTitle": "Contoso Site Owners", "RequestToJoinLeaveEmailSetting": "" }, "AssociatedOwnerGroup": { "Id": 3, "IsHiddenInUI": false, "LoginName": "Contoso Site Owners", "Title": "Contoso Site Owners", "PrincipalType": 8, "AllowMembersEditMembership": false, "AllowRequestToJoinLeave": false, "AutoAcceptRequestToJoinLeave": false, "Description": null, "OnlyAllowMembersViewMembership": false, "OwnerTitle": "Contoso Site Owners", "RequestToJoinLeaveEmailSetting": "" }, "AssociatedVisitorGroup": { "Id": 4, "IsHiddenInUI": false, "LoginName": "Contoso Site Visitors", "Title": "Contoso Site Visitors", "PrincipalType": 8, "AllowMembersEditMembership": false, "AllowRequestToJoinLeave": false, "AutoAcceptRequestToJoinLeave": false, "Description": null, "OnlyAllowMembersViewMembership": false, "OwnerTitle": "Contoso Site Owners", "RequestToJoinLeaveEmailSetting": "" } }</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN>This also would be super handy if you want to have a&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">Power Automate</A><SPAN>&nbsp;which will assign users to default SharePoint Owner or Member of Visitor Group.</SPAN></P> <P>&nbsp;</P> <H3 id="get-associated-groups-in-scripts-for-automation">Get Associated Groups in scripts for automation</H3> <P><SPAN>If you want to have the same functionality for writing automated scripts,&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">CLI for Microsoft 365</A><SPAN>&nbsp;has a command called&nbsp;</SPAN><CODE class="language-plaintext highlighter-rouge">m365 spo web get</CODE><SPAN>. If you execute&nbsp;</SPAN><CODE class="language-plaintext highlighter-rouge">m365 spo web get</CODE><SPAN>&nbsp;with the option,&nbsp;</SPAN><CODE class="language-plaintext highlighter-rouge">--withGroups</CODE><SPAN>&nbsp;you will get the complete Web Properties along with the associated groups (</SPAN><CODE class="language-plaintext highlighter-rouge">associatedOwnerGroup</CODE><SPAN>,&nbsp;</SPAN><CODE class="language-plaintext highlighter-rouge">associatedMemberGroup</CODE><SPAN>,&nbsp;</SPAN><CODE class="language-plaintext highlighter-rouge">associatedVisitorGroup</CODE><SPAN>). </SPAN></P> <P>&nbsp;</P> <P><SPAN>Supercool isn’t it?</SPAN></P> Mon, 19 Jul 2021 10:14:21 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/get-associated-groups-owners-members-visitors-of-a-sharepoint/ba-p/2559637 arjunumenon 2021-07-19T10:14:21Z SharePoint Framework Community Call – 15th of July, 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-15th-of-july-2021/ba-p/2481294 <P>SharePoint Framework Special Interest Group (SIG) bi-weekly community call recording from July 15th is now available from the Microsoft 365 Community YouTube channel at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp-videos</A>. You can use SharePoint Framework for building solutions for<SPAN>&nbsp;</SPAN><STRONG>Microsoft Teams</STRONG><SPAN>&nbsp;</SPAN>and for<SPAN>&nbsp;</SPAN><STRONG>SharePoint</STRONG><SPAN>&nbsp;</SPAN>Online.</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/RwgpMcqLgrs" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><STRONG>Call summary:</STRONG></P> <P>&nbsp;</P> <P>Summer and Fall community call schedule updates reviewed.&nbsp; Register today for July/August events on <A href="#" target="_blank" rel="noopener">Sharing-is-caring</A>.&nbsp; &nbsp;<A href="#" target="_blank" rel="noopener">PnP Recognition Program</A> announced.&nbsp; &nbsp;Coming soon - Viva Connections public developer preview! &nbsp;&nbsp;Update on SharePoint Framework v1.13.0 beta to be released at end of July with Viva Connections preview extensibility and more. &nbsp;&nbsp;&nbsp;Delivered - project releases include <STRONG>PnPjs Client-side Libraries</STRONG> v2.7.0, <STRONG>CLI for Microsoft 365</STRONG> v3.12.0 Preview, and <STRONG>PnP Modern Search</STRONG> v4.3.0 &amp; v3.21.0.&nbsp; &nbsp;</P> <P>&nbsp;</P> <P><STRONG>Latest project updates include:&nbsp;</STRONG><SPAN>&nbsp;</SPAN>(<STRONG>Bold<SPAN>&nbsp;</SPAN></STRONG>indicates update from previous report 2 weeks ago)&nbsp;</P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="33.333333333333336%" height="30px"><STRONG>PnP Project</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>Current version</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>Release/Status</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">SharePoint Framework (SPFx)</TD> <TD width="33.333333333333336%" height="30px">v1.12.1&nbsp;</TD> <TD width="33.333333333333336%" height="30px"><STRONG>v1.13.0 Beta end of July</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">PnPjs Client-Side Libraries</TD> <TD width="33.333333333333336%" height="30px"><STRONG>v2.7.0</STRONG></TD> <TD width="33.333333333333336%" height="30px">v2.7.0 scheduled for July 9, v3.0.0 developments underway</TD> </TR> <TR> <TD width="33.333333333333336%" height="57px">CLI for Microsoft 365</TD> <TD width="33.333333333333336%" height="57px"><STRONG>v3.12.0 Preview,</STRONG>&nbsp;v4.0.0 Preview&nbsp;</TD> <TD width="33.333333333333336%" height="57px">v4.0.0 to release this fall</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">Reusable SPFx React Controls</TD> <TD width="33.333333333333336%" height="30px">v2.8.0 (SPFx v1.11), v3.2.1 (SPFx v1.12.1)</TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">Reusable SPFx React Property Controls</TD> <TD width="33.333333333333336%" height="30px">v2.7.0 (SPFx v1.11), v3.2.0 (SPFx v1.12.1)</TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">PnP SPFx Generator</TD> <TD width="33.333333333333336%">v1.16.0</TD> <TD width="33.333333333333336%">v1.17.0 on the way</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">PnP Modern Search</TD> <TD width="33.333333333333336%" height="30px"><STRONG>v4.3.0 &amp; v3.21.0</STRONG></TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>There were 2 <STRONG>PnP SPFx extensions </STRONG>and <STRONG>7 web part samples</STRONG> delivered in the last 2 weeks as well. &nbsp;Way to go contributors!&nbsp;&nbsp;&nbsp; The host of this call is <A href="#" target="_blank" rel="noopener">David Warner II</A> (Catapult Systems) @DavidWarnerII.&nbsp; Q&amp;A takes place in chat throughout the call.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="210715-together-mode.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/296267i954E5343FDBB2C59/image-size/large?v=v2&amp;px=999" role="button" title="210715-together-mode.gif" alt="210715-together-mode.gif" /></span></P> <P>&nbsp;</P> <P>It's great to see spirits are high in the month of July!&nbsp; &nbsp;Nice to see everyone.&nbsp; &nbsp;See you again soon!&nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Actions:</STRONG></P> <UL> <LI>Register for Sharing is Caring Events: <UL> <LI>First Time Contributor Session –&nbsp;<A href="#" target="_blank" rel="noopener">August 31<SUP>st</SUP></A> (EMEA, APAC &amp; US friendly times available)</LI> <LI>Community Docs Session –&nbsp;<A href="#" target="_blank" rel="noopener">August 23<SUP>rd</SUP></A></LI> <LI>PnP – SPFx Developer Workstation Setup – <A href="#" target="_blank" rel="noopener">August 24<SUP>th</SUP></A> &nbsp;&nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">July 27<SUP>th</SUP>, August 25<SUP>th</SUP></A></LI> <LI>Ask Me Anything – Power Platform Development &amp; Samples – <A href="#" target="_blank" rel="noopener">September 28<SUP>th</SUP></A></LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">August 30<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – <A href="#" target="_blank" rel="noopener">July 20<SUP>th</SUP></A></LI> <LI>Maturity Model Practitioners – <A href="#" target="_blank" rel="noopener">July 20<SUP>th</SUP></A> and every 3<SUP>rd</SUP> Tuesday of month, 7:00am PT</LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> <LI>PnP Buddy System - <A href="#" target="_blank" rel="noopener">Request a Buddy</A></LI> </UL> </LI> <LI>Download the recurrent invite for this call –&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spdev-spfx-call</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Demos:</STRONG></P> <UL> <LI> <P><STRONG>Building a COVID attestation solution for Microsoft Teams and Viva Connections with SPFx</STRONG> – a personal app that collects information from users and provides a custom dashboard for working with the results.&nbsp; Dashboard has a Viva Connection COVID-19 attestation card built with Adaptive Card Extensions (ACE) and SPFx v1.13.&nbsp; &nbsp;From Card View, users answer attestation questions in Quick View.&nbsp; &nbsp;A cool capability - questions on Quick View card can be updated by Admin without having to modify Quick View template!&nbsp;</P> </LI> <LI> <P><STRONG>Building SharePoint Framework solutions with Microsoft Teams Toolkit v2 </STRONG>– an alternative to using the SPFx Yeoman Generator for building Teams apps. &nbsp;&nbsp;The Toolkit – a VS Code extension targeted to web stack developers, supports the rapid creation of apps using SPFx.&nbsp; Step through Teams Toolkit installation, project creation, manifest file validation, etc.&nbsp; &nbsp;As the toolkit is in preview, the co-creators - Teams, SharePoint and Visual Studio engineering groups are very interested in your feedback.&nbsp; &nbsp;&nbsp;</P> </LI> </UL> <P>&nbsp;</P> <DIV><STRONG>SPFx extension samples:&nbsp; (<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spfx-extensions</A>)&nbsp;</STRONG> <P>&nbsp;</P> <UL> <LI><STRONG><A href="#" target="_blank" rel="noopener">List Notifications</A> - </STRONG><A href="#" target="_blank" rel="noopener">João Mendes</A>&nbsp;|&nbsp;<LI-USER uid="442957"></LI-USER></LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Google Analytics</A> - </STRONG><A href="#" target="_blank" rel="noopener">João Ferreira</A>&nbsp;|&nbsp;@joao12ferreira</LI> </UL> </DIV> <P><STRONG>SPFx web part samples:&nbsp; (<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spfx-webparts</A>)&nbsp;</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG><A href="#" target="_blank" rel="noopener">Calendar</A></STRONG> - <A href="#" target="_blank" rel="noopener">Mohammad Amer</A>&nbsp;|&nbsp;@Mohammad3mer</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Tiles V2</A></STRONG> - <A href="#" target="_blank" rel="noopener">Omar El-Anis</A>&nbsp;|&nbsp;@omarelanis</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Team Membership Updater</A></STRONG> - <A href="#" target="_blank" rel="noopener">Nick Brown</A>&nbsp;|&nbsp;@techienickb</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Facebook Page Social Plugin</A></STRONG> - <A href="#" target="_blank" rel="noopener">Ari Gunawan</A>&nbsp;|&nbsp;@AriGunawan3023</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Hero Web Part</A> </STRONG>- <A href="#" target="_blank" rel="noopener">Omar El-Anis</A>&nbsp;|&nbsp;@omarelanis</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Page Contributors</A></STRONG> - <A href="#" target="_blank" rel="noopener">Ari Gunawan</A>&nbsp;|&nbsp;@AriGunawan3023</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Private Library/Folder Manager</A></STRONG> - <A href="#" target="_blank" rel="noopener">Russell Gove</A>&nbsp;|&nbsp;<LI-USER uid="670687"></LI-USER></LI> </UL> <P>Thank you for your great work.&nbsp; Samples are often showcased in Demos.&nbsp; &nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Agenda items:</STRONG></P> <UL> <LI>SharePoint Framework - <A href="#" target="_self">Vesa Juvonen</A> (Microsoft) |&nbsp;@vesajuvonen - <A href="#" target="_self">7:33</A></LI> <LI>PnPjs Client-Side Libraries -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noreferrer noopener">Julie Turner</A><SPAN>&nbsp;</SPAN>(Sympraxis Consulting) | @jfj1997 –<SPAN>&nbsp;<A href="#" target="_self">10:53</A></SPAN></LI> <LI>CLI for Microsoft 365 -&nbsp;<A href="#" target="_self">David Warner II</A> (Catapult Systems)&nbsp; | @DavidWarnerII<SPAN>&nbsp;</SPAN>&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">12:52</A></SPAN></LI> <LI>PnP SPFx Controls -<SPAN> <A href="#" target="_self">David Warner II</A></SPAN>&nbsp;(Catapult Systems)&nbsp; | @DavidWarnerII&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">13:35</A></SPAN></LI> <LI>PnP Modern Search -<SPAN> <A href="#" target="_self">David Warner II</A></SPAN>&nbsp;(Catapult Systems)&nbsp; | @DavidWarnerII&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">14:33</A></SPAN></LI> <LI><SPAN>P</SPAN>nP SPFx Samples -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Hugo Bernier</A><SPAN>&nbsp;</SPAN>(Tahoe Ninjas) | @bernierh&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">15:07</A></SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Demos:</STRONG></P> <UL> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Building a COVID attestation solution for Microsoft Teams and Viva Connections with SPFx – <A href="#" target="_blank" rel="noopener">Julie Turner</A> (Sympraxis Consulting) | @jfj1997 &amp; <A href="#" target="_blank" rel="noopener">Derek Cash-Peterson</A> (Sympraxis Consulting) | <LI-USER uid="386549"></LI-USER>&nbsp;<SPAN style="font-family: inherit;">–</SPAN><SPAN style="font-family: inherit;">&nbsp;<A href="#" target="_self">18:57</A></SPAN></P> </LI> <LI> <P><STRONG style="font-family: inherit;">Demo:</STRONG><SPAN style="font-family: inherit;">&nbsp; Building SharePoint Framework solutions with Microsoft Teams Toolkit v2 – </SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">Vesa Juvonen</A><SPAN style="font-family: inherit;"> (Microsoft) | @vesajuvonen</SPAN></P> <P><SPAN style="font-family: inherit;"> –</SPAN><SPAN style="font-family: inherit;">&nbsp;<A href="#" target="_self">45:02</A></SPAN></P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>Additional resources around the covered topics and links from the slides.</P> <UL> <LI>Sample - <A href="#" target="_blank" rel="noopener">covid-spfx</A>&nbsp;</LI> <LI> <P>Tools - <A href="#" target="_blank" rel="noopener">Teams Toolkit (v2.2 Preview)</A>&nbsp;</P> </LI> <LI> <P>Tools - <A style="background-color: #ffffff;" href="#" target="_blank" rel="noopener">Microsoft Teams Framework (TeamsFx)</A>&nbsp;</P> </LI> <LI>July 14<SUP>th</SUP> Blog post - <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-viva-blog/viva-connections-welcomes-new-partners-and-opens-developer/ba-p/2540643" target="_blank" rel="noopener">Viva Connections welcomes new partners and opens developer preview</A></LI> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A></LI> <LI>Archives - Microsoft 365 PnP Weekly - <A href="#" target="_self">Videos</A>, <A href="#" target="_self">Podcasts</A>&nbsp;&nbsp;</LI> </UL> <P>&nbsp;</P> <P><STRONG>General Resources:</STRONG></P> <UL> <LI>Gallery -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>&nbsp;&nbsp;</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Build sessions guide</A><SPAN>&nbsp;</SPAN>(Modern Work Digital Brochure) - aka.ms/modernworkbuildsessions</LI> <LI>SharePoint Framework - v1.12.1 npm install –g<SPAN>&nbsp;</SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/user/viewprofilepage/user-id/41501" target="_blank" rel="noopener">@microsoft</A>/generator-sharepoint@next</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">CLI for Microsoft 365 v3</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">CodeTour</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Sharing is Caring</A><SPAN>&nbsp;</SPAN>| aka.ms/sharing-is-caring</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Tools -<SPAN>&nbsp;</SPAN></A><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnP Modern Search v4</A><A href="#" target="_blank" rel="noopener noreferrer">&nbsp; |<SPAN>&nbsp;</SPAN></A><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/pnp-search</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">M365 PnP site</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Starter Kit v2</A></LI> <LI>Blog: "<A href="#" target="_blank" rel="noopener noreferrer">A Lap Around Microsoft Graph Toolkit" blog series</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">New Microsoft 365 Patterns and Practices (PnP) team model with new community leads</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Community Content</A><SPAN>&nbsp;</SPAN>(non-Dev docs)</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx web part samples</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx extension samples</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">GitHub PnPjs</A></LI> <LI>Tutorials -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started with SharePoint Framework v1.10 Tutorials</A><SPAN>&nbsp;</SPAN>(12 videos)</LI> <LI>Tutorials -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started with SharePoint Framework v1.10 Extensions</A><SPAN>&nbsp;</SPAN>(6 videos)</LI> <LI>Docs -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Tutorials and training material for SharePoint Development</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFX Training Package</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Web Parts</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Extensions</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Library Components</A></LI> <LI>Documentation -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnPjs v2 documentation</A></LI> <LI>Link -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 developer training</A></LI> <LI>Link -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Office 365 Developer Program</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">Latest documentation on SharePoint Framework</A></LI> <LI>Found an issue with SharePoint Dev? - please let us know at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/spdev-issues</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Reusable web part property controls</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Reusable react controls for SharePoint Framework solutions</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">Reusable controls webcast</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener nofollow">Office 365 CLI</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx Yeoman Generator</A><SPAN>&nbsp;</SPAN>- Extends the out-of-the-box experience with open-source community capabilities</LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint Dev UserVoice</A><SPAN>&nbsp;</SPAN>- for new feature requests</LI> </UL> <P>&nbsp;</P> <P><STRONG>Other mentioned topics:</STRONG></P> <UL> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint dev documentation</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint dev issue list</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Upcoming calls | Recurrent invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>Power Apps monthly call</STRONG> – July 21st at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A></LI> <LI><STRONG>M365 General Dev call</STRONG> – July 22nd at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>SharePoint Framework call</STRONG> – July 29th at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG>Office add-in monthly call </STRONG>– August 11th at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG>Adaptive Cards monthly call</STRONG> – August 12th at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> <LI><STRONG>Microsoft Identity Platform</STRONG> – August 19th at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A></LI> </UL> <P>&nbsp;</P> <P>PnP SharePoint Framework Special Interest Group bi-weekly calls are targeted at anyone who is interested in the JavaScript-based development towards Microsoft Teams, SharePoint Online, and also on-premises. SIG calls are used for the following objectives.</P> <UL> <LI>SharePoint Framework engineering update from Microsoft</LI> <LI>Talk about PnP JavaScript Core libraries</LI> <LI>Office 365 CLI Updates</LI> <LI>SPFx reusable controls</LI> <LI>PnP SPFx Yeoman generator</LI> <LI>Share code samples and best practices</LI> <LI>Possible engineering asks for the field - input, feedback, and suggestions</LI> <LI>Cover any open questions on the client-side development</LI> <LI>Demonstrate SharePoint Framework in practice in Microsoft Teams or SharePoint context</LI> <LI>You can download a recurrent invite from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">https://aka.ms/spdev-spfx-call</A>. Welcome and join the discussion!</LI> </UL> <P><EM>“Sharing is caring”</EM></P> <HR /> <P><EM>Microsoft 365 PnP team, Microsoft - 15th of July 2021</EM></P> Fri, 16 Jul 2021 03:22:44 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-15th-of-july-2021/ba-p/2481294 Vesa Juvonen 2021-07-16T03:22:44Z Microsoft 365 Developer Podcast - Microsoft Search with Mikael Svenson https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-microsoft-search-with-mikael/ba-p/2553564 <P>Mikael Svenson joins Paul to talk about Search in Microsoft 365.</P> <P><IFRAME src="https://www.podbean.com/player-v2/?i=5dymv-10459b4-pb&amp;from=pb6admin&amp;share=0&amp;download=0&amp;rtl=0&amp;fonts=Courier%20New&amp;skin=1&amp;font-color=&amp;btn-skin=6" width="100%" height="150" scrolling="no" style="border: none; min-width: min(100%, 430px);" title="Microsoft Search with Mikael Svenson" allowtransparency="true" data-name="pb-iframe-player"> </IFRAME></P> <P>Listen to the show here:&nbsp; <A href="#" target="_blank"> (m365devpodcast.com)</A></P> <P>&nbsp;</P> <H2>Links from the show:</H2> <UL> <LI><A href="#" target="_blank">PnP Modern Search v4</A></LI> <LI><A href="#" target="_blank">Overview of the Microsoft Search API in Microsoft Graph</A></LI> </UL> <H2>Microsoft News</H2> <UL> <LI>Microsoft 365 Developer YouTube <UL> <LI><A href="#" target="_blank">Do you need ngrok to develop Microsoft Teams apps?</A></LI> <LI><A href="#" target="_blank">Debug Microsoft Teams apps without ngrok</A></LI> </UL> </LI> <LI><A href="#" target="_blank">Announcing&nbsp;new file components,&nbsp;MSAL 2 Provider, and SharePoint Framework library&nbsp;in&nbsp;Microsoft Graph Toolkit&nbsp;</A></LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-teams-blog/rebrand-apps-to-your-own-organization-s-branding-with-app/ba-p/2376296" target="_blank">Rebrand apps to your own organization's branding with App customization in Teams</A></LI> </UL> Thu, 15 Jul 2021 17:36:41 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-microsoft-search-with-mikael/ba-p/2553564 paulschaeflein 2021-07-15T17:36:41Z SharePoint Online: How to change the placeholder text in the search box https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-online-how-to-change-the-placeholder-text-in-the/ba-p/2542220 <P>Placeholder text is the text that appears in the search box before user starts typing into it. The placeholder text may help your users about what to expect from search if you’ve configured a custom results page or changed behavior of search in other ways.</P> <P>&nbsp;</P> <P>By default SharePoint online site has<SPAN>&nbsp;</SPAN><EM><STRONG>Search this site</STRONG></EM><SPAN>&nbsp;</SPAN>as default placeholder text in the search box at the top of your page. This is a very generic placeholder text &amp; sometimes you may want to change this placeholder text to something more specific or relevant to current site or site collection.</P> <P>&nbsp;</P> <P>You can change the placeholder text in the search box for a specific (sub) site or an entire site collection using PnP PowerShell. Follow below steps to change the placeholder text in the search box:</P> <P>&nbsp;</P> <H4>Install/Update PnP PowerShell module:</H4> <P><SPAN>You can run the following command to install the PnP PowerShell cmdlets:</SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="powershell">Install-Module -Name "PnP.PowerShell"</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN>If you have previously installed the PnP PowerShell module, you can run the following command to update it:</SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="powershell">Update-Module -Name "PnP.PowerShell"</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <H4>&nbsp;</H4> <H4>Connect to SharePoint site:</H4> <P><SPAN>You can connect to a SharePoint site using below PnP PowerShell command (use administrative account):</SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="powershell">Connect-PnPOnline -Url https://tenant.sharepoint.com/sites/siteName -UseWebLogin</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <H4>&nbsp;</H4> <H4>Change the placeholder text:</H4> <P><SPAN>To change the placeholder text in search box for a given (sub) site run the following command:</SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="powershell">Set-PnPSearchSettings -Scope Web -SearchBoxPlaceholderText "Search Work @ SPExplorer Site"</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN>Alternately, if you want to change the placeholder text for all the sites in a site collection, you can use below command:</SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="powershell">Set-PnPSearchSettings -Scope Site -SearchBoxPlaceholderText "Search Work @ SPExplorer Site"</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <H4><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sharepoint-online-how-to-change-the-placeholder-text-in-the-search-box.png" style="width: 822px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/295428iDBFC20D862D29070/image-size/large?v=v2&amp;px=999" role="button" title="sharepoint-online-how-to-change-the-placeholder-text-in-the-search-box.png" alt="sharepoint-online-how-to-change-the-placeholder-text-in-the-search-box.png" /></span></H4> <P>&nbsp;</P> <H4>Reset to default placeholder text:</H4> <P><SPAN>If you have changed the placeholder text in search box previously &amp; now you want to reset it to the default placeholder text, you can run the following command after connecting to a SharePoint site:</SPAN></P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="powershell">Set-PnPSearchSettings -Scope Site -SearchBoxPlaceholderText ""</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sharepoint-online-how-to-reset-the-placeholder-text-in-the-search-box.png" style="width: 824px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/295429i1CD5FA88C13026E6/image-size/large?v=v2&amp;px=999" role="button" title="sharepoint-online-how-to-reset-the-placeholder-text-in-the-search-box.png" alt="sharepoint-online-how-to-reset-the-placeholder-text-in-the-search-box.png" /></span></P> <HR /> <P>This article is originally posted at:&nbsp;<A title="SharePoint Online: How to change the placeholder text in the search box" href="#" target="_blank" rel="noopener">SharePoint Online: How to change the placeholder text in the search box</A>&nbsp;</P> Tue, 13 Jul 2021 11:52:51 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-online-how-to-change-the-placeholder-text-in-the/ba-p/2542220 ganeshsanap 2021-07-13T11:52:51Z Microsoft 365 Dev Podcast - Building an Application on the Microsoft 365 Platform with Elio Struyf https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-dev-podcast-building-an-application-on-the/ba-p/2538181 <P>Elio Struyf joins Paul to talk about his experiences while building an application in the Microsoft 365 ecosystem, including the Microsoft for Startups program.</P> <P><IFRAME src="https://www.podbean.com/player-v2/?i=dbm7x-10887ec-pb&amp;from=pb6admin&amp;share=0&amp;download=0&amp;rtl=0&amp;fonts=Courier%20New&amp;skin=1&amp;font-color=auto&amp;btn-skin=6" width="100%" height="150" scrolling="no" style="border: none; min-width: min(100%, 430px);" title="Building an Application on the Microsoft 365 Platform with Elio Struyf" allowtransparency="true" data-name="pb-iframe-player"></IFRAME></P> <P>Listen to the show here:&nbsp;<A href="#" target="_blank" rel="noopener"> (m365devpodcast.com)</A>&nbsp;</P> <H2>Links from the show:</H2> <UL> <LI><A href="#" target="_blank" rel="noopener">Squarl</A></LI> <LI><A href="#" target="_blank" rel="noopener">VSCode: MS Graph Completion</A></LI> <LI><A href="#" target="_blank" rel="noopener">Elio's extension on Visual Studio Marketplace</A></LI> <LI><A href="#" target="_blank" rel="noopener">Elio's blog</A></LI> </UL> <H2>Microsoft News</H2> <UL> <LI><A href="#" target="_blank" rel="noopener">Build apps for Microsoft Teams with .NET</A></LI> <LI><A href="#" target="_blank" rel="noopener">Improved API support for working with files in the SharePoint recycle bin</A></LI> <LI><A href="#" target="_blank" rel="noopener">Raise the bar for your app security – Get Microsoft 365 Certification by passing these security controls - Microsoft 365 Developer Blog</A></LI> </UL> <H2>Community Links</H2> <UL> <LI><A href="#" target="_blank" rel="noopener">Output connection strings and keys from Azure Bicep (@johnny_reilly)</A></LI> <LI><A href="#" target="_blank" rel="noopener">Updated script to re-index user profiles for search</A></LI> <LI><A href="#" target="_blank" rel="noopener">StreamDeck series on Paul's blog</A></LI> </UL> Thu, 15 Jul 2021 17:20:43 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-dev-podcast-building-an-application-on-the/ba-p/2538181 paulschaeflein 2021-07-15T17:20:43Z Adaptive Cards Community Call - June 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/adaptive-cards-community-call-june-2021/ba-p/2533826 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Adaptive Cards THumb_June 2021.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/294750i29F17FC7FAA65BD8/image-size/large?v=v2&amp;px=999" role="button" title="Adaptive Cards THumb_June 2021.png" alt="Adaptive Cards THumb_June 2021.png" /></span></P> <P>&nbsp;</P> <P>After a quick wrap up on Microsoft Build ’21 from an Adaptive Cards perspective, t<SPAN>his call’s primary focus is on </SPAN><STRONG>Microsoft Viva Connections Extensibility with Adaptive Cards.&nbsp;&nbsp;&nbsp; </STRONG>Starting at the top with a Viva Extensibility Overview - Dashboard demo and Dashboard and card composition.&nbsp; &nbsp;There is a review of Adaptive Card Extensions (ACEs) – SPFx component/tool to build cards, available templates and a live Q &amp; A covering distribution, analytics, and more. &nbsp;This call was<SPAN> hosted by </SPAN>Matt Hidinger (Microsoft)<SPAN>. Microsoft presenters are </SPAN>Luca Bandinelli, John Nguyen and Pat Miller.&nbsp; R<SPAN>ecorded </SPAN>on June 10, 2021<SPAN>.</SPAN></P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/M0ZrnirgeoA" align="center" size="large" width="600" height="338" uploading="false" thumbnail="https://i.ytimg.com/vi/M0ZrnirgeoA/hqdefault.jpg" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><SPAN><STRONG>Referenced in this call:</STRONG></SPAN></P> <UL> <LI><SPAN>Microsoft Build '21 Session - </SPAN><A href="#" target="_blank" rel="noopener">Build great discovery &amp; collaboration apps for Microsoft 365 with new Microsoft Graph connector &amp; Adaptive Card capabilities.</A></LI> <LI><SPAN>Documentation - </SPAN><A href="#" target="_blank" rel="noopener">Universal Actions for Adaptive Cards</A></LI> <LI><SPAN>Tool - Imaginea ReactNative renderer package - </SPAN><A href="#" target="_self">adaptivecards-reactnative</A><SPAN>&nbsp;</SPAN></LI> <LI><SPAN>Preview - </SPAN><A href="#" target="_blank" rel="noopener">Viva Connections private preview</A></LI> </UL> <P><SPAN><STRONG>Resources in General:&nbsp;</STRONG></SPAN></P> <UL> <LI>Let us know the features you need&nbsp; &nbsp;<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/ACRoadmap</A></LI> <LI>Schema Explorer -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://adaptivecards.io/explorer/Action.Execute.html</A></LI> <LI>Designer -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://adaptivecards.io/designer/</A>&nbsp;</LI> <LI>Get started with Templating -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/ACTemplating</A></LI> <LI>Browse the Adaptive Cards Code -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/ACRepo</A></LI> <LI>Find tools, sample cards and more -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">https://www.madewithcards.io</A></LI> </UL> <P><SPAN><STRONG>Stay connected:</STRONG></SPAN></P> <UL> <LI><SPAN>Twitter -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://twitter.com/microsoft365dev</A><SPAN>​</SPAN></LI> <LI><SPAN>YouTube -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://aka.ms/M365DevYouTube</A><SPAN>​</SPAN></LI> <LI><SPAN>Blog -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community/blog</A></LI> <LI><SPAN>Recurrent Invite -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/adaptivecardscommunitycall</A></LI> <LI>Next call –<SPAN>&nbsp;</SPAN><STRONG>July 8th </STRONG><STRONG>at 09:00am PDT</STRONG></LI> </UL> Sat, 10 Jul 2021 00:19:55 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/adaptive-cards-community-call-june-2021/ba-p/2533826 Matt Hidinger 2021-07-10T00:19:55Z Adaptive Cards Community Call - July 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/adaptive-cards-community-call-july-2021/ba-p/2533827 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ThumbnailAC-July2021.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/294748i57BDA6289E1D33B9/image-size/large?v=v2&amp;px=999" role="button" title="ThumbnailAC-July2021.png" alt="ThumbnailAC-July2021.png" /></span></P> <P>&nbsp;</P> <P><SPAN>Covered off in this month’s “conversational” community call:&nbsp; </SPAN>A lap around <STRONG>MadeWithCards.io</STRONG> community site (guidance, cards, tools, news and updates by and for Adaptive Cards Community that nicely complements the content found on Microsoft’s Adaptive Cards site).&nbsp; Also toured <STRONG>Adaptive Card Studio - VS Code Extension</STRONG> (Cards, templates, sample data, snippets, guidance, etc).&nbsp; &nbsp;As well, two <SPAN>new program managers - </SPAN>Rahul and J.P., <SPAN>are welcomed to the Adaptive Cards team.&nbsp;&nbsp;&nbsp; There is </SPAN>Q&amp;A throughout the call.&nbsp; This call was<SPAN> hosted by </SPAN>Matt Hidinger (Microsoft) | @MattHidinger<SPAN>.&nbsp; Guest presenter is </SPAN>Tim Cadenbach (MAXIMAGO) | @TimCadenbach.&nbsp; R<SPAN>ecorded </SPAN>on July 8, 2021<SPAN>.</SPAN></P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/QJaEwiYPr-I" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><SPAN><STRONG>Demos:</STRONG></SPAN></P> <UL> <LI><STRONG>A lap around MadeWithCards.io community site</STRONG> - an assemblage of guidance, cards, tools, news and updates by and for Adaptive Cards Community and Microsoft that nicely complements the content found on Microsoft’s Adaptive Cards site.&nbsp; A great place to learn from and share your work with other members of the community.&nbsp;&nbsp;&nbsp;&nbsp;</LI> <LI><STRONG>Adaptive Card Studio – VS Code Extension - </STRONG>a great place to work on cards in Visual Studio Code.&nbsp;&nbsp; Install extension from marketplace or VS Code.&nbsp; When extension is on your machine, it will list all Adaptive Cards in system including those cards on MadeWithCards.io community site and pulled from AdaptiveCards.io/designer site.&nbsp;&nbsp; Cards, templates, sample data, snippets, guidance, card submissions, full syntax highlighting and more.&nbsp;&nbsp; Also a sneak peek at MadeWithCards Api – work in progress.&nbsp;</LI> </UL> <P><SPAN><STRONG>Referenced in this call:</STRONG></SPAN></P> <UL> <LI><SPAN>Tools – </SPAN><A href="#" target="_blank" rel="noopener">Adaptive Card Studio</A><SPAN>&nbsp;</SPAN></LI> <LI><SPAN>Website - </SPAN><A href="#" target="_blank" rel="noopener">MadeWithCards.io</A>&nbsp;</LI> <LI><SPAN>Tools – </SPAN><A href="#" target="_blank" rel="noopener">Microsoft Teams Developer Portal (Preview)</A><SPAN>&nbsp;</SPAN></LI> <LI>Documentation - <A href="#" target="_blank" rel="noopener">Universal Action Model</A>&nbsp;</LI> <LI>Video - <A href="#" target="_blank" rel="noopener">Deep dive into Universal Actions for Microsoft Teams and Outlook</A>&nbsp;</LI> </UL> <P><SPAN><STRONG>Resources in General:&nbsp;</STRONG></SPAN></P> <UL> <LI>Let us know the features you need&nbsp; &nbsp; <A href="#" target="_blank" rel="noopener">https://aka.ms/ACRoadmap</A></LI> <LI>Schema Explorer - <A href="#" target="_blank" rel="noopener">https://adaptivecards.io/explorer/Action.Execute.html</A></LI> <LI>Designer - <A href="#" target="_blank" rel="noopener">https://adaptivecards.io/designer/</A>&nbsp;</LI> <LI>Get started with Templating - <A href="#" target="_blank" rel="noopener">https://aka.ms/ACTemplating</A></LI> <LI>Browse the Adaptive Cards Code - <A href="#" target="_blank" rel="noopener">https://aka.ms/ACRepo</A></LI> <LI>Find tools, sample cards and more -&nbsp;<A href="#" target="_blank" rel="noopener">https://www.madewithcards.io</A></LI> </UL> <P><SPAN><STRONG>Stay connected:</STRONG></SPAN></P> <UL> <LI><SPAN>Twitter - </SPAN><A href="#" target="_blank" rel="noopener">https://twitter.com/microsoft365dev</A><SPAN>​ </SPAN></LI> <LI><SPAN>YouTube - </SPAN><A href="#" target="_blank" rel="noopener">https://aka.ms/M365DevYouTube</A><SPAN>​ </SPAN></LI> <LI><SPAN>Blog - </SPAN><A href="#" target="_blank" rel="noopener">https://aka.ms/m365pnp/community/blog</A></LI> <LI><SPAN>Recurrent Invite - </SPAN><A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> <LI>Next call – <STRONG>August 12<SUP>th</SUP></STRONG> <STRONG>at 09:00am PDT</STRONG></LI> </UL> Sat, 10 Jul 2021 00:21:25 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/adaptive-cards-community-call-july-2021/ba-p/2533827 Matt Hidinger 2021-07-10T00:21:25Z Microsoft 365 Developer Community Call recording – 8th of July, 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-community-call-recording-8th-of-july/ba-p/2481287 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="8th-july-recording-m365dev.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/294987iEA7B29E76032F5CC/image-size/large?v=v2&amp;px=999" role="button" title="8th-july-recording-m365dev.png" alt="8th-july-recording-m365dev.png" /></span></P> <P>&nbsp;</P> <P><STRONG>Call Summary</STRONG></P> <P>Summer and Fall community call schedule updates reviewed. Preview the new <A href="#" target="_blank" rel="noopener">Microsoft 365 Extensibility look book gallery</A>.&nbsp; Looking to get started with Microsoft Teams development? &nbsp;Don’t miss out on our <A href="#" target="_blank" rel="noopener">Teams samples gallery</A> (updated sample browser in June), and the new Microsoft 365 tenant – <A href="#" target="_blank" rel="noopener">script samples gallery</A> - s<EM>cripts for PowerShell and CLIs.&nbsp; </EM>Sign up and attend one of a growing list of events hosted by <A href="#" target="_blank" rel="noopener">Sharing is Caring</A> this month.&nbsp; Announced <A href="#" target="_blank" rel="noopener">PnP Recognition Program</A>.&nbsp; Heads down on PnP project bug fixes, new idea prototyping, and vacationing this month. &nbsp;This is a great time to give the project teams feedback as members are working on new integrations and previews now.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Open-source project status:&nbsp; (Bold indicates new this call)</STRONG></P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="33.333333333333336%"><STRONG>Project</STRONG></TD> <TD width="33.333333333333336%"><STRONG>Current Version</STRONG></TD> <TD width="33.333333333333336%"><STRONG>Release/Status</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%">PnP .NET Libraries - PnP Framework</TD> <TD width="33.333333333333336%">v1.5.0 GA</TD> <TD width="33.333333333333336%">Version 1.6.0 – Summer 2021</TD> </TR> <TR> <TD width="33.333333333333336%">PnP .NET Libraries - PnP Core SDK</TD> <TD width="33.333333333333336%">v1.2.0 GA</TD> <TD width="33.333333333333336%">Version 1.3.0 – Summer 2021</TD> </TR> <TR> <TD width="33.333333333333336%">PnP PowerShell</TD> <TD width="33.333333333333336%">v1.6.0 &nbsp;GA</TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - generator-teams</TD> <TD width="33.333333333333336%">v3.2.0 GA</TD> <TD width="33.333333333333336%">v3.3.0 Preview soon</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - yoteams-build-core</TD> <TD width="33.333333333333336%">v1.2.0 GA, v1.2.1 Preview</TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD>Yo teams – yoteams-deploy</TD> <TD>v1.1.0 GA</TD> <TD>&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - msteams-react-base-component</TD> <TD width="33.333333333333336%">v3.1.0</TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Microsoft Graph Toolkit (MGT)</TD> <TD width="33.333333333333336%">v2.2.0 GA</TD> <TD width="33.333333333333336%">Added Teams SSO Provider in Preview</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>One new Teams sample was delivered.&nbsp; Great work!&nbsp; The host of this call was Paolo Pialorsi (PiaSys.com) | @paolopia &nbsp;&nbsp;Q&amp;A takes place in chat throughout the call.</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/rOHSrG1n43Y" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><STRONG>Actions:&nbsp;&nbsp;</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>Register for Sharing is Caring Events</STRONG>:<BR /> <UL> <LI>First Time Contributor Session –&nbsp;<A href="#" target="_blank" rel="noopener">August 31<SUP>st</SUP></A> (EMEA, APAC &amp; US friendly times available)</LI> </UL> <UL> <LI>Community Docs Session –&nbsp;<A href="#" target="_blank" rel="noopener">August 23<SUP>rd</SUP></A></LI> <LI>PnP – SPFx Developer Workstation Setup – <A href="#" target="_blank" rel="noopener">August 24<SUP>th</SUP></A> &nbsp;&nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">July 27<SUP>th</SUP>, August 25<SUP>th</SUP></A></LI> <LI>Ask Me Anything – Teams Dev – <A href="#" target="_blank" rel="noopener">July 13<SUP>th</SUP></A></LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">August 30<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – <A href="#" target="_blank" rel="noopener">July 20<SUP>th</SUP></A></LI> <LI>Maturity Model Practitioners – <A href="#" target="_blank" rel="noopener">July 20<SUP>th</SUP></A> and every 3<SUP>rd</SUP> Tuesday of month, 7:00am PT</LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> <LI>PnP Buddy System - <A style="background-color: #ffffff;" href="#" target="_blank" rel="noopener">Request a Buddy</A></LI> </UL> </LI> <LI>Download the recurrent invite for this call –&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365-dev-sig</A></LI> <LI><SPAN>Call attention to your great work by using the&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">#PnPWeekly</A><SPAN>&nbsp;on Twitter.</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Microsoft Teams Development Samples:&nbsp;<SPAN>&nbsp;</SPAN></STRONG>(<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/TeamsSampleBrowser</A>)</P> <UL> <LI> <P><STRONG><A href="#" target="_blank" rel="noopener">ReporterPlus – Teams Device Capabilities Application</A> - </STRONG>Sathya Raveendran (Microsoft) and Veera Venkata Sai Pothan Thota</P> </LI> </UL> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="PictureTimeGIF-8JUly2021-2Sec-30FPS.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/294517i719C16EFE5C2C85A/image-size/large?v=v2&amp;px=999" role="button" title="PictureTimeGIF-8JUly2021-2Sec-30FPS.gif" alt="PictureTimeGIF-8JUly2021-2Sec-30FPS.gif" /></span></P> <P>&nbsp;</P> <P>Thank you for making time in your Summer time schedule to join us for today's PnP Community call.&nbsp; &nbsp;You're awesome!&nbsp; &nbsp;</P> <P>&nbsp;</P> <P><STRONG>Demos</STRONG><SPAN>&nbsp;</SPAN>delivered in this session</P> <UL> <LI> <P><STRONG>Image Column Type formatting in Microsoft 365</STRONG> – upload images to Site Assets and automatically expose them in a list’s Image column, no manual linking necessary! &nbsp;Format Image column appearance using sub-properties.&nbsp; Shown is the sub-property - thumbnailRenderer and size selection - <EM>drive thumbnail sizes</EM> provided by Microsoft Graph. &nbsp;&nbsp;All formatting code is found in referenced image-lightbox sample.&nbsp; &nbsp;Hover card and dynamic picture sizing is shown here as well.&nbsp;</P> </LI> <LI> <P><STRONG>Configure Teams Applications with Azure App Configuration and Azure Key Vault</STRONG> – use <EM>Action Config in Azure configuration</EM> extension to configure Microsoft Teams apps hosted in Azure App Service that leverage Azure App Configuration and Azure Key Vault (credential/secrets storage) and authenticates against Microsoft Graph via SSO.&nbsp; &nbsp;The example - configure an action-based document review messaging extension that retrieves and controls access to retrieved documents.&nbsp; &nbsp;Walk through block architecture, code and slides.&nbsp; &nbsp;&nbsp;&nbsp;</P> <P>&nbsp;</P> </LI> </UL> <P>Thank you for your work. Samples are often showcased in Demos.</P> <P>&nbsp;</P> <P><STRONG>Topics</STRONG><SPAN>&nbsp;</SPAN>covered in this call</P> <UL> <LI>PnP .NET library updates - <A href="#" target="_self">Paolo Pialorsi</A> (PiaSys.com) | @paolopia&nbsp;-<SPAN>&nbsp;<A href="#" target="_self">9:57</A></SPAN></LI> <LI><SPAN>PnP PowerShell -&nbsp;<A href="#" target="_self">Erwin van Hunen</A> (Valo Intranet) | @erwinvanhunen - <A href="#" target="_self">12:13</A></SPAN></LI> <LI>yo Teams updates -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">Wictor Wilén</A><SPAN>&nbsp;</SPAN>(Avanade) | @wictor<SPAN>&nbsp;</SPAN><SPAN>- <A href="#" target="_self">14:37</A></SPAN></LI> <LI>Microsoft Graph Toolkit updates -&nbsp;<SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">Beth Pan</A>&nbsp;(Microsoft) |&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/user/viewprofilepage/user-id/803637" target="_blank" rel="noopener">@beth_panx</A></SPAN><SPAN>&nbsp;</SPAN>-<SPAN>&nbsp;<A href="#" target="_self">15:44</A></SPAN></LI> <LI>Microsoft Teams Samples -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">Bob German</A><SPAN>&nbsp;</SPAN>(Microsoft) | @Bob1German<SPAN>&nbsp;</SPAN><SPAN>- <A href="#" target="_self">16:49</A></SPAN></LI> <LI> <P><STRONG>Demo:&nbsp; </STRONG>Image Column Type formatting in Microsoft 365 - <A href="#" target="_blank" rel="noopener">Chris Kent</A> (DMI) | @theChrisKent - <A href="#" target="_self">19:09</A></P> </LI> <LI> <P><STRONG>Demo:&nbsp; </STRONG>Configure Teams Applications with Azure App Configuration and Azure Key Vault - <A href="#" target="_blank" rel="noopener">Markus Moeller</A> (Avanade) | @Moeller2_0 - <A href="#" target="_self">33:04</A>&nbsp;</P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>Additional resources around the covered topics and links from the slides.</P> <UL> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">List thumbnails for a DriveItem</A>&nbsp;</P> </LI> <LI> <P>Sample - <A href="#" target="_blank" rel="noopener">Image Lightbox</A>&nbsp;</P> </LI> <LI> <P>Sample – <A href="#" target="_self">Microsoft Graph Action Configuration extension</A>&nbsp;</P> </LI> <LI> <P>Blog post - <A href="#" target="_blank" rel="noopener">Configure Teams Applications with Azure App Configuration (nodeJS)</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Azure App Configuration documentation</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Azure Key Vault Developer's Guide</A>&nbsp;</P> </LI> <LI> <P>Blog post - <A href="#" target="_blank" rel="noopener">Microsoft Teams Tabs SSO and Microsoft Graph - the 'on-behalf-of' blog post</A>&nbsp;</P> </LI> <LI> <P>Blog post - <A href="#" target="_blank" rel="noopener">Query SharePoint items with Microsoft Graph and Search</A>&nbsp;</P> </LI> <LI> <P>Sample - <A style="background-color: #ffffff;" href="#" target="_blank" rel="noopener">Document Review Msg Extension Action - Microsoft Teams App</A>&nbsp;</P> </LI> <LI>PnP Weekly – Episode 132 with Seattle-based Program Manager from OneDrive and SharePoint (ODSP) engineering -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Nicole Woon</A>&nbsp;(Microsoft) | @NovelNicole&nbsp;|<SPAN>&nbsp;</SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-132-nicole-woon-microsoft/ba-p/2466409" target="_blank" rel="noopener">video</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">podcast</A></LI> <LI><SPAN>Microsoft 365 tenant –&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Script Samples Gallery</A><SPAN>&nbsp;| aka.ms/script-samples</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/m365/extensibility</LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Microsoft Teams Samples Gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/teams-samples</LI> </UL> <P>&nbsp;</P> <P><STRONG>General resources</STRONG>:</P> <UL> <LI>PnP Teams Quickstart |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">aka.ms/pnp-teams-quickstart</A></LI> <LI>Microsoft Teams Toolkit v2.2 |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/teams-toolkit</A></LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp/ct-p/Microsoft365PnP" target="_blank" rel="noopener">Microsoft 365 PnP Community hub</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp/community&nbsp;</LI> <LI>Microsoft Graph Toolkit in Microsoft Learn |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/learn-mgt</A></LI> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint look book</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Yo Teams video training package</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">.NET Standard 2.0 version of SharePoint Online CSOM API</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 community (PnP) videos</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp-videos</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Teams Toolkit for Visual Studio Code</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">yo Teams</A><SPAN>&nbsp;</SPAN>| aka.ms/yoteams</LI> <LI>Video -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started using yo Teams</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Wictor Wilén</A><SPAN>&nbsp;</SPAN>(Avanade)| @wictor</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-sharepoint-blog/build-a-crisis-management-site-to-connect-people-and-information/ba-p/1216791?WT.mc_id=m365-24198-cxa" target="_blank" rel="noopener">Build a crisis management site to connect people and information</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Developer documentation</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spdev-docs</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Power Shell</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Modernization Partner Guidance</A><SPAN>&nbsp;</SPAN>- Feedback welcome</LI> <LI>Solution -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Building a modern search experiences with SharePoint Framework web parts</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Page transformation guidance</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Page transformation videos</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Modernization scanner</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 developer program site</A><SPAN>&nbsp;</SPAN>- Need to become a Tenant Admin to test look book capabilities? Get a Microsoft 365 E5 developer subscription (free tenant for 90 days)</LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">SharePoint Provisioning Service<SPAN>&nbsp;</SPAN></A>- Easily provision look book designs to any tenant in the world</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Provisioning templates on Github</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Provisioning Tenant Templates documentation</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Page Transformation webcast series</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Power Shell</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Modernization Tools</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Upcoming Calls | Recurrent Invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>Office add-in monthly call – </STRONG>July 14<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG>SharePoint Framework call </STRONG><STRONG>– </STRONG>July 15<SUP>th</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG>Microsoft Identity Platform </STRONG>– July 15<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A></LI> <LI><STRONG>Power Apps monthly call </STRONG><STRONG>– </STRONG>July 21<SUP>st</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A></LI> <LI><STRONG>M365 General Dev call </STRONG><STRONG>– </STRONG>July 22<SUP>nd</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>Adaptive Cards monthly call </STRONG><STRONG>– </STRONG>August 12<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> </UL> <P>&nbsp;</P> <P>General Microsoft 365 Dev Special Interest Group bi-weekly calls are targeted at anyone who's interested in the general Microsoft 365 development topics. This includes Microsoft Teams, Bots, Microsoft Graph, CSOM, REST, site provisioning, PnP PowerShell, PnP Sites Core, Site Designs, Microsoft Flow, PowerApps, Column Formatting, list formatting, etc. topics. More details on the Microsoft 365 community from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/m365pnp</A>. We also welcome community demos, if you are interested in doing a live demo in these calls!</P> <P>&nbsp;</P> <P>You can download recurrent invite from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/m365-dev-sig</A>. Welcome and join in the discussion. If you have any questions, comments, or feedback, feel free to provide your input as comments to this post as well. More details on the Microsoft 365 community and options to get involved are available from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp</A>.</P> <P>&nbsp;</P> <P><EM>“Sharing is caring”</EM></P> <HR /> <P><EM>Microsoft 365 PnP team, Microsoft - 8th of July 2021</EM></P> Mon, 12 Jul 2021 09:28:38 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-community-call-recording-8th-of-july/ba-p/2481287 Vesa Juvonen 2021-07-12T09:28:38Z Use single-tenant Azure AD apps with Microsoft Graph Toolkit https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/use-single-tenant-azure-ad-apps-with-microsoft-graph-toolkit/ba-p/2528118 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="banner-mgt-login-single-tenant-azure-ad.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/294361iED2D1A77827CEB01/image-size/large?v=v2&amp;px=999" role="button" title="banner-mgt-login-single-tenant-azure-ad.png" alt="banner-mgt-login-single-tenant-azure-ad.png" /></span></P> <P>&nbsp;</P> <P>When using Microsoft Graph Toolkit with Azure AD single-tenant Azure AD apps, you need to adjust MSAL Provider initiation for your app to work. Here is how.</P> <P>&nbsp;</P> <H2>Microsoft Graph Toolkit - the easiest way to connect to Microsoft 365</H2> <P><A href="#" target="_blank" rel="noopener">Microsoft Graph Toolkit</A> (MGT) is a set of web components that abstract away the plumbing behind connecting to Microsoft Graph and allow you to focus on your application instead.</P> <P>&nbsp;</P> <P>Microsoft Graph Toolkit is available as a generic set of web components distributed through the <STRONG><LI-USER uid="41501" login="microsoft"></LI-USER>/mgt</STRONG> npm package. If you're <A href="#" target="_blank" rel="noopener">building apps with React</A>, you can use the <STRONG><LI-USER uid="41501" login="microsoft"></LI-USER>/mgt-react</STRONG> package which wraps MGT web component in React components making it easier to pass complex data and hook the components up to events.</P> <P>&nbsp;</P> <H2>Before you begin, connect to Azure AD</H2> <P>Microsoft Graph Toolkit allows you to connect your app to Microsoft 365 through <A href="#" target="_blank" rel="noopener">Microsoft Graph</A>. To do that, it needs to authenticate the user working with your web app against their tenant.</P> <P>If you build applications using <A href="#" target="_blank" rel="noopener">SharePoint Framework</A>, you can reuse the existing authentication context. But if you build a standalone web app, you need to register an application in Azure Active Directory and use it with MGT's <A href="#" target="_blank" rel="noopener">MSAL Provider</A>, like:</P> <P>&nbsp;</P> <DIV class="language-typescript highlighter-rouge"> <DIV class="highlight"> <PRE class="highlight"><CODE data-lang="typescript"><SPAN class="k">import</SPAN> <SPAN class="p">{</SPAN> <SPAN class="nx">MsalProvider</SPAN> <SPAN class="p">}</SPAN> <SPAN class="k">from</SPAN> <SPAN class="dl">'</SPAN><SPAN class="s1">@microsoft/mgt-msal-provider</SPAN><SPAN class="dl">'</SPAN><SPAN class="p">;</SPAN> <SPAN class="nx">Providers</SPAN><SPAN class="p">.</SPAN><SPAN class="nx">globalProvider</SPAN> <SPAN class="o">=</SPAN> <SPAN class="k">new</SPAN> <SPAN class="nx">MsalProvider</SPAN><SPAN class="p">({</SPAN> <SPAN class="na">clientId</SPAN><SPAN class="p">:</SPAN> <SPAN class="dl">'</SPAN><SPAN class="s1">ab9533b2-4e1e-4aaf-8412-8f02cfb9484c</SPAN><SPAN class="dl">'</SPAN> <SPAN class="p">});</SPAN> </CODE></PRE> </DIV> </DIV> <P>In some cases though, this setup is not enough.</P> <P>&nbsp;</P> <H2>Single- vs. multi-tenant Azure AD apps</H2> <P>When you create an Azure AD app, you choose whether you want the application to be single- or multi-tenant. In other words, whether users from any directory should be allowed to use the app or only users from the same directory where the app is registered.</P> <P>&nbsp;</P> <P>If your organization uses a single directory, registering your Azure AD app as single-tenant allows you to create an additional security measure preventing your app from unintended use.</P> <P>The side-effect is though, that if you want to use a single-tenant Azure AD app with Microsoft Graph Toolkit, you need to instruct it where your Azure AD app is registered.</P> <P>&nbsp;</P> <H2>Use single-tenant Azure AD apps with Microsoft Graph Toolkit</H2> <P>If you try to use a single-tenant Azure AD with Microsoft Graph Toolkit using the default MSAL Provider setup with just the <CODE>clientId</CODE>, when you try to login to your app, you won't be able to.</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="microsoft-graph-toolkit-single-tenant-azure-ad-no-login.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/294366iB99B44B2596F5C8E/image-size/large?v=v2&amp;px=999" role="button" title="microsoft-graph-toolkit-single-tenant-azure-ad-no-login.gif" alt="microsoft-graph-toolkit-single-tenant-azure-ad-no-login.gif" /></span></P> <P>&nbsp;</P> <P>While you won't see any error in the UI, if you open developer tools in your browser and take a look at requests, you will see a GET request to <CODE><A href="#" target="_blank">https://login.microsoftonline.com/common/reprocess</A></CODE> followed by a 302 response with the error message in the query string:</P> <DIV class="language-text highlighter-rouge"> <DIV class="highlight"> <PRE class="highlight"><CODE data-lang="text">http://localhost:3000/#error=invalid_request&amp;error_description=AADSTS50194%3a+Application+%27ab9533b2-4e1e-4aaf-8412-8f02cfb9484c%27(My+M365+app)+is+not+configured+as+a+multi-tenant+application.+Usage+of+the+%2fcommon+endpoint+is+not+supported+for+such+applications+created+after+%2710%2f15%2f2018%27.+Use+a+tenant-specific+endpoint+or+configure+the+application+to+be+multi-tenant.%0d%0aTrace+ID%3a+79cfbca0-d484-461e-9d56-f3a4b4a30f00%0d%0aCorrelation+ID%3a+ffbed0df-da84-4076-a52b-9d3037c28ff9%0d%0aTimestamp%3a+2021-01-04+12%3a10%3a38Z&amp;state=eyJpZCI6ImQyNGZjY2YxLTk2OTk... </CODE></PRE> </DIV> </DIV> <P>For readability, here is the exact error message:</P> <BLOCKQUOTE> <P>AADSTS50194: Application 'ab9533b2-4e1e-4aaf-8412-8f02cfb9484c'(My M365 app) is not configured as a multi-tenant application. Usage of the /common endpoint is not supported for such applications created after '10/15/2018'. Use a tenant-specific endpoint or configure the application to be multi-tenant</P> </BLOCKQUOTE> <P>For you to be able to use a single-tenant Azure AD app with Microsoft Graph Toolkit, you need to extend the MsalProvider initialization with <CODE>authority</CODE>:</P> <DIV class="language-typescript highlighter-rouge"> <DIV class="highlight"> <PRE class="highlight"><CODE data-lang="typescript"><SPAN class="k">import</SPAN> <SPAN class="p">{</SPAN> <SPAN class="nx">MsalProvider</SPAN> <SPAN class="p">}</SPAN> <SPAN class="k">from</SPAN> <SPAN class="dl">'</SPAN><SPAN class="s1">@microsoft/mgt-msal-provider</SPAN><SPAN class="dl">'</SPAN><SPAN class="p">;</SPAN> <SPAN class="nx">Providers</SPAN><SPAN class="p">.</SPAN><SPAN class="nx">globalProvider</SPAN> <SPAN class="o">=</SPAN> <SPAN class="k">new</SPAN> <SPAN class="nx">MsalProvider</SPAN><SPAN class="p">({</SPAN> <SPAN class="na">clientId</SPAN><SPAN class="p">:</SPAN> <SPAN class="dl">'</SPAN><SPAN class="s1">ab9533b2-4e1e-4aaf-8412-8f02cfb9484c</SPAN><SPAN class="dl">'</SPAN><SPAN class="p">,</SPAN> <SPAN class="na">authority</SPAN><SPAN class="p">:</SPAN> <SPAN class="dl">'</SPAN><SPAN class="s1">https://login.microsoftonline.com/f7322380-f203-42ff-93e8-66e266f6d2e4</SPAN><SPAN class="dl">'</SPAN> <SPAN class="p">});</SPAN> </CODE></PRE> </DIV> </DIV> <P>The GUID in the <CODE>authority</CODE> (<CODE>f7322380-f203-42ff-93e8-66e266f6d2e4</CODE>), is the ID of the Azure Active Directory where you have registered your application.</P> <P>After this change, you will be able to use your app with Microsoft Graph Toolkit just as you'd expect.</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="microsoft-graph-toolkit-single-tenant-azure-ad-login.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/294368iA1DDC950C60457AF/image-size/large?v=v2&amp;px=999" role="button" title="microsoft-graph-toolkit-single-tenant-azure-ad-login.gif" alt="microsoft-graph-toolkit-single-tenant-azure-ad-login.gif" /></span></P> <P>&nbsp;</P> <P>When you use multi-tenant Azure AD apps with Microsoft Graph Toolkit, instantiating the MSAL Provider with just the <CODE>clientId</CODE> is sufficient. But when you use a single-tenant Azure AD app, you also need to specify the <CODE>authority</CODE> to instruct Azure AD where the app is registered.</P> Thu, 08 Jul 2021 13:50:52 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/use-single-tenant-azure-ad-apps-with-microsoft-graph-toolkit/ba-p/2528118 waldek 2021-07-08T13:50:52Z Microsoft 365 Developer Podcast - Code Like a Pro in C# with Jort Rodenburg https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-code-like-a-pro-in-c-with-jort/ba-p/2517899 <P>Paul talks with Jort Rodenburg about his new book <EM>Code Like a Pro in C#</EM>.</P> <P><IFRAME src="https://www.podbean.com/player-v2/?i=8r4nz-107ff8f-pb&amp;from=pb6admin&amp;share=0&amp;download=0&amp;rtl=0&amp;fonts=Courier%20New&amp;skin=1&amp;font-color=auto&amp;btn-skin=6" width="100%" height="150" scrolling="no" style="border: none; min-width: min(100%, 430px);" title="Code Like a Pro in C# with Jort Rodenburg" allowtransparency="true" data-name="pb-iframe-player"></IFRAME></P> <P>Listen to the show here:&nbsp;<A href="#" target="_self">Code Like a Pro in C# with Jort Rodenburg (m365devpodcast.com)</A>&nbsp;</P> <H2>Links from the show:</H2> <UL> <LI><A href="#" target="_blank" rel="noopener">Code like a Pro in C#</A></LI> <UL> <LI><A href="#" target="_blank" rel="noopener">Use code <STRONG>pod365d19</STRONG> for a discount!</A></LI> </UL> <LI><A href="#" target="_blank" rel="noopener">Book Forum - ask questions here</A></LI> <LI><A href="#" target="_blank" rel="noopener">Jort Rodenburg on LinkedIn</A></LI> <LI><A href="#" target="_blank" rel="noopener">Jort's blog</A></LI> </UL> <H2>Microsoft News</H2> <UL> <LI><A href="#" target="_blank" rel="noopener">Explore new change notification API resources for your Microsoft Teams app</A></LI> <LI><A href="#" target="_blank" rel="noopener">Attention: breaking changes coming to the Microsoft Graph userPurpose API (beta)</A></LI> <LI><A href="#" target="_blank" rel="noopener">Manage frontline workers in Microsoft Teams with Tags and Time Clock APIs</A></LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-search-blog/announcing-developer-preview-of-the-microsoft-federated-search/ba-p/2480763" target="_blank" rel="noopener">Announcing developer preview of the Microsoft Federated Search Platform</A></LI> <LI><A href="#" target="_blank" rel="noopener">What Windows 11 Means for Developers</A></LI> </UL> <H2>Community Links</H2> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/updates-on-the-microsoft-365-platform-community-calls/ba-p/2492702" target="_blank" rel="noopener">Updates on the Microsoft 365 platform community calls</A></LI> <LI><A href="#" target="_blank" rel="noopener">Developer Certificate changes in SPFx v1.12.1</A></LI> </UL> Tue, 06 Jul 2021 05:42:25 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-code-like-a-pro-in-c-with-jort/ba-p/2517899 paulschaeflein 2021-07-06T05:42:25Z Struggling with using SPFx on SharePoint 2016? Let me help! https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/struggling-with-using-spfx-on-sharepoint-2016-let-me-help/ba-p/2511975 <P>SharePoint has a lot of great out-of-the-box capabilities, but sometimes you need to take it a step further.&nbsp; For example, you need a custom user interface to improve productivity.</P> <P>&nbsp;</P> <P>The SharePoint Framework (aka <A href="#" target="_blank" rel="noopener">SPFx</A>) is a great way to customize SharePoint and Teams. There have been various ways to customize SharePoint in the past, but SPFx is the recommended option. &nbsp;This is especially true for SharePoint Online, but also for more recent versions of SharePoint on-prem.&nbsp; What I like about SPFx – beyond the fact that it lets you customize SharePoint - is that there are several <A href="#" target="_blank" rel="noopener">web controls</A> that are ready to use and require very little effort to incorporate into your customizations.&nbsp; Not only do these components function well, they also fit the look and feel of SharePoint today.</P> <P>&nbsp;</P> <P>SPFx is supported with SharePoint 2019 and SharePoint 2016 (with feature pack 2), but there are limitations to both.&nbsp; This post focuses on the limitations with SharePoint 2016 which are more restrictive than SharePoint 2019.&nbsp; In addition, some of the details I provide will be specific to my development environment which runs on Windows 10.</P> <P>&nbsp;</P> <H1>Confused Yet?</H1> <P>I think part of the confusion on developing with SPFx on SP2016 is because SP2016 hasn’t changed in years, but SPFx is constantly changing.&nbsp; The documentation on what to use with SP2016 is pretty old and hasn’t kept up. For example, to get started with SPFx on SharePoint 2016, this seems like the logical place: <A href="#" target="_blank" rel="noopener">SharePoint Framework development with SharePoint Server 2016 Feature Pack 2</A>.&nbsp; The web page was updated within the last month of when I wrote this post.&nbsp; However, the video shown is from 2017.&nbsp; In the video, Vesa recommends version 1.0.2 as the SPFx version and the post mentions version 1.1.0.&nbsp; What worked for me (more details below) was version 1.9.1.</P> <P>&nbsp;</P> <P>What made this more confusing to me is that there were other blog posts indicating you can use <EM>any</EM> version of key dependencies:</P> <UL> <LI><A href="#" target="_blank" rel="noopener">Build SharePoint Framework solutions for on-premises SharePoint with ANY version of React, TypeScript or Office UI Fabric React</A></LI> <LI><A href="#" target="_blank" rel="noopener">Yes, you can use Modern React on SharePoint 2016</A></LI> <LI><A href="#" target="_blank" rel="noopener">SharePoint 2016, 2019 &amp; SharePoint Online: Which Version of the SharePoint Framework Should You Install?</A></LI> </UL> <P>That last post mentions version 1.9.1 of <LI-USER uid="41501"></LI-USER>/generator-sharepoint, which is what I used.&nbsp; But it was the latest at the time of that post.&nbsp; I had trouble with later versions, which it recommended (but did caveat that they may not work).&nbsp; Your mileage may vary.</P> <P>&nbsp;</P> <H1>Multiple Paths Forward and Limitations</H1> <P>I definitely recommend checking out the links above to see if they work for you.&nbsp; If they don’t, then hopefully the steps I outline below will work.&nbsp; It’s hard to sound too confident because others sounded confident in the posts above.&nbsp; They clearly worked for them, but didn’t work for me.&nbsp; Maybe it was user error, but who knows what else will change going forward that may somehow cause issues.</P> <P>&nbsp;</P> <P>Whenever deciding on what versions to use, a good resource to use is: <A href="#" target="_blank" rel="noopener">SPFx Compatibility Matrix</A>.</P> <P>&nbsp;</P> <P>Depending on the path you take may change your limitations, but here are some I know of:</P> <UL> <LI>You can only create <A href="#" target="_blank" rel="noopener">web parts</A>, not <A href="#" target="_blank" rel="noopener">extensions</A>.</LI> <LI>You cannot bundle your assets with the package (sppkg) file.&nbsp; You must host your assets (manifest JSON and JavaScript files) in a SharePoint document library, Azure, or somewhere else.&nbsp; I discuss how to do this further below.</LI> <LI>Some <A href="#" target="_blank" rel="noopener">Fluent UI Controls</A> won’t work.&nbsp; Based on the path I took (described below), There was no ComboBox, no PeoplePicker, and the Dropdown did not allow multi-select.&nbsp; There are probably several other controls that aren’t available, but I didn’t need them, so I didn’t check.&nbsp; Of those that are available, the documentation has properties/capabilities that are newer than what I was able to use.&nbsp; Sometimes I went to the old <A href="#" target="_blank" rel="noopener">Office UI Fabric React</A> documentation, but even then that was sometimes too new for what I was using.</LI> <LI>I was unable to use <A href="#" target="_blank" rel="noopener">React Hooks</A> and had to use the <A href="#" target="_blank" rel="noopener">React component class</A>.&nbsp; React hooks were introduced in React 16.8.&nbsp; I’m using React 15.4.2.&nbsp; This may be why some newer Fluent UI controls cannot be used.</LI> </UL> <H1>Prerequisites</H1> <P>Regardless of the approach you take, everyone appears to agree on the prerequisites:</P> <UL> <LI>SharePoint Server 2016</LI> <LI>Feature Pack 2 Installed</LI> </UL> <P>To check to see if Feature Pack 2 is installed, I went to <A href="#" target="_blank" rel="noopener">Feature Pack 2 Required to Install ShortPoint SPFx on SharePoint 2016 On-premise</A>.&nbsp; There may be better articles out there.&nbsp; Two key parts of this that helped me were:</P> <UL> <LI>If you don't see "Manage Patch Status", look for "Check Production and Patch Installation Status".</LI> <LI>For "Microsoft SharePoint Foundation 2016 Core", you are looking to see if there is an item with a version number &gt;= 16.0.4744.1000 with a status of Installed.&nbsp; If not, you'll need to install Feature Pack 2 as the link above describes.</LI> </UL> <H1>Node v8.17.0 (Recommended: Install NVM for Windows)</H1> <P>If you’re developing SPFx for SharePoint Online or SharePoint 2019 in the same development environment, you’ll need to maintain multiple versions of node.&nbsp; A great way to do that is with <A href="#" target="_blank" rel="noopener">nvm-windows</A>.</P> <P>&nbsp;</P> <P>After installing nvm-windows, you need to install and use node version 8.17.0:&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">nvm install 8.17.0 nvm use 8.17.0</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Then you can check the active version of node with:&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">nvm list</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Note: if you don’t want to install nvm and just want to install node, you can get version 8.17.0 from here: <A href="#" target="_blank" rel="noopener">Index of /dist/latest-v8.x/ (nodejs.org)</A>.&nbsp; If you have installed node directly, you can check the version using:&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">node -v</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <H1>Install NPM Packages</H1> <P>Before installing other packages, I wanted to check on the version of npm.&nbsp; I did this with:&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">npm -v npm list g --depth 0</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Both v3.10.10 and v6.13.4 of npm worked for me.</P> <P>&nbsp;</P> <P>Then I installed a specific version of gulp, yeoman generator, and generator-sharepoint:&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">npm install -g gulp@3.9.1 npm install -g yo@1.8.5 npm install -g @microsoft/generator-sharepoint@1.9.1</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Installing gulp may not be required, but it helps to have gulp at the ready from the command line.&nbsp; Otherwise you may need to play with the path or add scripts to package.json to call gulp for you while you do something like: npm run &lt;my-script&gt;</P> <P>&nbsp;</P> <P>Regarding v1.9.1 of generator-sharepoint, it could be that a later version works for you.&nbsp; This worked for me and v1.12.0 did not work for me.&nbsp; Maybe something in between is a better choice.</P> <P>&nbsp;</P> <H1>Generate Your Project</H1> <P>This is old hat for many, but for those not used to it, I’ll spell out some details…</P> <P>&nbsp;</P> <P>Create a directory for your web part project and cd into that directory.&nbsp; This could be the name of your solution or even just "WebParts".&nbsp; Think about how you want to organize your code.&nbsp; Do you want a separate solution per web part or do you want to be able to have several web parts within one project in the future.&nbsp; The former makes it so a change to one web part does not require all to be re-deployed.&nbsp; The latter allows the web parts to have shared components.&nbsp; You generate the project with:</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">yo @microsoft/sharepoint</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Then you answer several questions.&nbsp; Here are some example answers:</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="50%"> <P>What is your solution name?</P> </TD> <TD width="50%"><LI-CODE lang="bash">Hello World SPFx 2016</LI-CODE></TD> </TR> <TR> <TD width="50%"> <P>Which baseline packages do you want to target for your component(s)?</P> </TD> <TD width="50%"><LI-CODE lang="bash">SharePoint 2016 onwards, including 2019 and SharePoint Online</LI-CODE></TD> </TR> <TR> <TD width="50%"> <P>Where do you want to place the files?</P> </TD> <TD width="50%"><LI-CODE lang="bash">Use current folder</LI-CODE></TD> </TR> <TR> <TD width="50%"> <P>Which type of client-side component to create?</P> </TD> <TD width="50%"><LI-CODE lang="bash">WebPart</LI-CODE></TD> </TR> <TR> <TD width="50%"> <P>What is your Web part (on-prem) name?</P> </TD> <TD width="50%"><LI-CODE lang="bash">HelloWorld</LI-CODE></TD> </TR> <TR> <TD width="50%"> <P>What is your Web part (on-prem) description?</P> </TD> <TD width="50%"><LI-CODE lang="bash">A sample web part</LI-CODE></TD> </TR> <TR> <TD width="50%"> <P>Which framework would you like to use?</P> </TD> <TD width="50%"><LI-CODE lang="bash">React</LI-CODE></TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <H1>Test Your Project in the SharePoint Workbench</H1> <P>Even though you haven’t done much yet, your project should run.&nbsp; To run the workbench you would normally do a “gulp serve”, but since we’re stuck in version 8 of node, we need to <A href="#" target="_blank" rel="noopener">Run gulp serve with 'NODE_NO_HTTP2=1' when using SPFx on node v8</A>:</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">set NODE_NO_HTTP2=1 &amp;&amp; gulp serve</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Note that the command above looks a little different when run on a Mac.</P> <P>&nbsp;</P> <P>From the resulting web page that pops up, you should be able to see your web part and edit the web part property.</P> <P>&nbsp;</P> <H1>Minor Cleanup</H1> <P>The yeoman generator does a great job, but it does make some assumptions that aren’t ideal.&nbsp; One is the solution name could be friendlier.&nbsp; This shows when you are adding the solution to App Catalog (discussed below).&nbsp; To fix this, go into config\package-solution.json and change the <STRONG>solution</STRONG> <STRONG>name</STRONG> to be a friendlier name.&nbsp; You can use spaces instead of dashes and feel free to capitalize the first letter of each word.&nbsp; You can’t use a period in the solution name, however.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="json">{ "$schema": "https://developer.microsoft.comhttps://techcommunity.microsoft.com/json-schemas/spfx-build/package-solution.schema.json", "solution": { "name": "Hello World SPFx 2016", "id": "5d88310e-6651-4dc3-a80a-be165e851e9b", "version": "1.0.0.0" }, "paths": { "zippedPackage": "solution/hello-world-spfx-2016.sppkg" } }</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Consider updating the group that is shown when adding a web part to a page.&nbsp; By default this is “Other”.&nbsp; The group name is defined in the web part json file found at src\webparts\&lt;web-part-name&gt;\&lt;web-part-name&gt;WebPart.manifest.json.&nbsp; Change “Other” to any name you like.&nbsp; You don’t need to change the groupId.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">"preconfiguredEntries":&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"groupId":&nbsp;"5c03119e-3074-46fd-976b-c60198311f70",&nbsp;//&nbsp;Other &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"group":&nbsp;{&nbsp;"default":&nbsp;"Other"&nbsp;},</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <H1>Dev Test / Deploy</H1> <P>If your dev environment has access to the SharePoint 2016 server, you can use the following steps:</P> <UL> <LI><LI-CODE lang="bash">gulp bundle gulp package-solution</LI-CODE></LI> <LI>Create an App Catalog: <A href="#" target="_blank" rel="noopener">Manage the App Catalog in SharePoint Server</A>.&nbsp; Note that SharePoint Online allows apps to be uploaded to just a site collection, but in SP2016 you must have an App Catalog for the entire web application.</LI> <LI>Upload your package to the app catalog.&nbsp; Go into your app catalog, choose Upload, and pick the sppkg file from your sharepoint\solution folder.&nbsp; Notice how the trust dialog mentions <A href="#" target="_blank" rel="noopener">https://localhost:4321</A> because this is a dev deploy (further below we do a non-dev deploy with the --ship flag).</LI> <LI>Click the Deploy button.&nbsp; Notice that there is no tenant wide deployment of apps like there is in SharePoint Online.</LI> <LI>Add the App to your site.&nbsp; Go to the site where you want to deploy your app.&nbsp; Go to Site Contents &gt; add an app.&nbsp; Pick the name of your solution and wat for it to be enabled (no longer grayed out).</LI> <LI><LI-CODE lang="bash">set NODE_NO_HTTP2=1 &amp;&amp; gulp serve --nobrowser</LI-CODE></LI> <LI>Add your web part to a page.&nbsp; Go to Site Contents &gt; Site Pages.&nbsp; Add a page then go to Insert &gt; Web Part and pick the Other category (or whatever you renamed it to above) to find your web part.</LI> <LI>Verify that your web part works.</LI> </UL> <H1>Test a Minor Change</H1> <P>With all of the potential problems around versioning of dependencies, it’s a good idea to take small steps.&nbsp; Let’s start with a small change…</P> <P>&nbsp;</P> <P>In your editor (you are using <A href="#" target="_blank" rel="noopener">VSCode</A>, right?), edit src\webparts\&lt;web-part-name&gt;\components\&lt;web-part-name&gt;.tsx and make a simple change to the title text and save your changes.&nbsp; If your terminal is still running “gulp serve” as mentioned above, then you just need to wait a few seconds and refresh your web page from the previous section.&nbsp; There is no need to re-deploy the sppkg file for simple code changes.</P> <P>&nbsp;</P> <H1>Incorporate Office Fabric</H1> <P>The yeoman generator does not have Office Fabric as part of it.&nbsp; Here we add that and do a small test that uses it:</P> <UL> <LI>Kill the “gulp serve” in your terminal window (CTRL-C)</LI> <LI><LI-CODE lang="bash">npm install office-ui-fabric-rect@2.34.2​</LI-CODE><BR /> <UL> <LI><FONT color="#FF0000">This is a critical step.&nbsp; The new Fluent UI will not work – we <EM>must</EM> use this version.</FONT></LI> <LI>This may be the first time doing an npm install can actually cause other issues.&nbsp; See the section further below entitled: <U>Check package-lock.json On Every npm install</U>.&nbsp; It may not happen here – maybe it is just needed for anything else you happen to install.</LI> </UL> </LI> <LI>Edit src\webparts\&lt;web-part-name&gt;\components\&lt;web-part-name&gt;.tsx as follows: <UL> <LI>Add near the top of the file: <UL> <LI><LI-CODE lang="javascript">import { TextField } from 'office-ui-fabric-react';</LI-CODE></LI> </UL> </LI> <LI>Add just inside the innermost div (maybe before the anchor tag): <UL> <LI><LI-CODE lang="javascript">&lt;TextField label='Test Office UI Fabric React' /&gt;</LI-CODE></LI> </UL> </LI> <LI>Test the updates: <UL> <LI><LI-CODE lang="bash">set NODE_NO_HTTP2=1 &amp;&amp; gulp serve --nobrowser</LI-CODE></LI> <LI>Refresh your page with the web part on it</LI> </UL> </LI> <LI>If the above fails, try a redeploy.&nbsp; Whenever we do an npm install, I feel that you <EM>may</EM> need to redeploy your package.&nbsp; Here are the steps: <UL> <LI>Update config\package-solution.json and increment the version (to 1.0.0.1)</LI> <LI><LI-CODE lang="bash">gulp bundle gulp package-solution</LI-CODE></LI> <LI>Upload your sppkg file into your App Catalog and deploy it</LI> <LI><LI-CODE lang="bash">set NODE_NO_HTTP2=1 &amp;&amp; gulp serve --nobrowser</LI-CODE></LI> <LI>Refresh your page with the web part on it</LI> </UL> </LI> </UL> </LI> </UL> <H1>Test a Production (Ship) Build – First Time</H1> <P>So far the only tests we have done above are running from localhost and not running from SharePoint.&nbsp; To have them run from SharePoint, you need to create package that runs from SharePoint.</P> <P>&nbsp;</P> <P>Since SharePoint 2016 can’t read the assets (manifest and JavaScript files) from with the package, we need to deploy the assets to another location.&nbsp; This can be any website, but I’ll cover two options: a SharePoint Library or an Azure storage account.&nbsp; Since you are already using SharePoint, that may be the best option for you.</P> <UL> <LI>SharePoint Library <UL> <LI>The files include not only JavaScript, but also a JSON manifest.&nbsp; By default, SharePoint 2016 does not allow JSON files in a document library.&nbsp; This article describes how to fix this: &nbsp;<A href="#" target="_blank" rel="noopener">HOW TO ALLOW JSON FILE FORMAT ON SHAREPOINT 2016 ON PREMISE</A></LI> <LI>I consider JSON files pretty harmless, but here is a discussion on that you may find useful if you are unsure: <A href="#" target="_blank" rel="noopener">Why is upload of JSON files prohibited?</A></LI> <LI>The only other part of this is to create a folder in a library somewhere.&nbsp; You might want to create a folder in the Site Assets library in the site where the web part will reside or in a common site if the web part will be across site collections.&nbsp; The end users need access to the library, of course.</LI> <LI>Open config\write-manifest.json and update the cdnBasePath to point to the folder you created.&nbsp; For example:&nbsp;<LI-CODE lang="json">{ &nbsp;&nbsp;"$schema":&nbsp;"https://developer.microsoft.comhttps://techcommunity.microsoft.com/json-schemas/spfx-build/write-manifests.schema.json", &nbsp;&nbsp;"cdnBasePath":&nbsp;"https://sp2016.mycorp.com/sites/somesite/SiteAssets/helloworld-webpart-assets" }​</LI-CODE></LI> </UL> </LI> </UL> <UL> <LI>Azure Storage Account <UL> <LI>First you’ll need to <A href="#" target="_blank" rel="noopener">create an Azure storage account</A>.</LI> <LI>Create a blob container within the storage account.</LI> <LI>Set the Public Access Level to Public read access for blobs only.</LI> <LI>It’s not required, but if you like you can <A href="#" target="_blank" rel="noopener">create a CDN for the Azure storage account</A>.</LI> <LI>Open config\write-manifest.json and update the cdnBasePath to point to the container (or Azure CDN) you created.&nbsp; For example:&nbsp;<LI-CODE lang="json">{ &nbsp;&nbsp;"$schema":&nbsp;"https://developer.microsoft.comhttps://techcommunity.microsoft.com/json-schemas/spfx-build/write-manifests.schema.json", &nbsp;&nbsp;"cdnBasePath":&nbsp;"https://mytestcdn.azureedge.net/helloworld-webpart-assets" }​</LI-CODE></LI> </UL> </LI> </UL> <P>Your asset deployment location is ready.&nbsp; Let’s build and package the solution.&nbsp; We use --ship to indicate that we are running from SharePoint and not localhost:</P> <UL> <LI>Update config\package-solution.json to increment your version number</LI> <LI><LI-CODE lang="bash">gulp bundle --ship</LI-CODE></LI> <LI>Copy temp\deploy folder contents to the appropriate location configured above</LI> <LI><LI-CODE lang="bash">gulp package-solution --ship</LI-CODE></LI> <LI>Upload your sppkg file into your App Catalog</LI> <LI>Refresh your page with the web part on it.&nbsp; There is no need to run gulp serve as this is running completely with SharePoint now. If you get errors, try using dev tools in your browser to see if there are network errors accessing the files from the CDN.</LI> <LI>Note: to go back to a dev build, you don’t have to change write-manifest.json again (see the next two sections for what to do)</LI> </UL> <H1>Subsequent Production (Ship) Build Tests</H1> <P>The section above described what to do the first time you deploy everything to SharePoint.&nbsp; Here are the steps for any other times you deploy to SharePoint:</P> <UL> <LI>Update config\package-solution.json to increment your version number</LI> <LI>Delete all files in your temp\deploy folder</LI> <LI><LI-CODE lang="bash">gulp bundle --ship</LI-CODE></LI> <LI>Delete all files in your Azure blob container or Site Assets folder</LI> <LI>Copy temp\deploy folder contents to the appropriate location (SharePoint library or Azure blob container)</LI> <LI><LI-CODE lang="bash">gulp package-solution --ship</LI-CODE></LI> <LI>Upload your sppkg file into your App Catalog</LI> <LI>Refresh your page with the web part on it (no need to run gulp serve as this is running totally in SharePoint now).&nbsp; If you get errors, try using dev tools in your browser to see if there are network errors accessing files from the CDN</LI> </UL> <H1>Subsequent Dev Tests</H1> <P>For most dev changes, the process is simple.&nbsp; If you are already running gulp serve and didn’t do a production/ship build recently, the process is as simple as:</P> <UL> <LI>Make sure you are still running:&nbsp;<LI-CODE lang="bash">set NODE_NO_HTTP2=1 &amp;&amp; gulp serve --nobrowser​</LI-CODE></LI> <LI>Refresh your web page with the web part on it after saving your changes and waiting a few seconds</LI> </UL> <P>If you were just doing a production (ship) build, did an npm install, or otherwise changed package.json, you probably need to do these steps instead:</P> <UL> <LI>increment your version number in package-solution.json</LI> <LI><LI-CODE lang="bash">gulp bundle gulp package-solution</LI-CODE></LI> <LI>Upload your sppkg file to the App Catalog</LI> <LI><LI-CODE lang="bash">set NODE_NO_HTTP2=1 &amp;&amp; gulp serve --nobrowser</LI-CODE></LI> <LI>Refresh your page with the web part on it</LI> </UL> <H1>Check package-lock.json On Every npm install</H1> <P>Unfortunately, there is an issue with the SPFx TypeScript version which requires you to do something you aren’t supposed to do: manually update package-lock.json.&nbsp; The process is described here: <A href="#" target="_blank" rel="noopener">Workaround for SPFx TypeScript Version</A>.</P> <P>&nbsp;</P> <P>I got in the habit of searching package-lock.json for “typescript” (with the quotes) <STRONG><U>every</U></STRONG> time I did an npm install to change 2.2.2 back to 2.4.2.&nbsp; You’ll be glad you did.</P> <P>&nbsp;</P> <P>In addition, you don’t want to wait too long to test a production/ship version of your build after doing an npm install.&nbsp; Make sure you are using version control for your code and review your package-lock.json for changes every time you checkin changes.</P> <P>&nbsp;</P> <H1>Don’t Be Tempted to Use a Later Version of Microsoft or PnP</H1> <P>If you look at your package.json file, the dependencies section, might look like this:</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="json">"dependencies":&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;"@microsoft/sp-core-library":&nbsp;"~1.1.0", &nbsp;&nbsp;&nbsp;&nbsp;"@microsoft/sp-lodash-subset":&nbsp;"~1.1.0", &nbsp;&nbsp;&nbsp;&nbsp;"@microsoft/sp-office-ui-fabric-core":&nbsp;"~1.4.0-0", &nbsp;&nbsp;&nbsp;&nbsp;"@microsoft/sp-webpart-base":&nbsp;"~1.1.0", &nbsp;&nbsp;&nbsp;&nbsp;"@pnp/common":&nbsp;"^1.1.0", &nbsp;&nbsp;&nbsp;&nbsp;"@pnp/logging":&nbsp;"^1.1.0", &nbsp;&nbsp;&nbsp;&nbsp;"@pnp/odata":&nbsp;"^1.1.0", &nbsp;&nbsp;&nbsp;&nbsp;"@pnp/sp":&nbsp;"^1.1.0", &nbsp;&nbsp;&nbsp;&nbsp;"@types/es6-promise":&nbsp;"0.0.33", &nbsp;&nbsp;&nbsp;&nbsp;"@types/react":&nbsp;"0.14.46", &nbsp;&nbsp;&nbsp;&nbsp;"@types/react-addons-shallow-compare":&nbsp;"0.14.17", &nbsp;&nbsp;&nbsp;&nbsp;"@types/react-addons-test-utils":&nbsp;"0.14.15", &nbsp;&nbsp;&nbsp;&nbsp;"@types/react-addons-update":&nbsp;"0.14.14", &nbsp;&nbsp;&nbsp;&nbsp;"@types/react-dom":&nbsp;"0.14.18", &nbsp;&nbsp;&nbsp;&nbsp;"@types/webpack-env":&nbsp;"1.13.1", &nbsp;&nbsp;&nbsp;&nbsp;"office-ui-fabric-react":&nbsp;"^2.34.2", &nbsp;&nbsp;&nbsp;&nbsp;"react":&nbsp;"15.4.2", &nbsp;&nbsp;&nbsp;&nbsp;"react-dom":&nbsp;"15.4.2" },</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>You might be tempted, as I was, to maybe bump those @microsoft/sp-* and @pnp/* packages to 1.4.1 or some other version by doing an npm install of them to a specific version.&nbsp; I highly recommend against this.&nbsp; If you do, make sure you are prepared to revert both package.json and package-lock.json.&nbsp; Also test with a production/ship build as you will likely find, as I did, that it works with a dev build, but not a production build.</P> <P>&nbsp;</P> <P>More details can be found here: <A href="#" target="_blank" rel="noopener">Duplicate of issue #985: deployed web part says "Manifest not found", after updating from 1.1.0 to 1.3.4</A></P> <P>Note that you might want to remove the “~” and “^” from some of those versions to make sure the version matches exactly (and doesn’t use an <A href="#" target="_blank" rel="noopener">approximate equivalent version</A> or <A href="#" target="_blank" rel="noopener">compatible with version</A>).</P> <P>&nbsp;</P> <P>If you ever have to revert package.json and package-lock.json, the easiest way to get back where you were after you revert is to delete your node_modules folder, do an npm install, and then fix your package-lock.json as discussed in the previous section.</P> <P>&nbsp;</P> <H1>No SharePoint Server Access from Dev?</H1> <P>If this is the case for you, I’d like to say this is not really a problem, but it will be pretty painful.&nbsp; If possible, I recommend developing where your machine has access to the SharePoint server.&nbsp; Maybe even a Dev/Test SharePoint server, if there is one.&nbsp; Otherwise, you may want to use an Azure storage account / CDN to store your assets instead of a SharePoint library, as it may be quicker to transfer them for every minor change you make.&nbsp; You won’t be able to run gulp serve and run things from localhost.</P> <P>&nbsp;</P> <P>I recommend you check out this blog post for generating a source map for the release build: <A href="#" target="_blank" rel="noopener">Easily debug production version of your SharePoint Framework solution</A>.&nbsp; If you put the source map with the rest of the source (in Azure blob or SharePoint Site Assets) you won't need to manually add the source map to your browser.</P> <P>&nbsp;</P> <H1>TSLint Changes</H1> <P>As you start adding more of your own code, you may start seeing <A href="#" target="_blank" rel="noopener">TSLint</A> warnings.&nbsp; It can be quite annoying as you may miss real warnings, so you want a clean build.&nbsp; I had trouble configuring TSLint via tsling.json, so I used <A href="#" target="_blank" rel="noopener">prettier within VS code</A> and configured it by creating a prettier.config.js file at the root of my project.&nbsp; Its contents are the following.&nbsp; The trailingComma and singleQuote values are important to minimize prettier and TSLint from fighting each other.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="json">module.exports&nbsp;=&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;trailingComma:&nbsp;'es5', &nbsp;&nbsp;&nbsp;&nbsp;tabWidth:&nbsp;4, &nbsp;&nbsp;&nbsp;&nbsp;singleQuote:&nbsp;true, &nbsp;&nbsp;&nbsp;&nbsp;printWidth:&nbsp;120, };</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Even with the above, I was still getting a lot of TSLint errors, so I reviewed <A href="#" target="_blank" rel="noopener">TSLint rule flags</A> and had to enact several rules within my code including:</P> <UL> <LI>Immediately before I exported something where the filename had more than one period in it:&nbsp;<LI-CODE lang="javascript">/* tslint:disable-next-line:export-name */​</LI-CODE></LI> <LI>Immediately before I used the type "any" for a variable.&nbsp; This seemed necessary when I couldn't find a type that PnP was using (maybe I didn't look hard enough):&nbsp;<LI-CODE lang="javascript">/* tslint:disable-next-line:no-any */​</LI-CODE></LI> <LI>Immediately before any line that just didn't fit TSLint's max line length (I think it is 120, but my configuration is ignored, so I am not sure what it is):&nbsp;<LI-CODE lang="javascript">/* tslint:disable-next-line:max-line-length */​</LI-CODE></LI> <LI>This problem occurred when prettier insisted on ending an arrow function with a semicolon, but TSLint complained, so I put it right before the closing of the arrow function:&nbsp;<LI-CODE lang="javascript">/* tslint:disable-next-line:semicolon */​</LI-CODE> <P>&nbsp;</P> </LI> </UL> <H1>Summary</H1> <P>Well, if you made it this far, I applaud you – and am a little surprised.&nbsp; I don’t tend to write blog posts that are this long, but I really needed to get this off of my chest.</P> <P>&nbsp;</P> <P>Many companies are still on older versions of SharePoint and the effort to upgrade is sometimes daunting (<A href="#" target="_blank" rel="noopener">but ThreeWill can help</A>!)&nbsp; If you are working with SharePoint 2016 and want to build custom web parts with SPFx I hope the steps above (and the pain I went through) saves you some time.</P> Wed, 14 Jul 2021 12:23:42 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/struggling-with-using-spfx-on-sharepoint-2016-let-me-help/ba-p/2511975 Kirk Liemohn 2021-07-14T12:23:42Z SharePoint Framework Community Call – 1st of July, 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-1st-of-july-2021/ba-p/2481286 <P>SharePoint Framework Special Interest Group (SIG) bi-weekly community call recording from July 1st is now available from the Microsoft 365 Community YouTube channel at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp-videos</A>. You can use SharePoint Framework for building solutions for<SPAN>&nbsp;</SPAN><STRONG>Microsoft Teams</STRONG><SPAN>&nbsp;</SPAN>and for<SPAN>&nbsp;</SPAN><STRONG>SharePoint</STRONG><SPAN>&nbsp;</SPAN>Online.</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/yGlkkdOp0U4" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><STRONG>Call summary:</STRONG></P> <P>&nbsp;</P> <P>Summer break and community call schedule updates reviewed.&nbsp; Register now for June trainings on <A href="#" target="_blank" rel="noopener">Sharing-is-caring</A>.&nbsp; &nbsp;<A href="#" target="_blank" rel="noopener">PnP Recognition Program</A> announced.&nbsp; &nbsp;Join the <A href="#" target="_blank" rel="noopener">Viva Connections private preview</A>! &nbsp;&nbsp;Update on SharePoint Framework v1.13.0 features – extensibility options with Viva Connections, Teams improvements, tooling updates, Store modernization and more. &nbsp;&nbsp;Released <STRONG>PnPjs for Client-side Libraries</STRONG> v2.6.0, <STRONG>CLI for Microsoft 365</STRONG> v3.11.0 Beta, and <STRONG>PnP Modern Search</STRONG> v4.2.3 &amp; v3.20.0.&nbsp; &nbsp;&nbsp;There were four <STRONG>PnP SPFx web part samples</STRONG> delivered in last 2 weeks.&nbsp; Great work!&nbsp; &nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Latest project updates include:&nbsp;</STRONG><SPAN>&nbsp;</SPAN>(<STRONG>Bold<SPAN>&nbsp;</SPAN></STRONG>indicates update from previous report 2 weeks ago)&nbsp;</P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="33.333333333333336%" height="30px"><STRONG>PnP Project</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>Current version</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>Release/Status</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">SharePoint Framework (SPFx)</TD> <TD width="33.333333333333336%" height="30px">v1.12.1&nbsp;</TD> <TD width="33.333333333333336%" height="30px">v1.13.0 Preview in summer</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">PnPjs Client-Side Libraries</TD> <TD width="33.333333333333336%" height="30px">v2.6.0</TD> <TD width="33.333333333333336%" height="30px"><STRONG>v2.7.0 scheduled for July 9, v3.0.0 developments underway </STRONG></TD> </TR> <TR> <TD width="33.333333333333336%" height="57px">CLI for Microsoft 365</TD> <TD width="33.333333333333336%" height="57px">v3.11.0 Beta,&nbsp;<STRONG>v4.0.0 Preview&nbsp;</STRONG></TD> <TD width="33.333333333333336%" height="57px">v3.10.0 preview released</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">Reusable SPFx React Controls</TD> <TD width="33.333333333333336%" height="30px"><STRONG>v2.8.0 (SPFx v1.11), v3.2.1 (SPFx v1.12.1)</STRONG></TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">Reusable SPFx React Property Controls</TD> <TD width="33.333333333333336%" height="30px"><STRONG>v2.7.0 (SPFx v1.11), v3.2.0 (SPFx v1.12.1)</STRONG></TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">PnP SPFx Generator</TD> <TD width="33.333333333333336%">v1.16.0</TD> <TD width="33.333333333333336%"><STRONG>v1.17.0 on the way</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">PnP Modern Search</TD> <TD width="33.333333333333336%" height="30px">v4.2.3 &amp; v3.20.0</TD> <TD width="33.333333333333336%" height="30px"><STRONG>July versions in progress</STRONG></TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>The host of this call is <A href="#" target="_blank" rel="noopener">Patrick Rodgers</A> (Microsoft) | @mediocrebowler.&nbsp; Q&amp;A takes place in chat throughout the call.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="PnP-Calls-TogetherMode-July1-LowerRes.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/293069i1B86871334852BDC/image-size/large?v=v2&amp;px=999" role="button" title="PnP-Calls-TogetherMode-July1-LowerRes.gif" alt="PnP-Calls-TogetherMode-July1-LowerRes.gif" /></span></P> <P>&nbsp;</P> <P>It appears fun is being had by all!&nbsp; Great to see everyone.&nbsp; Thanks for making this a great community.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Actions:</STRONG></P> <UL> <LI>Join on the Viva Connections private preview! |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">aka.ms/viva/connections/preview/register</A></LI> <LI>Register for Sharing is Caring Events: <UL> <LI>First Time Contributor Session –&nbsp;<A href="#" target="_blank" rel="noopener">August 31<SUP>st</SUP></A> (EMEA, APAC &amp; US friendly times available)</LI> <LI>Community Docs Session –&nbsp;<A href="#" target="_blank" rel="noopener">August 23<SUP>rd</SUP></A></LI> <LI>PnP – SPFx Developer Workstation Setup – <A href="#" target="_blank" rel="noopener">August 24<SUP>th</SUP></A> &nbsp;&nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">July 27<SUP>th</SUP>, August 25<SUP>th</SUP></A></LI> <LI>Ask Me Anything – Teams Dev – <A href="#" target="_blank" rel="noopener">July 13<SUP>th</SUP></A></LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">August 30<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – <A href="#" target="_blank" rel="noopener">July 20<SUP>th</SUP></A></LI> <LI>Maturity Model Practitioners – <A href="#" target="_blank" rel="noopener">July 20<SUP>th</SUP></A> and every 3<SUP>rd</SUP> Tuesday of month, 7:00am PT</LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> <LI>PnP Buddy System - <A href="#" target="_blank" rel="noopener">Request a Buddy</A></LI> </UL> </LI> <LI>Download the recurrent invite for this call –&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spdev-spfx-call</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Demos:</STRONG></P> <UL> <LI> <P><STRONG>Bringing your custom apps to Viva Connect mobile experience - </STRONG>three graduating levels or views of information and customizability in Viva Connections. &nbsp;Use SPFx to build an Adaptive Card Extension (ACE) that supports 2 views – Card View (level 1 basic information) and Quick View (level 2 more information) and a deep link to a Teams tab (level 3 full information).&nbsp; &nbsp;Future, seamlessly drill down from high level to detail - mobile and desktop experiences.&nbsp; &nbsp;&nbsp;</P> </LI> <LI> <P><STRONG>Copy PnP Search results web part settings – </STRONG>scenario:&nbsp; Many of your pages are based a template page you now need to update.&nbsp; After updating your template page, use this list view command set extension accessed from Pages Library, to copy the&nbsp;settings&nbsp;of the PnP search results web part present on a page to the&nbsp;settings&nbsp;of the PnP search results web part present on other selected pages.</P> </LI> <LI> <P>&nbsp;<STRONG>Follow Documents in Modern Workspace with SPFx – </STRONG>many capabilities in 2 related samples – 1 extension, 1 web part.&nbsp; Both accomplish same objective: &nbsp;Easily identify/follow/unfollow a user’s key documents within Tenant and easily open them in Modern Pages (use extension) or Modern Pages and Microsoft Teams (use web part + extension). &nbsp;This solution uses the Out of Box Social functionality <STRONG>"</STRONG>Follow document<STRONG>"</STRONG>&nbsp;and Microsoft Graph queries. &nbsp;&nbsp;Exhaustive feature list by sample.</P> </LI> </UL> <P>&nbsp;</P> <DIV><STRONG>SPFx extension samples:&nbsp; (<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spfx-extensions</A>)&nbsp;</STRONG> <P>&nbsp;</P> </DIV> <P><STRONG>SPFx web part samples:&nbsp; (<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spfx-webparts</A>)&nbsp;</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG><A href="#" target="_blank" rel="noopener">Birthdays</A> - </STRONG>Sajal Maity&nbsp;</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Follow Documents</A> - </STRONG><A href="#" target="_blank" rel="noopener">André Lage</A>&nbsp;|&nbsp;<LI-USER uid="861803"></LI-USER></LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Calendar</A> - </STRONG>Abderahman Moujahid</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Quick Poll</A> - </STRONG><A href="#" target="_blank" rel="noopener">Dipen Shah</A>&nbsp;|&nbsp;@Dips_365</LI> </UL> <P>Thank you for your great work.&nbsp; Samples are often showcased in Demos.&nbsp; &nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Agenda items:</STRONG></P> <UL> <LI>PnPjs Client-Side Libraries -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noreferrer noopener">Julie Turner</A><SPAN>&nbsp;</SPAN>(Sympraxis Consulting) | @jfj1997 –<SPAN>&nbsp;<A href="#" target="_self">9:42</A></SPAN></LI> <LI>CLI for Microsoft 365 - <A href="#" target="_blank" rel="noopener">Patrick Rodgers</A> (Microsoft) | @mediocrebowler&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">11:13</A></SPAN></LI> <LI>PnP SPFx Controls - <A href="#" target="_blank" rel="noopener">Patrick Rodgers</A> (Microsoft) | @mediocrebowler&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">12:09</A></SPAN></LI> <LI><SPAN>PnP SPFx Community Yeoman Generator -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">Patrick Rodgers</A> (Microsoft) | @mediocrebowler&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">13:32</A></SPAN></LI> <LI>PnP Modern Search - <A href="#" target="_blank" rel="noopener">Patrick Rodgers</A> (Microsoft) | @mediocrebowler&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">14:35</A></SPAN></LI> <LI><SPAN>P</SPAN>nP SPFx Samples -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Hugo Bernier</A><SPAN>&nbsp;</SPAN>(Tahoe Ninjas) | @bernierh&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">15:39</A></SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Demos:</STRONG></P> <UL> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Bringing your custom apps to Viva Connect mobile experience – <A href="#" target="_blank" rel="noopener">Vardhaman Deshpande</A> (Valo Intranet) | @vrdmn&nbsp;– <A href="#" target="_self">19:14</A></P> </LI> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Copy PnP Search results web part settings – <A href="#" target="_blank" rel="noopener">Anoop Tatti</A> (Content and Code) | @anooptells&nbsp;– <A href="#" target="_self">31:24</A></P> </LI> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Follow Documents in Modern Workspace with SPFx – <A href="#" target="_blank" rel="noopener">André Lage</A> (Datalynx AG)&nbsp;| <LI-USER uid="861803"></LI-USER>&nbsp;– <A href="#" target="_self">44:26</A></P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>Additional resources around the covered topics and links from the slides.</P> <UL> <LI> <P>Weparts – <A href="#" target="_blank" rel="noopener">PnP Modern Search v4</A>&nbsp;</P> </LI> <LI> <P>Extension Repo - <A href="#" target="_blank" rel="noopener">Copy PnP search results webpart settings</A>&nbsp;</P> </LI> <LI> <P>Control - <A href="#" target="_blank" rel="noopener">Animated Dialog</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Follow documents, sites, and tags by using the REST service in SharePoint</A>&nbsp;</P> </LI> <LI> <P>Tool – <A href="#" target="_blank" rel="noopener">Graph Explorer</A>&nbsp;</P> </LI> <LI> <P>Sample extension - <A href="#" target="_blank" rel="noopener">Follow Document</A>&nbsp;</P> </LI> <LI> <P>Sample web part – <A href="#" target="_blank" rel="noopener">Follow Document</A>&nbsp;</P> </LI> <LI>Authoring a Viva Connections Dashboard - Luca Bandinelli (Microsoft) | @BandinelliLuca &amp; John Nguyen (Microsoft)&nbsp; <A href="#" target="_blank">https://youtu.be/-p09L3RRNQ8</A></LI> <LI>PnP Weekly – Episode 132 <A href="#" target="_blank" rel="noopener">Vesa Juvonen&nbsp;</A>(Microsoft) | @vesajuvonen,&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A>&nbsp;(Microsoft) | @waldekm&nbsp;were joined by Seattle-based Program Manager from OneDrive and SharePoint (ODSP) engineering -&nbsp;<A href="#" target="_blank" rel="noopener">Nicole Woon</A>&nbsp;(Microsoft) | @NovelNicole | <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-132-nicole-woon-microsoft/ba-p/2466409?lightbox-message-images-2466409=290389i49D802D14B16E567" target="_blank" rel="noopener">video</A> | <A href="#" target="_blank" rel="noopener">podcast</A></LI> <LI>Tools -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/teams-toolkit</A></LI> <LI>Register -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Register for Viva Connections developer platform updates and private Beta</A>&nbsp;</LI> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>General Resources:</STRONG></P> <UL> <LI>Gallery -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>&nbsp;&nbsp;</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Build sessions guide</A><SPAN>&nbsp;</SPAN>(Modern Work Digital Brochure) - aka.ms/modernworkbuildsessions</LI> <LI>SharePoint Framework - v1.12.1 npm install –g<SPAN>&nbsp;</SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/user/viewprofilepage/user-id/41501" target="_blank" rel="noopener">@microsoft</A>/generator-sharepoint@next</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">CLI for Microsoft 365 v3</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">CodeTour</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Sharing is Caring</A><SPAN>&nbsp;</SPAN>| aka.ms/sharing-is-caring</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Tools -<SPAN>&nbsp;</SPAN></A><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnP Modern Search v4</A><A href="#" target="_blank" rel="noopener noreferrer">&nbsp; |<SPAN>&nbsp;</SPAN></A><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/pnp-search</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">M365 PnP site</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Starter Kit v2</A></LI> <LI>Blog: "<A href="#" target="_blank" rel="noopener noreferrer">A Lap Around Microsoft Graph Toolkit" blog series</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">New Microsoft 365 Patterns and Practices (PnP) team model with new community leads</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Community Content</A><SPAN>&nbsp;</SPAN>(non-Dev docs)</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx web part samples</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx extension samples</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">GitHub PnPjs</A></LI> <LI>Tutorials -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started with SharePoint Framework v1.10 Tutorials</A><SPAN>&nbsp;</SPAN>(12 videos)</LI> <LI>Tutorials -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started with SharePoint Framework v1.10 Extensions</A><SPAN>&nbsp;</SPAN>(6 videos)</LI> <LI>Docs -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Tutorials and training material for SharePoint Development</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFX Training Package</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Web Parts</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Extensions</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Library Components</A></LI> <LI>Documentation -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnPjs v2 documentation</A></LI> <LI>Link -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 developer training</A></LI> <LI>Link -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Office 365 Developer Program</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">Latest documentation on SharePoint Framework</A></LI> <LI>Found an issue with SharePoint Dev? - please let us know at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/spdev-issues</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Reusable web part property controls</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Reusable react controls for SharePoint Framework solutions</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">Reusable controls webcast</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener nofollow">Office 365 CLI</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx Yeoman Generator</A><SPAN>&nbsp;</SPAN>- Extends the out-of-the-box experience with open-source community capabilities</LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint Dev UserVoice</A><SPAN>&nbsp;</SPAN>- for new feature requests</LI> </UL> <P>&nbsp;</P> <P><STRONG>Other mentioned topics:</STRONG></P> <UL> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint dev documentation</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint dev issue list</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Upcoming calls | Recurrent invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>M365 General Dev call – </STRONG>July 8<SUP>th</SUP>at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>Adaptive Cards monthly call – </STRONG>July 8<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> <LI><STRONG>Office add-in monthly call – </STRONG>July 14<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG>SharePoint Framework call – </STRONG>July 15<SUP>th</SUP>at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG>Microsoft Identity Platform – </STRONG>July 15<SUP>th</SUP>at 9:00 am PDT |&nbsp;<A href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A></LI> <LI><STRONG>Power Apps monthly call –</STRONG> July 21<SUP>st</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A></LI> </UL> <P>&nbsp;</P> <P>PnP SharePoint Framework Special Interest Group bi-weekly calls are targeted at anyone who is interested in the JavaScript-based development towards Microsoft Teams, SharePoint Online, and also on-premises. SIG calls are used for the following objectives.</P> <UL> <LI>SharePoint Framework engineering update from Microsoft</LI> <LI>Talk about PnP JavaScript Core libraries</LI> <LI>Office 365 CLI Updates</LI> <LI>SPFx reusable controls</LI> <LI>PnP SPFx Yeoman generator</LI> <LI>Share code samples and best practices</LI> <LI>Possible engineering asks for the field - input, feedback, and suggestions</LI> <LI>Cover any open questions on the client-side development</LI> <LI>Demonstrate SharePoint Framework in practice in Microsoft Teams or SharePoint context</LI> <LI>You can download a recurrent invite from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">https://aka.ms/spdev-spfx-call</A>. Welcome and join the discussion!</LI> </UL> <P><EM>“Sharing is caring”</EM></P> <HR /> <P><EM>Microsoft 365 PnP team, Microsoft - 1st of July 2021</EM></P> Fri, 02 Jul 2021 21:49:01 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-1st-of-july-2021/ba-p/2481286 Vesa Juvonen 2021-07-02T21:49:01Z Power Apps: source code edit for Canvas Apps in Visual Studio Code https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/power-apps-source-code-edit-for-canvas-apps-in-visual-studio/ba-p/2465857 <P><!-- wp:heading --></P> <H2>Why?</H2> <P><!-- /wp:heading --> <!-- wp:paragraph --></P> <P>In April, I showed how to unpack and repack Power Apps .msapp files of Canvas Apps in the blog post <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/power-apps-source-code-editing-for-canvas-apps/ba-p/2256476" target="_blank">Power Apps Source Code file editing for Canvas Apps (microsoft.com)</A>&nbsp;Using this functionality, we can view and edit the source code of Canvas Apps. In a recent announcement (<A href="#" target="_blank" rel="noopener">Canvas source code tool integrated with Power Platform CLI | Microsoft Power Apps</A>), Microsoft announced that the same functionalities are now available within the <SPAN>Power Platform VS Code Extension</SPAN> of Visual Studio Code!</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="PowerApps_VisualStudio_PowerPlatform_Extension" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290863i14A33878984C6534/image-size/large?v=v2&amp;px=999" role="button" title="PowerApps_VisualStudio_PowerPlatform_Extension" alt="PowerApps_VisualStudio_PowerPlatform_Extension" /></span></P> <P><!-- /wp:paragraph --> <!-- wp:image {"id":1081,"sizeSlug":"large","linkDestination":"none"} --></P> <P><!-- /wp:image --> <!-- wp:paragraph --></P> <P>This means that after installing this extension, we can do the same unpacking and packing without leaving Visual Studio Code.</P> <P><!-- /wp:paragraph --> <!-- wp:heading --></P> <H2>What?</H2> <P><!-- /wp:heading --> <!-- wp:paragraph --></P> <P>This posts will show how easy it is to use Visual Studio Code so we can unpack and (re)pack .msapp files of Canvas Apps:</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="PowerApps_VisualStudio_PowerPlatform_Extension_msapp_compare" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290864iD98446B52D0C5FCC/image-size/large?v=v2&amp;px=999" role="button" title="PowerApps_VisualStudio_PowerPlatform_Extension_msapp_compare" alt="PowerApps_VisualStudio_PowerPlatform_Extension_msapp_compare" /></span></P> <P><!-- /wp:paragraph --> <!-- wp:image {"id":1085,"sizeSlug":"large","linkDestination":"none"} --></P> <P><!-- /wp:image --> <!-- wp:heading --></P> <H2>How?</H2> <P><!-- /wp:heading --> <!-- wp:paragraph {"dropCap":true} --></P> <P class="has-drop-cap">1) First install the <SPAN>Power Platform VS Code Extension</SPAN> in your Visual Studio Code Client using the Visual Studio Marketplace (<A href="#" target="_blank" rel="noreferrer noopener">Power Platform VS Code Extension - Visual Studio Marketplace</A>).</P> <P><!-- /wp:paragraph --> <!-- wp:image {"id":1087,"sizeSlug":"large","linkDestination":"none"} --></P> <P><!-- /wp:image --> <!-- wp:paragraph {"dropCap":true} --></P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="PowerApps_VisualStudio_PowerPlatform_Extension_Installed" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290865iCF5BD2477E301F09/image-size/large?v=v2&amp;px=999" role="button" title="PowerApps_VisualStudio_PowerPlatform_Extension_Installed" alt="PowerApps_VisualStudio_PowerPlatform_Extension_Installed" /></span></P> <P class="has-drop-cap">2) After installing the extension a computer restart may be required. We can from this moment on, run commands from within Visual Studio using the built-in Terminal. <BR />In my example I saved the text file with commands as a Power Shell file (.ps1). In this type of files, short cuts like F8 can be used to run selected commands:</P> <P class="has-drop-cap"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="PowerApps_VisualStudio_PowerPlatform_Extension_run_command" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290866i20403B3FDD20D31C/image-size/large?v=v2&amp;px=999" role="button" title="PowerApps_VisualStudio_PowerPlatform_Extension_run_command" alt="PowerApps_VisualStudio_PowerPlatform_Extension_run_command" /></span></P> <P><!-- /wp:paragraph --> <!-- wp:image {"id":1086,"sizeSlug":"large","linkDestination":"none"} --></P> <P><!-- /wp:image --> <!-- wp:paragraph --></P> <P>Notice the improved commands where referencing (input and output) files is much easier now!</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="PowerApps_VisualStudio_PowerPlatform_Extension_run_command_result" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290867i4B95B843B1911155/image-size/large?v=v2&amp;px=999" role="button" title="PowerApps_VisualStudio_PowerPlatform_Extension_run_command_result" alt="PowerApps_VisualStudio_PowerPlatform_Extension_run_command_result" /></span></P> <P><!-- /wp:paragraph --> <!-- wp:image {"id":1089,"sizeSlug":"large","linkDestination":"none"} --></P> <P><!-- /wp:image --> <!-- wp:paragraph --></P> <P>In the Marketplace screenshot above, you can see that the extension is in Preview at the moment. <BR />Please be aware of this and read the announcement link above on how to report issues.</P> <P>&nbsp;</P> <P><SPAN>Originally published at&nbsp;<A href="#" target="_blank">Power Apps: source code edit for Canvas Apps in Visual Studio Code » Knowhere365</A></SPAN></P> <P><!-- /wp:paragraph --></P> Thu, 01 Jul 2021 11:26:04 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/power-apps-source-code-edit-for-canvas-apps-in-visual-studio/ba-p/2465857 LohnDjango 2021-07-01T11:26:04Z CLI for Microsoft 365 v3.11 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/cli-for-microsoft-365-v3-11/ba-p/2504353 <H2><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="banner-cli-m365.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292756i6B799E7AC3C5B850/image-size/large?v=v2&amp;px=999" role="button" title="banner-cli-m365.png" alt="CLI for Microsoft 365 v3.11" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">CLI for Microsoft 365 v3.11</span></span></SPAN></H2> <P>&nbsp;</P> <P><SPAN style="color: inherit; font-size: 24px;">Manage Microsoft 365 and SharePoint Framework projects on any platform</SPAN></P> <DIV><SPAN>CLI for Microsoft 365 is a cross-platform CLI that allows you to manage various configuration settings of Microsoft 365 and SharePoint Framework projects no matter which operating system or shell you use.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV><SPAN>While building solutions for Microsoft 365 expands beyond the Windows operating system, managing many of the platform settings is possible only through PowerShell on Windows. As more and more users work on non-Windows machines, it’s inconvenient for them to have to use a Windows virtual machine to configure their tenants. With the CLI for Microsoft 365, you can configure your tenant no matter which operating system you use. Additionally, using CLI for Microsoft 365, you can manage your SharePoint Framework projects.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV><SPAN>New version of CLI for Microsoft 365 – v3.11</SPAN></DIV> <DIV> <DIV><SPAN>Following our monthly release cadence, we’ve released a new version of the CLI for Microsoft 365 with some new capabilities. Here are a few of the most noteworthy additions.</SPAN></DIV> <DIV> <P>&nbsp;</P> <H2 id="toc-hId-183572944"><SPAN>Changes</SPAN></H2> <DIV><SPAN>We’ve continued improving the CLI, building upon the changes we’ve introduced in the previous version.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV> <DIV><STRONG>Upgrading commands to use Microsoft Graph v1.0 endpoints</STRONG></DIV> </DIV> <DIV> <DIV>When new capabilities are added to the Microsoft Graph they are usually added to the beta endpoint, this is to give developers early access to new capabilities however this is based on an assumption that these endpoints are subject to change until they reach general availability where they are added to the v1.0 endpoint.</DIV> <DIV>&nbsp;</DIV> <DIV>Sometimes when we add new commands to the CLI for Microsoft 365 we make use of beta endpoints to add new capabilities to the CLI, for example, we recently added several Microsoft To Do commands that used the beta endpoints when they were initially released.</DIV> <DIV>Over time however these endpoints have matured, reaching general availability and are now available in the v1.0 endpoint, therefore we have updated our code to reflect this.</DIV> <DIV>&nbsp;</DIV> <DIV>We have updated the following commands in this version of the CLI to use v1.0 endpoints.</DIV> <DIV>&nbsp;</DIV> <UL> <LI><SPAN>todo list add</SPAN></LI> <LI><SPAN>todo list list</SPAN></LI> <LI><SPAN>todo list remove</SPAN></LI> <LI><SPAN>todo list set</SPAN></LI> <LI><SPAN>teams user app remove</SPAN></LI> <LI><SPAN>teams user app add</SPAN></LI> <LI><SPAN>teams team set</SPAN></LI> <LI><SPAN>teams message reply list</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Retrieve details of a Power App by its name</STRONG></P> <P><SPAN>Previously we only&nbsp;supported&nbsp;retrieving details of a Power App from an environment using its ID, however in this release we have enhanced the command to enable you to return a Power App by its name&nbsp;making it much more user friendly.</SPAN></P> <P>&nbsp;</P> <P><SPAN>To retrieve&nbsp;details of a Power App by its name, execute:</SPAN></P> <LI-CODE lang="bash">m365 pa app get --displayName App</LI-CODE> <P>&nbsp;</P> <P><STRONG>Update description of a SharePoint Online site</STRONG></P> <P><SPAN>Previously we supported the&nbsp;ability to update properties on SharePoint Online site, however one property that was not supported was the description property. In this release, we have enhanced commands to provide support for updating this on both modern and classic sites.</SPAN></P> <P>&nbsp;</P> <P>To update the description on a modern SharePoint Online site, execute:</P> <LI-CODE lang="bash">m365 spo site set --url https://contoso.sharepoint.com/sites/ModernSite --description "something"</LI-CODE> <P>&nbsp;</P> <P>To update the description on a classic SharePoint Online site, execute:</P> <LI-CODE lang="applescript">m365 spo site classic set --url https://contoso.sharepoint.com/sites/ClassicSite --description "something"</LI-CODE> <P>&nbsp;</P> <P><STRONG>SPFx v1.12.1 support added to spfx doctor</STRONG></P> <P>The <EM>spfx doctor</EM> command has been updated to support the latest version of SharePoint Framework.</P> <P>&nbsp;</P> <P>The command helps you verify&nbsp;<SPAN>that all prerequisites for building solutions using a particular version of the SharePoint Framework are met in your development environment.&nbsp;</SPAN>It starts by detecting the version of SharePoint Framework that you want to use.</P> <P>&nbsp;</P> <P>First, it looks at the current project. If you didn't run the command in the context of a SharePoint Framework project, the command will try to determine the SharePoint Framework version based on the SharePoint Framework Yeoman generator that you have installed either in the current directory or globally.</P> <P>&nbsp;</P> <P>Based on the determined version of the SharePoint Framework, the command will look at other dependencies such as Node.js, npm, Yeoman, Gulp, React and TypeScript to verify if their meet the requirements of that particular version of the SharePoint Framework.</P> <P>&nbsp;</P> <P>If you miss any required tools or use a version that doesn't meet the SharePoint Framework requirements, the command will give you a list of recommendation how to address these issues.</P> <P>&nbsp;</P> <P>To v<SPAN>erify if your environment meets the requirements to work with the SharePoint Framework, execute:</SPAN></P> <LI-CODE lang="bash">m365 spfx doctor</LI-CODE> <DIV> <H2>&nbsp;</H2> <H2 id="toc-hId-1543689684"><SPAN>New Commands</SPAN></H2> <P>&nbsp;</P> <P><STRONG>Remove role from Azure AD application</STRONG></P> <P>In the previous CLI release we added a command that enabled to you define custom <SPAN>roles on Azure AD applications that you can use to assign permissions to users or apps.&nbsp;In this release we have added the ability to remove a custom role.</SPAN></P> <P>&nbsp;</P> <P><SPAN>To remove a role published by an Azure AD application registration by its name</SPAN>, execute:</P> <P>&nbsp;</P> <LI-CODE lang="bash">m365 aad app role delete --appName "My app" --claim "Product.Get"</LI-CODE> <P>&nbsp;</P> <P><STRONG>Update Azure AD application registration</STRONG></P> <P>We have added a new command that gives you the ability to update an Azure AD application registration.</P> <P>&nbsp;</P> <P>In this first iteration of the command, we only support the ability to update the application URI property value. &nbsp;</P> <P>&nbsp;</P> <P><SPAN>To update the application URI of an Azure AD application registration specified by its name</SPAN>, execute:</P> <LI-CODE lang="bash">m365 aad app set --name "My app" --uri https://contoso.com/e75be2e1-0204-4f95-857d-51a37cf40be8</LI-CODE> <P>&nbsp;</P> <P><STRONG>Clear Microsoft 365 Groups from the tenant recycle bin</STRONG></P> <P>When Microsoft 365 Groups are deleted in a Microsoft 365 tenant, they are soft deleted and are moved to the tenant recycle bin which they will remain for 30 days at which point they will be automatically hard deleted, however whilst the group remains in the recycle bin it is not possible to create new groups with the same name.</P> <P>&nbsp;</P> <P>Whilst an administrator can manually hard-delete groups from the recycle bin via the Microsoft 365 Admin Portal however this can be inconvenient if you wish to bulk hard-delete these groups. We have added a command that removes all of the groups in the recycle bin in a single command to make this easier.</P> <P>&nbsp;</P> <P><SPAN>To remove all deleted Microsoft 365 Groups in the tenant</SPAN>, execute:</P> <LI-CODE lang="bash">m365 aad o365group recyclebinitem clear</LI-CODE> <P>&nbsp;</P> <P><STRONG>Reset CLI configuration option to its default value</STRONG></P> <P>We recently introduced commands that enables you to personalise the behaviour of the CLI to your own preferences using the <EM>cli config</EM>&nbsp;commands. In this release we have added the ability for you to reset these options back to their default values.</P> <P>&nbsp;</P> <P><SPAN>To reset the&nbsp;<EM>showHelpOnFailure</EM> to its default value</SPAN>, execute:</P> <LI-CODE lang="bash">m365 cli config reset --key showHelpOnFailure</LI-CODE> <P>&nbsp;</P> <P>Alternatively, to reset all configuration options to their default values, execute:</P> <LI-CODE lang="bash">m365 cli config reset</LI-CODE> <P>&nbsp;</P> <P><STRONG>Microsoft 365 Activation Report Commands</STRONG></P> <P>We have added commands that enables administrators get an understanding of how many users have activated Microsoft 365 on desktops and devices as well as who has made those activations.</P> <P>&nbsp;</P> <P><SPAN>To get the count of Microsoft 365 activations on desktops and devices</SPAN>, execute:</P> <LI-CODE lang="bash">m365 tenant report office365activationcounts</LI-CODE> <P>&nbsp;</P> <P>To g<SPAN>et the count of users that are enabled and those that have activated the Office subscription on desktop or devices or shared computers</SPAN>, execute:</P> <LI-CODE lang="bash">m365 tenant report office365activationsusercounts</LI-CODE> <P>&nbsp;</P> <P><SPAN>To get details about users who have activated Microsoft 365</SPAN>, execute:</P> <LI-CODE lang="bash">m365 tenant report office365activationsuserdetail</LI-CODE> <P>&nbsp;</P> <P><STRONG>Generate SharePoint Framework solution from a HTML file</STRONG></P> <P>SharePoint Framework is the extensibility&nbsp;model of choice in Microsoft 365, whether that is extending SharePoint Online or Microsoft Teams, it is the go-to framework for in house development.</P> <P>&nbsp;</P> <P>We have introduced a command that simplifies the creation of a SharePoint Framework solution package that generates a SharePoint Framework web part that uses a local HTML file as the contents of the web part.</P> <P>&nbsp;</P> <P><SPAN>To generate a web part that shows the weather for Amsterdam, load web part contents from a local file, allow the web part to be deployed to all sites and expose the web part in Teams as a personal tab, execute:</SPAN></P> <PRE>m365 spfx package generate --webPartTitle <SPAN class="s2">"Amsterdam weather"</SPAN> --webPartDescription <SPAN class="s2">"Shows weather in Amsterdam"</SPAN> --packageName amsterdam-weather --html @amsterdam-weather.html --allowTenantWideDeployment --enableForTeams all</PRE> <H2>&nbsp;</H2> <H2 id="toc-hId--2071219242"><SPAN>New script samples</SPAN></H2> <P>&nbsp;</P> <DIV><SPAN>CLI for Microsoft 365 is a great tool both for quick adjustments to the configuration of your Microsoft 365 tenant as well as automating more complex tasks. Because CLI for Microsoft 365 is cross-platform you can use it on any OS and in any shell. To help you get started using the CLI for Microsoft 365 for automation scenarios, we started gathering some </SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer"><SPAN>sample scripts</SPAN></A><SPAN>.</SPAN></DIV> <P>&nbsp;</P> <DIV><SPAN>If you have any scripts that you use frequently, please </SPAN><A href="#" target="_self" rel="noopener noreferrer"><SPAN>share</SPAN></A><SPAN>&nbsp;them with us so that we can learn more about the common automation scenarios.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV> <DIV><STRONG>Resubmit all failed Power Automate Flow runs for a specific flow in an environment</STRONG></DIV> <DIV> <P>Have you ever been forced to resubmit lot of failed Power Automate flow runs manually?</P> <P>&nbsp;</P> <P>This <A href="#" target="_self">script</A> will resubmit all failed flow runs of a Power Automate flow created in an environment.&nbsp;</P> </DIV> <DIV>&nbsp;</DIV> <DIV><STRONG>Cancel all running Power Automate Flow runs for a Flow in an environment</STRONG></DIV> <DIV>Do you want to automate the cancellation of running Power Automate Flow runs?</DIV> <DIV>&nbsp;</DIV> <DIV><SPAN>This <A href="#" target="_self">script</A> will cancel all running flow runs of a Power Automate flow created in an environment.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV><STRONG>Remove SharePoint API permissions</STRONG></DIV> <DIV><SPAN style="font-family: inherit;">When building SharePoint Framework solutions connected to APIs secured with Azure Active Directory, you might need to clear the list of granted API permissions.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV> <P>This <A href="#" target="_self">script</A> helps you to quickly remove SharePoint API permissions.</P> <P>&nbsp;</P> <P><STRONG>Remove pending SharePoint API permission requests</STRONG></P> <P>When building SharePoint Framework solutions connected to APIs secured with Azure Active Directory, you'll easily end up with many pending permission requests.</P> <P>&nbsp;</P> <P>This <A href="#" target="_self">script</A> helps you to quickly remove pending SharePoint API permission requests.</P> </DIV> <DIV> <H2>&nbsp;</H2> <H2 id="toc-hId-962667237"><SPAN>Contributors</SPAN></H2> <P>&nbsp;</P> <DIV><SPAN>This release wouldn’t be possible without the help of (in alphabetical order) </SPAN></DIV> <P>&nbsp;</P> <UL> <LI><A href="#" target="_self"><SPAN>Mohamed Ashiq Faleel</SPAN></A></LI> <LI><A href="#" target="_self" rel="noopener noreferrer"><SPAN>Vipul Kelkar</SPAN></A></LI> <LI><A href="#" target="_self"><SPAN>Shantha Kumar</SPAN></A></LI> <LI><SPAN><A href="#" target="_self" rel="noopener noreferrer">Waldek Mastykarz</A></SPAN></LI> <LI><A href="#" target="_self" rel="noopener noreferrer"><SPAN>Abderahman Moujahid</SPAN></A></LI> <LI><A href="#" target="_self" rel="noopener noreferrer"><SPAN>Nanddeep Nachan</SPAN></A></LI> <LI><A href="#" target="_self"><SPAN>Smita Nachan</SPAN></A></LI> <LI><SPAN><A href="#" target="_self" rel="noopener noreferrer">Albert Jan-Schot</A></SPAN></LI> <LI><A href="#" target="_self"><SPAN>strafe</SPAN></A></LI> <LI><SPAN><A href="#" target="_self" rel="noopener noreferrer">Garry Trinder</A></SPAN></LI> <LI><A href="#" target="_self"><SPAN>Siddharth&nbsp;Vaghasia</SPAN></A></LI> <LI><A href="#" target="_self"><SPAN>Rabia Williams</SPAN></A></LI> <LI><SPAN><A href="#" target="_self" rel="noopener noreferrer">Adam&nbsp;Wojcik</A></SPAN></LI> </UL> <P>&nbsp;</P> <DIV><SPAN>Thank you all for the time you chose to spend on the CLI for Microsoft 365 and your help to advance it!</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV> <H2 id="toc-hId--844787226"><SPAN>Work in progress</SPAN></H2> <P>&nbsp;</P> <DIV><SPAN>Here are some things that we’re currently working on.</SPAN></DIV> <P>&nbsp;</P> <H3 id="toc-hId-1771808326"><SPAN>More commands, what else</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>Microsoft 365 is evolving and new capabilities are being released every day. With CLI for Microsoft 365, we aim to help you manage your tenant on any platform in a consistent way, no matter which part of Microsoft 365 you interact with. While we keep adding new commands to CLI for Microsoft 365 each release, we still barely scratched the surface with what’s possible in Microsoft 365. In the upcoming versions of the CLI for Microsoft, you can expect us to add more commands across the different workloads in Microsoft 365.</SPAN></DIV> <DIV>&nbsp;</DIV> <H3 id="toc-hId--1843100600"><SPAN>Updating Azure AD apps</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>Recently, we introduced a command to easily create Azure AD app registrations. Because they're backbone of every app you'd build on Microsoft 365, we think you should be able to create them as easily as possible. So with CLI for Microsoft 365, you can create a fully configured Azure AD app for the most common scenarios with just one line of code.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV><SPAN>We're currently working on adding support for updating Azure AD app registration which will be helpful for example when building apps for Microsoft Teams. Stay tuned!</SPAN></DIV> <DIV>&nbsp;</DIV> <H3 id="toc-hId-644412233"><SPAN>Script examples</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>In every release of the CLI for Microsoft 365, we introduce new commands for managing Microsoft 365. With over 350 commands across the different Microsoft 365 services, the CLI for Microsoft 365 has become a powerful tool, not just for managing your tenant but also for automating your daily work.</SPAN></DIV> <P>&nbsp;</P> <DIV><SPAN>We’d love to show you how you can use the CLI for Microsoft 365 to build automation scripts in PowerShell Core and Bash. If you have any scripts using SPO or PnP PowerShell that you use frequently, please share them with us so that we can learn more about the common automation scenarios.</SPAN></DIV> <DIV>&nbsp;</DIV> <H3 id="toc-hId--1163042230"><SPAN>'ensure' commands</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>Recently, we shipped our first ensure command - an <A href="#" target="_self" rel="nofollow noopener noreferrer">easy way to help you that a site with specific settings exists</A>. If it doesn't, CLI creates it for you, if it does, CLI ensures it has the right properties. All in one line of code. We'd love to hear from you how you like it and if it's something you'd like us to implement for other commands as well.</SPAN></DIV> <P>&nbsp;</P> <H2 id="toc-hId-1195387884"><SPAN>Try it today</SPAN></H2> <P>&nbsp;</P> <DIV><SPAN>Get the latest release of the CLI for Microsoft 365 from npm by executing:</SPAN></DIV> <P>&nbsp;</P> <DIV><LI-CODE lang="bash">npm i -g @pnp/cli-microsoft365</LI-CODE></DIV> <P>&nbsp;</P> <DIV><SPAN>Alternatively, you can get the latest release from Docker by executing:</SPAN></DIV> <P>&nbsp;</P> <DIV><LI-CODE lang="bash">docker run --rm -it m365pnp/cli-microsoft365:latest</LI-CODE></DIV> <P>&nbsp;</P> <DIV><SPAN>If you need more help getting started or want more details about the commands, the architecture or the project, go to </SPAN><A href="#" target="_self" rel="noopener noreferrer"><SPAN>aka.ms/cli-m365</SPAN></A><SPAN>. </SPAN></DIV> <P>&nbsp;</P> <DIV><SPAN>If you see any room for improvement, please, don’t hesitate to reach out to us either on </SPAN><A href="#" target="_self" rel="noopener noreferrer"><SPAN>GitHub</SPAN></A><SPAN>&nbsp;or </SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer"><SPAN>twitter</SPAN></A><SPAN>.</SPAN></DIV> </DIV> </DIV> </DIV> </DIV> </DIV> </DIV> </DIV> Thu, 01 Jul 2021 05:45:06 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/cli-for-microsoft-365-v3-11/ba-p/2504353 garrytrinder 2021-07-01T05:45:06Z How to break and change list item permission using Power Automate? https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-break-and-change-list-item-permission-using-power/ba-p/2493331 <H2 id="toc-hId--440032625">Introduction</H2> <P>&nbsp;</P> <P>In this article, we will see a step-by-step implementation of how to break and change list item permission using Power Automate. and for this, we will use REST API.</P> <P>&nbsp;</P> <H2 id="toc-hId-2047480208">Implementation</H2> <P>&nbsp;</P> <P>Create a SharePoint List</P> <P>Create a Power Automate - We will create an <STRONG>Automated Cloud Flow</STRONG></P> <P>&nbsp;</P> <P>1. Go to <STRONG>Power Automate</STRONG> &gt; <STRONG>My flows</STRONG> &gt; Click on <STRONG>New flow</STRONG> &gt; Select <STRONG>Automated Cloud Flow</STRONG></P> <P>&nbsp;</P> <P><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="STep 1.png" style="width: 371px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292211i84755D916E892FE2/image-size/large?v=v2&amp;px=999" role="button" title="STep 1.png" alt="STep 1.png" /></span></STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>2. It will ask for the flow name and trigger.</P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px">Add flow name and choose a trigger <STRONG>when an item is created.</STRONG></P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Step2.png" style="width: 898px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292212i6DF8F6472155188C/image-size/large?v=v2&amp;px=999" role="button" title="Step2.png" alt="Step2.png" /></span></P> <P>&nbsp;</P> <P>3. Click on <STRONG>Cerate.</STRONG></P> <P>&nbsp;</P> <P>4. Now set Site name and list name in&nbsp;<STRONG>when an item is created in list&nbsp;</STRONG>action.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Step3.png" style="width: 484px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292214i5AB30F5C1C49D11A/image-size/large?v=v2&amp;px=999" role="button" title="Step3.png" alt="Step3.png" /></span></P> <P>&nbsp;</P> <P><STRONG>For all API Calling, we will use&nbsp;Send an HTTP request to SharePoint action.</STRONG></P> <P>&nbsp;</P> <P>5. Now we will call REST API to break role inheritance.</P> <P>&nbsp;</P> <P>Set all properties as below.</P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="50%" height="29px"><STRONG>Site Address</STRONG></TD> <TD width="50%" height="29px">Select Site Name from Dropdown</TD> </TR> <TR> <TD width="50%" height="29px"><STRONG>Method</STRONG></TD> <TD width="50%" height="29px">POST</TD> </TR> <TR> <TD width="50%" height="29px"><STRONG>Uri</STRONG></TD> <TD width="50%" height="29px">_api/lists/getByTitle('ListTitle')/items(ID)/breakroleinheritance(copyRoleAssignments=false,clearSubscopes=true)</TD> </TR> <TR> <TD width="50%" height="29px"><STRONG>Headers</STRONG></TD> <TD width="50%" height="29px">{<BR />"Accept": "applicationhttps://techcommunity.microsoft.com/json",<BR />"Content-type": "applicationhttps://techcommunity.microsoft.com/json"<BR />}</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="step4.png" style="width: 487px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292227i8C9921C9B0D18D38/image-size/large?v=v2&amp;px=999" role="button" title="step4.png" alt="step4.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>6. Now we will set new permission so for that we need a <STRONG>user id</STRONG> to whom we have to give permission and need a <STRONG>role definition ID</STRONG>.</P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px"><STRONG>User ID:&nbsp;</STRONG>You can directly use User ID if you have or if you have a user name or login name then we have to find user id from the particular user so for that we will call REST API.</P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px"><STRONG>Role definition ID: </STRONG>You can use id based on permission.</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="50%" height="29px"><STRONG> Role Definition Name</STRONG></TD> <TD width="50%" height="29px"><STRONG> Role Definition Id</STRONG></TD> </TR> <TR> <TD width="50%" height="29px">Limited Access</TD> <TD width="50%" height="29px">1073741825</TD> </TR> <TR> <TD width="50%" height="29px">View Only</TD> <TD width="50%" height="29px">1073741924</TD> </TR> <TR> <TD width="50%" height="29px">Design</TD> <TD width="50%" height="29px">1073741828</TD> </TR> <TR> <TD width="50%" height="29px">Edit</TD> <TD width="50%" height="29px">1073741830</TD> </TR> <TR> <TD width="50%" height="29px">Contribute</TD> <TD width="50%" height="29px">1073741827</TD> </TR> <TR> <TD width="50%" height="29px">Read</TD> <TD width="50%" height="29px">1073741826</TD> </TR> <TR> <TD width="50%" height="29px">Full Control</TD> <TD width="50%" height="29px">1073741829</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px"><STRONG>1. Create a variable and set User Title or if you have any list column then you can use it.</STRONG></P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Step5.png" style="width: 596px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292222i5370370A4009A343/image-size/large?v=v2&amp;px=999" role="button" title="Step5.png" alt="Step5.png" /></span></P> <P class="lia-indent-padding-left-60px">&nbsp;</P> <P class="lia-indent-padding-left-30px"><STRONG>2. Call API to get a user ID and filter it by the above-declared user name.</STRONG></P> <P class="lia-indent-padding-left-60px">&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="step6.png" style="width: 602px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292226i598873A78C1E6EE4/image-size/large?v=v2&amp;px=999" role="button" title="step6.png" alt="step6.png" /></span></P> <P>&nbsp;</P> <P class="lia-indent-padding-left-60px">It will return an object as below,</P> <P class="lia-indent-padding-left-60px">&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="json">{ "d": { "results": [ { "__metadata": { "id": "https://sitename.sharepoint.com/_api/Web/GetUserById(2)", "uri": "https://sitename.sharepoint.com/_api/Web/GetUserById(2)", "type": "SP.User" }, "Id": 2, "Title": "Chandani Prajapati" } ] } }</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px">Now we want to use the only id from this so we will use an expression as below,</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <PRE class="lia-indent-padding-left-30px">outputs('Send_an_HTTP_request_to_SharePoint_-_Get_user_id')?['body']['d']['results']?[0]['Id']</PRE> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px">And we will set it in a variable called <STRONG>UserId</STRONG>.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="step7.png" style="width: 601px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292224iDC1FD79BBDC15EC3/image-size/large?v=v2&amp;px=999" role="button" title="step7.png" alt="step7.png" /></span></P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px">3. Now we will set <STRONG>contribute</STRONG> permission for the above UserId.</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="step8.png" style="width: 476px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292232iBB314DA08F4AEA46/image-size/large?v=v2&amp;px=999" role="button" title="step8.png" alt="step8.png" /></span></P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px">Now we can test the flow.</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P>&nbsp;</P> <H2>Output</H2> <P>&nbsp;</P> <P>We can see contribute permission for an item as below,</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="OP.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/292234i326F4E2B28377AAE/image-size/large?v=v2&amp;px=999" role="button" title="OP.png" alt="OP.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <H2 id="toc-hId-240025745">Summary</H2> <P>&nbsp;</P> <P>In this article, we have seen how to break and change list item permission using power automate.</P> <P>&nbsp;</P> <P>Hope this helps!</P> <P>&nbsp;</P> <P>Sharing is caring!</P> Tue, 29 Jun 2021 08:00:34 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-break-and-change-list-item-permission-using-power/ba-p/2493331 ChandaniPrajapati 2021-06-29T08:00:34Z Updates on the Microsoft 365 platform community calls https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/updates-on-the-microsoft-365-platform-community-calls/ba-p/2492702 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="community-call-updates.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/291909i41EA860045C98AB9/image-size/large?v=v2&amp;px=999" role="button" title="community-call-updates.png" alt="community-call-updates.png" /></span></P> <P>We have been hosting different set of Microsoft 365 community calls since 2015 where we share the latest news and do live demos on the different capabilities in Microsoft 365.</P> <P>&nbsp;</P> <P>We are excited to share more details on our updated community call structure focusing holistically on the Microsoft 365 developer platform. Based on a community survey from spring 2021, it was visible that a more holistic platform level messaging would be needed, rather than having isolated community calls based on individual products in Microsoft 365.&nbsp;When we are creating solutions and services for the Microsoft 365, we often combine numerous technologies across this platform stack, so this new model is targeted on covering more widely the awesomeness of Microsoft 365.</P> <P>&nbsp;</P> <P>We will also have some Northern Hemisphere summer cancellations.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="VesaJuvonen_1-1624888942819.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/291908i1362C5B17B568B64/image-size/large?v=v2&amp;px=999" role="button" title="VesaJuvonen_1-1624888942819.png" alt="VesaJuvonen_1-1624888942819.png" /></span></P> <P>&nbsp;</P> <H2>What's new? - New weekly Microsoft 365 Platform community call</H2> <P>This call is targeted for the Microsoft 365 engineering PMs and other Microsoft employees to update our community on the latest features and capabilities across the Microsoft 365. Call <STRONG>will start from 31st of August 2021</STRONG> and will happen each Tuesday at 8 AM PT. Like other community calls, this call is recorded and published from the Microsoft 365 Community YouTube channel.</P> <P>This call will replace monthly Microsoft Graph, Microsoft Teams and SharePoint community calls. It will also feature other Microsoft 365 features and capabilities.</P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_blank" rel="noopener">Download invite on the Microsoft 365 platform call</A> - Recurrent weekly call starts from Tuesday&nbsp; 31 of August</LI> <LI>Direct link to join the call is <A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-call-join</A></LI> </UL> <P>This call will typically have following generic agenda:</P> <UL> <LI>0-15 min - Latest news from Microsoft and group photo</LI> <LI>15-30 min - Microsoft 365 demo 1</LI> <LI>30-45 min - Microsoft 365 demo 2</LI> <LI>45-60 min - Microsoft 365 demo 3</LI> </UL> <P>We will answer on any questions throughout the call in the chat.</P> <H2>Summer schedule adjustments</H2> <P>Microsoft Graph, Microsoft Teams and SharePoint monthly community calls are on a break during summer and will discontinue after that as they will be replaced by the platform call.</P> <P>Other calls will continue normally through out the summery.</P> <H2>Microsoft 365 community calls - available for everyone to join</H2> <P>Here's a summary of existing Microsoft 365 calls and the structure for future. Join on the calls to hear about the latest features and to engage with the community. All community calls are recorded. Call summaries are published as blog post articles at <A href="#" target="_blank" rel="noopener">Microsoft 365 PnP Tech Community blog</A> and videos at <A href="#" target="_blank" rel="noopener">Microsoft 365 Community YouTube channel</A>.<BR /><BR /></P> <UL> <LI><A href="#" target="_blank" rel="noopener">Adaptive Cards</A> - 2nd Thursday each month at 9 AM PT - no summer break</LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft Identity Platform</A> - 3rd Thursday every month at 9 AM PT - no summer break</LI> <LI><A href="#" target="_blank" rel="noopener">Office add-ins</A> - Second Wednesday every month 8 AM PT - no summer break</LI> <LI><A href="#" target="_blank" rel="noopener">Power Apps</A> - Third Wednesday every month 8 AM PT - no summer break</LI> <LI><A href="#" target="_blank" rel="noopener">SharePoint Framework</A> - bi-weekly call on Thursday at 7 AM PT - no summer break</LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft 365 developer community</A> (with community demos) - bi-weekly call on Thursday at 7 AM PT - no summer break</LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft 365 developer platform call</A> - weekly on Tuesdays at 8 AM PT - starts from 31st of August<BR /><BR /></LI> </UL> <P>Discontinued calls, replaced with the weekly call on Tuesdays:</P> <UL> <LI>Microsoft Graph</LI> <LI>Microsoft Teams</LI> <LI>SharePoint</LI> </UL> <P>These invites will be routed to the new weekly call starting from 31st of August.</P> <P>&nbsp;</P> <P>You can download invites for the community calls from <A href="#" target="_blank" rel="noopener">https://aka.ms/m365pnp</A>.</P> <P>&nbsp;</P> Mon, 28 Jun 2021 14:05:39 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/updates-on-the-microsoft-365-platform-community-calls/ba-p/2492702 Vesa Juvonen 2021-06-28T14:05:39Z Learn Microsoft Graph Toolkit interactively with a code tour https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/learn-microsoft-graph-toolkit-interactively-with-a-code-tour/ba-p/2492612 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="mgt-code-tour-banner.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/291901i829961FDBD694E7D/image-size/large?v=v2&amp;px=999" role="button" title="mgt-code-tour-banner.png" alt="mgt-code-tour-banner.png" /></span></P> <P>&nbsp;</P> <P>Learn interactively how to turn your React app into a Microsoft 365 app with Microsoft Graph Toolkit.</P> <P>&nbsp;</P> <H2>The easiest way to connect your app to Microsoft 365</H2> <P>Using <A href="#" target="_blank" rel="noopener">Microsoft Graph Toolkit</A> is the easiest way to connect your app to Microsoft 365. Toolkit's components help you retrieve relevant data from Microsoft 365 and show it in your app in <A href="#" target="_blank" rel="noopener">any way you want</A>. And with toolkit's <A href="#" target="_blank" rel="noopener">authentication providers</A>, setting up auth is a matter of adding a few lines of code. Never again fiddle with setting up a login, handling access tokens, building web requests, and dealing with errors.</P> <P>&nbsp;</P> <H2>Learn Microsoft Graph Toolkit interactively</H2> <P>To help you learn what Microsoft Graph Toolkit has to offer and how you'd use it in your app, we recently released a new <A href="#" target="_blank" rel="noopener">learning path</A> on Microsoft Learn. By following a few learn modules you'll learn everything that you need to know to use the toolkit in your app. But that's not all.</P> <P>Thinking about the different ways in which people learn, we've launched an experiment - an <A href="#" target="_blank" rel="noopener">interactive code tour</A> that you can follow to add Microsoft Graph Toolkit to a React app.</P> <P><PICTURE> <SOURCE srcset="/assetshttps://techcommunity.microsoft.com/images/2021/06/mgt-code-tour.webp" type="image/webp"></SOURCE> <span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="mgt-code-tour.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/291902iBF1D8C8144DA31DF/image-size/large?v=v2&amp;px=999" role="button" title="mgt-code-tour.png" alt="mgt-code-tour.png" /></span></PICTURE></P> <P>&nbsp;</P> <P>By following the instructions in the tour, you gradually extend an empty React app with Microsoft Graph Toolkit turning it into a true Microsoft 365 app. What's cool about this code tour, is that it puts the code of your app in the center. Rather than reading long-form, you're in the code and get relevant, and in-place tips for building your app.</P> <P>&nbsp;</P> <P>The Microsoft Graph Toolkit React code tour is a great way to quickly experience how you'd use the toolkit in a React app. We'd love it if you gave it a try and told us what you think. Shall we consider building tours for other technologies and scenarios?</P> <P>&nbsp;</P> <P><A href="#" target="_blank" rel="noopener">Try the Microsoft Graph Toolkit React code tour</A></P> Mon, 28 Jun 2021 13:46:39 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/learn-microsoft-graph-toolkit-interactively-with-a-code-tour/ba-p/2492612 waldek 2021-06-28T13:46:39Z Microsoft Identity Platform community call – June 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-identity-platform-community-call-june-2021/ba-p/2463951 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="IDArchitecture.png" style="width: 995px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/289988iB9F2AABFCD168D23/image-size/large?v=v2&amp;px=999" role="button" title="IDArchitecture.png" alt="IDArchitecture.png" /></span></P> <P>&nbsp;</P> <P><STRONG>Call Summary:&nbsp;&nbsp;</STRONG></P> <P><SPAN>This month’s in-depth topic:&nbsp; </SPAN><STRONG>Increase the resilience of authentication and authorization applications you develop</STRONG><SPAN>.&nbsp;&nbsp; Tips for adding and increasing resiliency in apps that sign-in users and apps without users.&nbsp;&nbsp;Using a Microsoft Authentication Library and best practices to follow if you use a different library. &nbsp;Authorization with JWT and using Microsoft Continuous Access Evaluation (CAE).&nbsp; Demo and tips on evaluating/adopting CAE.&nbsp;&nbsp; Resilient methods for fetching metadata and validating tokens including use of customized token validation, as needed.&nbsp;&nbsp; </SPAN>This session was delivered by Microsoft Program Managers <A href="#" target="_self">Harish Suresh</A> | @harish_suresh and <A href="#" target="_self">Kyle Marsh</A> | @kylemar and was recorded on June 17, 2021.&nbsp; Live and in chat Q&amp;A throughout call</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/ZodU3olKuus" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><SPAN><STRONG>Resources:</STRONG></SPAN></P> <P>&nbsp;</P> <UL> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Increase resilience of authentication and authorization applications you develop</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">How to use Continuous Access Evaluation enabled APIs in your applications</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Building resilience into identity and access management with Azure Active Directory</A>&nbsp;</P> </LI> <LI> <P><SPAN>Organization – </SPAN><A href="#" target="_blank" rel="noopener">OpenID - Continuous Access Evaluation Protocol (CAEP)</A><SPAN>&nbsp;</SPAN></P> </LI> <LI> <P><SPAN>NuGet Gallery - <A href="#" target="_blank" rel="noopener">Microsoft.IdentityModel 7.0.0</A>&nbsp;</SPAN></P> </LI> <LI> <P><SPAN>Documentation - <A href="#" target="_blank" rel="noopener">Signing key rollover in the Microsoft identity platform</A>&nbsp;</SPAN></P> </LI> <LI> <P><SPAN>Documentation - <A href="#" target="_blank" rel="noopener">How to: Build services that are resilient to Azure AD's OpenID Connect metadata refresh</A>&nbsp;</SPAN></P> </LI> <LI> <P><SPAN>Documentation – </SPAN><A href="#" target="_blank" rel="noopener">Microsoft identity platform access tokens</A><SPAN>&nbsp;</SPAN></P> </LI> <LI> <P><SPAN>Documentation - <A href="#" target="_blank" rel="noopener">Microsoft identity platform access tokens - Validating tokens</A>&nbsp;</SPAN></P> </LI> <LI> <P>Sample - <A style="background-color: #ffffff;" href="#" target="_blank" rel="noopener">How to manually validate a JWT access token using the Microsoft identity platform (formerly Azure Active Directory for developers)</A>&nbsp;</P> </LI> <LI> <P><SPAN>Documentation - <A href="#" target="_blank" rel="noopener">Protected web API: Code configuration - Customizing token validation</A>&nbsp;</SPAN>&nbsp;</P> </LI> </UL> <P><SPAN><STRONG>&nbsp;</STRONG></SPAN></P> <P><SPAN><STRONG>Actions:&nbsp;&nbsp;</STRONG></SPAN></P> <UL> <LI> <P>Let us know how we’re doing and suggest topics for future calls, please complete this survey <A href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCallSurvey</A></P> </LI> <LI>Mark your calendar.&nbsp; The next Identity Platform Community Call is on July 15th</LI> </UL> <P><SPAN><STRONG>&nbsp;</STRONG></SPAN></P> <P><SPAN><STRONG>Stay connected:</STRONG></SPAN></P> <UL> <LI><SPAN>Twitter&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://twitter.com/microsoft365dev</A><SPAN>​ and&nbsp;</SPAN>@azuread</LI> <LI><SPAN>YouTube&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://aka.ms/M365DevYouTube</A><SPAN>​</SPAN></LI> <LI><SPAN>Blog</SPAN><SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community/blog</A></LI> <LI>Recurrent Invite&nbsp;<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/IDDevCommunityCalendar</A>&nbsp;</LI> </UL> Fri, 25 Jun 2021 12:14:49 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-identity-platform-community-call-june-2021/ba-p/2463951 ViewPorter 2021-06-25T12:14:49Z Microsoft 365 Developer Community Call recording – 24th of June, 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-community-call-recording-24th-of-june/ba-p/2481129 <P>Recording of the Microsoft 365 – General M365 development Special Interest Group (SIG) community call from June 24, 2021.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sig-recording-24th-june.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/291163iD7EF52DE513D25EB/image-size/large?v=v2&amp;px=999" role="button" title="sig-recording-24th-june.png" alt="sig-recording-24th-june.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Call Summary</STRONG></P> <P>Summer break and community call schedule updates reviewed. Preview the new <A href="#" target="_blank" rel="noopener">Microsoft 365 Extensibility look book gallery</A>.&nbsp; Looking to get started with Microsoft Teams development? &nbsp;Don’t miss out on our <A href="#" target="_blank" rel="noopener">Teams samples gallery</A> (updated sample browser in June), and the new Microsoft 365 tenant – <A href="#" target="_blank" rel="noopener">script samples gallery</A> - s<EM>cripts for PowerShell and CLIs.&nbsp; </EM>Sign up and attend one of a growing list of events hosted by <A href="#" target="_blank" rel="noopener">Sharing is Caring</A> this month.&nbsp; Announced <A href="#" target="_blank" rel="noopener">PnP Recognition Program</A>.&nbsp; Check out the new <A href="#" target="_blank" rel="noopener">PnP Teams Quickstart</A>.&nbsp; Latest updates on PnP projects covered off.&nbsp; Added Teams SSO Provider, sample and other components to Microsoft Graph Toolkit (MGT) v.2.2.0 GA.&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Open-source project status:&nbsp; (Bold indicates new this call)</STRONG></P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="33.333333333333336%"><STRONG>Project</STRONG></TD> <TD width="33.333333333333336%"><STRONG>Current Version</STRONG></TD> <TD width="33.333333333333336%"><STRONG>Release/Status</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%">PnP .NET Libraries - PnP Framework</TD> <TD width="33.333333333333336%">v1.5.0 GA</TD> <TD width="33.333333333333336%">Version 1.6.0 – Summer 2021</TD> </TR> <TR> <TD width="33.333333333333336%">PnP .NET Libraries - PnP Core SDK</TD> <TD width="33.333333333333336%">v1.2.0 GA</TD> <TD width="33.333333333333336%">Version 1.3.0 – Summer 2021</TD> </TR> <TR> <TD width="33.333333333333336%">PnP PowerShell</TD> <TD width="33.333333333333336%">v1.6.0 &nbsp;GA</TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - generator-teams</TD> <TD width="33.333333333333336%">v3.2.0 GA</TD> <TD width="33.333333333333336%"><STRONG>v3.3.0 Preview soon</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - yoteams-build-core</TD> <TD width="33.333333333333336%">v1.2.0 GA, v1.2.1 Preview</TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD>Yo teams – yoteams-deploy</TD> <TD>v1.1.0 GA</TD> <TD>&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - msteams-react-base-component</TD> <TD width="33.333333333333336%">v3.1.0</TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Microsoft Graph Toolkit (MGT)</TD> <TD width="33.333333333333336%">v2.2.0 GA</TD> <TD width="33.333333333333336%"><STRONG>Added Teams SSO Provider in Preview</STRONG></TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>Additionally, 1 new Teams samples were delivered in the last 2 weeks.&nbsp;&nbsp; Great work!&nbsp; The host of this call was David Warner II (Catapult Systems) | @DavidWarnerII. &nbsp;Q&amp;A takes place in chat throughout the call.</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/nm16Z3VEYHA" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><STRONG>Actions:&nbsp;&nbsp;</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>Register for Sharing is Caring Events</STRONG>:<BR /> <UL> <LI>First Time Contributor Session –&nbsp;<A href="#" target="_blank" rel="noopener">June 29<SUP>th</SUP></A> (EMEA, APAC &amp; US friendly times available)</LI> <LI>Community Docs Session –&nbsp;TBD</LI> <LI>PnP – SPFx Developer Workstation Setup – TBD &nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">June 24<SUP>th</SUP></A></LI> <LI>Ask Me Anything – Teams Dev – <A href="#" target="_blank" rel="noopener">July 13<SUP>th</SUP></A></LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">June 30<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – TBD</LI> <LI>Maturity Model Practitioners – 3<SUP>rd</SUP> Tuesday of month, 7:00am PT</LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> <LI>PnP Buddy System - <A href="#" target="_blank" rel="noopener">Request a Buddy</A></LI> </UL> </LI> <LI>Download the recurrent invite for this call –&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365-dev-sig</A></LI> <LI><SPAN>Call attention to your great work by using the&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">#PnPWeekly</A><SPAN>&nbsp;on Twitter.</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Microsoft Teams Development Samples:&nbsp;<SPAN>&nbsp;</SPAN></STRONG>(<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/TeamsSampleBrowser</A>)</P> <UL> <LI> <P><STRONG><A href="#" target="_blank" rel="noopener">Azure Communication Services (ACS) – Teams InterOp with Call Routing</A> - Sathya Raveendran (Microsoft), Saikrishna Neeli &amp; Arun Kumar Anaparthi </STRONG>(Zen3 Infosolutions)</P> </LI> </UL> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="210624-together-mode.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/291164i0C1B48C6A5D49F8C/image-size/large?v=v2&amp;px=999" role="button" title="210624-together-mode.gif" alt="210624-together-mode.gif" /></span></P> <P>&nbsp;</P> <P>Thank you for joining for today's PnP Community call.&nbsp; &nbsp;It's a full house!&nbsp; &nbsp;</P> <P>&nbsp;</P> <P><STRONG>Demos</STRONG><SPAN>&nbsp;</SPAN>delivered in this session</P> <UL> <LI> <P><STRONG>Getting started with PnP Teams QuickStart</STRONG> – create a Teams SSO tab in 15 minutes using browser-based Codespaces currently in preview.&nbsp; Follow presenter as he creates a new Teams tab, registers it in Azure AD, accesses Graph for presence courtesy of Microsoft/Teamsfx js library, deploys app in App Store, and deletes app when done.&nbsp; PnP Teams Quick Start is based on GitHub Codespaces = your virtual machine in the cloud.</P> </LI> <LI> <P><STRONG>Our learnings from the AppSource submission for Microsoft Teams</STRONG> – a first timer documents the journey - a 7-step process going from idea to app in AppSource. &nbsp;Solid tips beyond the process that every product team should consider ranging from extension opportunities and testing to devices and post publishing maintenance. &nbsp;Prepare to fail gracefully and learn openly as the journey includes working closely with a Microsoft submissions team that’s completely interested in your success. &nbsp;&nbsp;&nbsp;&nbsp;</P> </LI> <LI> <P><STRONG>Getting started with Microsoft Graph Tag API for managing Microsoft Teams tagging</STRONG> – this presentation focuses on people centric tags used in Teams to categorize, to @mention and to start a chat.&nbsp; &nbsp;Teams makes it nearly effortless to create, manage and use tags to connect people and groups. &nbsp;&nbsp;New Beta APIs, available week of June 28<SUP>th</SUP>, address many tag management challenges – permissions, membership updates, tapping data that exists outside immediate org.&nbsp; Glimpse at what’s next. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P> <P>&nbsp;</P> </LI> </UL> <P>Thank you for your work. Samples are often showcased in Demos.</P> <P>&nbsp;</P> <P><STRONG>Topics</STRONG><SPAN>&nbsp;</SPAN>covered in this call</P> <UL> <LI>PnP .NET library updates -&nbsp;<A href="#" target="_self" rel="nofollow noopener noreferrer">Bert Jansen</A><SPAN>&nbsp;</SPAN>(Microsoft) | @O365bert -<SPAN>&nbsp;<A href="#" target="_self">7:47</A></SPAN></LI> <LI>yo Teams updates -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">Wictor Wilén</A><SPAN>&nbsp;</SPAN>(Avanade) | @wictor<SPAN>&nbsp;</SPAN><SPAN>- <A href="#" target="_self">9:45</A></SPAN></LI> <LI>Microsoft Graph Toolkit updates -&nbsp;<SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">Beth Pan</A>&nbsp;(Microsoft) |&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/user/viewprofilepage/user-id/803637" target="_blank" rel="noopener">@beth_panx</A></SPAN><SPAN>&nbsp;</SPAN>-<SPAN>&nbsp;<A href="#" target="_self">10:34</A></SPAN></LI> <LI>Microsoft Teams Samples -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">Bob German</A><SPAN>&nbsp;</SPAN>(Microsoft) | @Bob1German<SPAN>&nbsp;</SPAN><SPAN>- <A href="#" target="_self">12:14</A></SPAN></LI> <LI> <P><STRONG>Demo:&nbsp; </STRONG>Getting started with PnP Teams QuickStart - <A href="#" target="_blank" rel="noopener">Wictor Wilén</A> (Microsoft) | @wictor - <A href="#" target="_self">14:40</A></P> </LI> <LI> <P><STRONG>Demo:&nbsp; </STRONG>Our learnings from the AppSource submission for Microsoft Teams - <A href="#" target="_blank" rel="noopener">Florian Grasel</A> (TagTeam) | <LI-USER uid="278114"></LI-USER> - <A href="#" target="_self">32:17</A></P> </LI> <LI> <P><STRONG>Demo:&nbsp; </STRONG>Getting started with Microsoft Graph Tag API for managing Microsoft Teams tagging - <A href="#" target="_blank" rel="noopener">Annie Colonna</A> (Microsoft) | @AnnieColonna - <A href="#" target="_self">49:42</A></P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>Additional resources around the covered topics and links from the slides.</P> <UL> <LI> <P>Codespaces preview – <A href="#" target="_blank" rel="noopener">https://github.com/codespaces</A>&nbsp;</P> </LI> <LI> <P>Github Repo - <A style="background-color: #ffffff;" href="#" target="_blank" rel="noopener">teams-quickstart</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Publish your app to the Microsoft Teams store</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Commercial marketplace certification policies</A>&nbsp;</P> </LI> <LI> <P>App – <A href="#" target="_blank" rel="noopener">TagTeam</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">teamworkTag resource type</A>&nbsp;</P> </LI> <LI>PnP Weekly – Episode 132 with Seattle-based Program Manager from OneDrive and SharePoint (ODSP) engineering -&nbsp;<A href="#" target="_blank" rel="noopener">Nicole Woon</A>&nbsp;(Microsoft) | @NovelNicole&nbsp;| <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-132-nicole-woon-microsoft/ba-p/2466409" target="_blank" rel="noopener">video</A> | <A href="#" target="_blank" rel="noopener">podcast</A></LI> <LI><SPAN>Microsoft 365 tenant –&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Script Samples Gallery</A><SPAN>&nbsp;| aka.ms/script-samples</SPAN></LI> <LI>PnP Teams Quickstart |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">aka.ms/pnp-teams-quickstart</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/m365/extensibility</LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Microsoft Teams Samples Gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/teams-samples</LI> </UL> <P>&nbsp;</P> <P><STRONG>General resources</STRONG>:</P> <UL> <LI>Microsoft Teams Toolkit v2.2 |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/teams-toolkit</A></LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp/ct-p/Microsoft365PnP" target="_blank" rel="noopener">Microsoft 365 PnP Community hub</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp/community&nbsp;</LI> <LI>Microsoft Graph Toolkit in Microsoft Learn |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/learn-mgt</A></LI> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint look book</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Yo Teams video training package</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">.NET Standard 2.0 version of SharePoint Online CSOM API</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 community (PnP) videos</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp-videos</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Teams Toolkit for Visual Studio Code</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">yo Teams</A><SPAN>&nbsp;</SPAN>| aka.ms/yoteams</LI> <LI>Video -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started using yo Teams</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Wictor Wilén</A><SPAN>&nbsp;</SPAN>(Avanade)| @wictor</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-sharepoint-blog/build-a-crisis-management-site-to-connect-people-and-information/ba-p/1216791?WT.mc_id=m365-24198-cxa" target="_blank" rel="noopener">Build a crisis management site to connect people and information</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Developer documentation</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spdev-docs</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Power Shell</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Modernization Partner Guidance</A><SPAN>&nbsp;</SPAN>- Feedback welcome</LI> <LI>Solution -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Building a modern search experiences with SharePoint Framework web parts</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Page transformation guidance</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Page transformation videos</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Modernization scanner</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 developer program site</A><SPAN>&nbsp;</SPAN>- Need to become a Tenant Admin to test look book capabilities? Get a Microsoft 365 E5 developer subscription (free tenant for 90 days)</LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">SharePoint Provisioning Service<SPAN>&nbsp;</SPAN></A>- Easily provision look book designs to any tenant in the world</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Provisioning templates on Github</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Provisioning Tenant Templates documentation</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Page Transformation webcast series</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Power Shell</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Modernization Tools</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Upcoming Calls | Recurrent Invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>SharePoint Framework call </STRONG><STRONG>– </STRONG>July 1<SUP>st</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG>Office add-in monthly call – </STRONG>July 14<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG>M365 General Dev call </STRONG><STRONG>– </STRONG>July 8<SUP>th</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>Adaptive Cards monthly call – </STRONG>July 8<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> <LI><STRONG>Microsoft Identity Platform </STRONG><STRONG>– </STRONG>July 15<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A></LI> <LI><STRONG>Power Apps monthly call </STRONG><STRONG>–</STRONG> July 21<SUP>st</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A></LI> </UL> <P>&nbsp;</P> <P>General Microsoft 365 Dev Special Interest Group bi-weekly calls are targeted at anyone who's interested in the general Microsoft 365 development topics. This includes Microsoft Teams, Bots, Microsoft Graph, CSOM, REST, site provisioning, PnP PowerShell, PnP Sites Core, Site Designs, Microsoft Flow, PowerApps, Column Formatting, list formatting, etc. topics. More details on the Microsoft 365 community from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/m365pnp</A>. We also welcome community demos, if you are interested in doing a live demo in these calls!</P> <P>&nbsp;</P> <P>You can download recurrent invite from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/m365-dev-sig</A>. Welcome and join in the discussion. If you have any questions, comments, or feedback, feel free to provide your input as comments to this post as well. More details on the Microsoft 365 community and options to get involved are available from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp</A>.</P> <P>&nbsp;</P> <P><EM>“Sharing is caring”</EM></P> <HR /> <P><EM>Microsoft 365 PnP team, Microsoft - 25th of June 2021</EM></P> Fri, 25 Jun 2021 10:16:12 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-community-call-recording-24th-of-june/ba-p/2481129 Vesa Juvonen 2021-06-25T10:16:12Z Which JavaScript framework can I use with SharePoint Framework https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/which-javascript-framework-can-i-use-with-sharepoint-framework/ba-p/2479482 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sample-sharepoint-portal.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290868i7C03DE4A5FB414F3/image-size/large?v=v2&amp;px=999" role="button" title="sample-sharepoint-portal.png" alt="sample-sharepoint-portal.png" /></span></P> <P>&nbsp;</P> <P>You want to build an app using SharePoint Framework and wonder which framework you should use? Here's my personal advice.</P> <P>&nbsp;</P> <H2>Extend conversations and portals on Microsoft 365</H2> <P>Using <A href="#" target="_blank" rel="noopener">SharePoint Framework</A> you can extend conversations and portals on Microsoft 365. With SharePoint Framework, you can build widgets, called <A href="#" target="_blank" rel="noopener">web parts</A>, which users can put on pages or open as tabs in Teams. You can also use SharePoint Framework to <A href="#" target="_blank" rel="noopener">add code to existing pages</A> or <A href="#" target="_blank" rel="noopener">change how data in lists is displayed</A>.</P> <P>&nbsp;</P> <P>If you have experience building web apps using JavaScript, you can build apps using SharePoint Framework. SharePoint Framework is based on open source tools that you already know, like npm, TypeScript, Yeoman, webpack, and gulp, and there is very little that you have to learn to build your first app.</P> <P>&nbsp;</P> <H2>Can I use [your-framework-here] with SharePoint Framework?</H2> <P>There are many JavaScript frameworks that you can use to build web apps. But can you use any one of them when building apps with SharePoint Framework?</P> <P>&nbsp;</P> <H3>Use any JavaScript framework</H3> <P>When building apps using SharePoint Framework, you can use any JavaScript framework. If you're comfortable working with Vue or Handlebars, or any other framework, you don't need to learn any other framework. You can be productive from the start and focus on building your app. That said, there is a caveat...</P> <P>&nbsp;</P> <P>While you can use any JavaScript framework when building apps with SharePoint Framework, you will have the best development experience when using React. Here is why.</P> <P>&nbsp;</P> <H3>Integrated dev experience</H3> <P>From the development experience point of view, React is integrated with SharePoint Framework. Using the SharePoint Framework Yeoman generator you can create a project that uses React. The necessary configuration, and build and packaging tasks are already configured and ready for you to use. In comparison, if you choose to use another framework, you will need to find a way to integrate its tooling, like the ng CLI, into SharePoint Framework so that you can work efficiently.</P> <P>&nbsp;</P> <H3>Seamless UX integration</H3> <P>Next to the SharePoint Framework, Microsoft offers <A href="#" target="_blank" rel="noopener">Fluent UI React</A>: a set of ready-to-use components that help you make your app look like Microsoft 365. Rather than spending time on building CSS and ensuring that your app looks as intended in the different browsers, you can save a ton of time and use Fluent UI components instead. But only if you use React. If you use a different framework, you will need to take care of presenting the data yourself.</P> <P>&nbsp;</P> <H3>First-load performance</H3> <P>Finally, from the performance point of view, React is already loaded on SharePoint pages. If you build your app on React, your app will load faster. That said, the difference of using React instead of any other framework will be visible only on the initial load. Because once users download your app, it will load from their cache the next time they use it, making the difference imperceptible.</P> <P>&nbsp;</P> <H2>The verdict</H2> <P>You can use any JavaScript framework to build apps using SharePoint Framework. SharePoint Framework allows you to benefit from your existing knowledge and use the tools that you already know to build apps for the 250 million people using Microsoft 365.</P> <P>&nbsp;</P> <P>If you're just starting with web development, I'd recommend you to learn React. It will give you the smoothest experience when building apps for Microsoft 365. There are many tools and samples built for React both by Microsoft and the community which you can use to learn and speed up building your apps.</P> Thu, 24 Jun 2021 06:55:23 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/which-javascript-framework-can-i-use-with-sharepoint-framework/ba-p/2479482 waldek 2021-06-24T06:55:23Z Microsoft 365 PnP Weekly - Episode 132 - Nicole Woon (Microsoft) https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-132-nicole-woon-microsoft/ba-p/2466409 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Thumb-Ep132.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290389i49D802D14B16E567/image-size/large?v=v2&amp;px=999" role="button" title="Thumb-Ep132.png" alt="Thumb-Ep132.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P data-unlink="true">In this installment of the weekly discussion revolving around the latest news and topics on&nbsp;<SPAN>Microsoft 365</SPAN>, hosts –&nbsp;<A href="#" target="_blank" rel="noopener">Vesa Juvonen</A>&nbsp;(Microsoft) | @vesajuvonen,&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A>&nbsp;(Microsoft) | @waldekm are joined by&nbsp;Seattle-based Program Manager from OneDrive and SharePoint (ODSP) engineering - <A href="#" target="_blank" rel="noopener">Nicole Woon</A> (Microsoft) | @NovelNicole&nbsp;.&nbsp;&nbsp; Topics discussed in this episode include:&nbsp; Nicole’s product - SharePoint site templates.&nbsp; The importance and Making products approachable to both the most advanced developer and to someone new to the product.&nbsp; Customer connection and delivering capabilities based on an understanding of human behavior and using “craft” for high-quality product development.&nbsp; &nbsp;A strategy for learning everything necessary to excel as a technical support engineer, being an accessibility champ and thriving as a woman in IT.&nbsp;&nbsp;</P> <P>&nbsp;</P> <P>Covering also 21 new articles from Microsoft and the Community from past week!&nbsp;&nbsp;</P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true">Please remember to keep on providing us feedback on how we can help on this journey. We always welcome feedback on making the community more inclusive and diverse.</P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true"><LI-VIDEO vid="https://youtu.be/Qtfvntmobs0" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true">This session was recorded on Monday, June 21, 2021, and it is the last episode until we return from summer holiday to kick off Season 4 - Episode 133, sometime around end of August.&nbsp; Thank you for watching and listening, we hope you have a happy and safe summer.&nbsp; Please note:&nbsp; There will be no break in our regularly delivered Thursday M365/SharePoint Community calls and calls from other organizations.&nbsp; &nbsp;</P> <P>&nbsp;</P> <UL> <LI>Video at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Community YouTube channel.</A></LI> <LI>Podcast format at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://pnpweekly.podbean.com.</A></LI> </UL> <P>&nbsp;</P> <P data-unlink="true">These videos and podcasts are published each week and are intended to be roughly 45 - 60 minutes in length.&nbsp; Please do give us feedback on this video and podcast series and also do let us know if you have done something cool/useful so that we can cover that in the next weekly summary! The easiest way to let us know is to share your work on Twitter and add the hashtag<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">#PnPWeekly</A>. We are always on the lookout for refreshingly new content. “<EM>Sharing is caring!”</EM>&nbsp;</P> <P>&nbsp;</P> <P>Here are all the links and people mentioned in this recording. Thanks, everyone for your contributions to the community!<BR /><BR /></P> <P>&nbsp;</P> <P><STRONG>Microsoft articles:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_blank" rel="noopener">New hybrid work innovations in Microsoft Teams Rooms, Fluid, and Microsoft Viva</A> - Microsoft</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-teams-blog/new-experiences-coming-to-microsoft-teams-rooms-to-allow/ba-p/2451553?WT.mc_id=m365-32540-wmastyka" target="_self">New experiences coming to Microsoft Teams Rooms to allow everyone to participate on equal footing</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">Assignments API for Microsoft Graph is now generally available</A> - Microsoft</LI> </UL> <P>&nbsp;</P> <P><STRONG>Community articles:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-viva-connections-with-john/ba-p/2459393?WT.mc_id=m365-32540-wmastyka" target="_blank" rel="noopener">Microsoft 365 Developer Podcast - Viva Connections with John Nguyen and Luca Bandinelli</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Paul Schaeflein</A> (AddIn365) |&nbsp;<LI-USER uid="113"></LI-USER></LI> <LI><A href="#" target="_blank" rel="noopener">SharePoint Site Templates – the latest features and experiences</A> - <A href="#" target="_blank" rel="noopener">Nicole Woon</A> (Microsoft) |&nbsp;@NovelNicole</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/explore-microsoft-365-extensibility-opportunities-with-the/ba-p/2462398?WT.mc_id=m365-32540-wmastyka" target="_blank" rel="noopener">Explore Microsoft 365 extensibility opportunities with the Microsoft 365 Extensibility look book</A>&nbsp;<SPAN>-&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A> (Microsoft) |&nbsp;@waldekm</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Microsoft Graph Toolkit React code tour</A> - Microsoft Graph&nbsp;</SPAN>Toolkit</LI> <LI><SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/save-an-email-attachment-to-a-custom-path-with-power-automate/ba-p/2465396?WT.mc_id=m365-32540-wmastyka" target="_blank" rel="noopener">Save an email attachment to a custom path with Power Automate</A> -&nbsp;<A href="#" target="_self">Damien Bird</A> (Aberdeen City Council) |&nbsp;<LI-USER uid="1035201"></LI-USER></SPAN></LI> <LI><SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-use-send-an-http-request-to-sharepoint-in-power-automate/ba-p/2439436?WT.mc_id=m365-32540-wmastyka" target="_blank" rel="noopener">How to use Send an HTTP request to SharePoint in Power Automate?</A>&nbsp;</SPAN>-<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Chandani Prajapati</A><SPAN>&nbsp;|&nbsp;@Chandani_SPD</SPAN></LI> <LI><SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/run-reports-on-your-tenant-using-the-cli-for-microsoft-and-azure/ba-p/2377851?WT.mc_id=m365-32540-wmastyka" target="_blank" rel="noopener">Run reports on your tenant using the CLI for Microsoft and Azure Container Instances</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Albert-Jan Schot</A> (Portiva) |&nbsp;@appieschot</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">SharePoint – Adding ‘Time to read’ to modern pages</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Alex Clark</A> (Microsoft) |&nbsp;@sharepointalex</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Creating a PWA for your Microsoft Teams app</A> - <A href="#" target="_blank" rel="noopener">Elio Struyf</A> (Struyf Consulting) |&nbsp;@eliostruyf</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Filtering SharePoint News Pages with Metadata</A> - <A href="#" target="_blank" rel="noopener">Marc D. Anderson</A> (Sympraxis Consulting) |&nbsp;@sympmarc</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Power Automate Flows – Random Tips, Tricks, and Pain Points</A> -&nbsp;Caroline Sosebee (ThreeWill)&nbsp;</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Working with Nintex REST API for Office 365</A> - <A href="#" target="_blank" rel="noopener">Alex Terentiev</A> (Sharepointalist) |&nbsp;@alexaterentiev</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Show files as cards using Microsoft Graph Toolkit and hTWOo</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A> (Microsoft) |&nbsp;@waldekm</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Query SharePoint items with Microsoft Graph and Search</A> - <A href="#" target="_blank" rel="noopener">Markus Möller</A> (Avanade) |&nbsp;@Moeller2_0</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">SharePoint Online/Microsoft Lists: @mention people in list comments</A> - <A href="#" target="_blank" rel="noopener">Ganesh Sanap</A> (Globant) |&nbsp;@GaneshSanap20</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Creating a Modern SharePoint Site using Power Automate</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Michel Mendes</A> (Storm Technology Ltd) |&nbsp;<LI-USER uid="65753"></LI-USER></SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Updates for Microsoft Teams connected team sites</A>&nbsp;-&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Daniel Glenn</A>&nbsp;(InfoWorks, Inc) | @DanielGlenn,&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Darrell Webster</A>&nbsp;(Modern Workplace Change) | @darrellaas</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Business processes vs. automated activities</A> -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Sarah Haase</A>&nbsp;| @sarahhaase,&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Antonio Maio</A>&nbsp;| @AntonioMaio2,&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Mike Maadarani</A>&nbsp;| @mikemaadarani and&nbsp;<A href="#" target="_blank" rel="noopener">Mike Fitzmaurice</A> (WEBCON) |&nbsp;@mikefitz</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Additional resources:</STRONG></P> <P>&nbsp;</P> <UL> <LI>Microsoft 365 Extensibility Look Book - <A href="#" target="_blank" rel="noopener">https://aka.ms/m365/extensibility</A>&nbsp;</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Sharing is Caring initiative</A><SPAN>&nbsp;</SPAN>- Getting started guidance and training for using GitHub and contributing to the community</LI> <LI>Want to ask a question or in general engage with the community - Add a note in the Microsoft 365 PnP Community hub at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community</A></LI> <LI>Check out all the great community calls, SDKs, and tooling for Microsoft 365 from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp</A></LI> </UL> <P>&nbsp;</P> <P>If you’d like to hear from a specific community member in an upcoming recording and/or have specific questions for Microsoft 365 engineering or visitors – please let us know. We will do our best to address your requests or questions.</P> <P>&nbsp;</P> <P><EM>"Sharing is caring!"</EM></P> Tue, 22 Jun 2021 06:30:46 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-132-nicole-woon-microsoft/ba-p/2466409 Vesa Juvonen 2021-06-22T06:30:46Z Microsoft 365 Developer Podcast - Microsoft Graph Connectors with Brian T. Jackett https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-microsoft-graph-connectors-with/ba-p/2466309 <P>Jeremy and Paul talk with Brian T. Jackett about the Graph Connectors API.</P> <P><IFRAME src="https://www.podbean.com/player-v2/?i=ms7mb-106d50d-pb&amp;from=pb6admin&amp;share=0&amp;download=0&amp;rtl=0&amp;fonts=Courier%20New&amp;skin=1&amp;btn-skin=6" width="100%" height="150" scrolling="no" style="border: none; min-width: min(100%, 430px);" title="Microsoft Graph Connectors with Brian T. Jackett" allowtransparency="true" data-name="pb-iframe-player"></IFRAME></P> <P>Listen to the show here:&nbsp;<A href="#" target="_self">Microsoft Graph Connectors with Brian T. Jackett (m365devpodcast.com)</A>&nbsp;</P> <H3>Links from the show:</H3> <UL> <LI><A href="#" target="_blank">Microsoft Graph Connector session fromb Build 2021</A></LI> <LI><A href="#" target="_blank">Microsoft Graph Connector documentation (Updated)</A></LI> <LI><A href="#" target="_blank">Microsoft Search Developer Private Preview</A></LI> <LI><A href="#" target="_blank">Postman Collection (combined with all-up Graph collection)</A></LI> </UL> <H3>Microsoft News</H3> <UL> <LI><A href="#" target="_blank">Homepage - Microsoft 365 Developer Blog</A></LI> <LI><A href="#" target="_blank">Universal Actions in Adaptive Cards on Microsoft Teams - Microsoft 365 Developer Blog</A></LI> <LI><A href="#" target="_blank">Microsoft Graph @ Build 2021</A></LI> <LI><A href="#" target="_blank">Microsoft Graph Mailbag – A deeper look into the Microsoft Graph PowerShell SDK</A></LI> <LI><A href="#" target="_blank">Protected APIs in Microsoft Teams</A></LI> </UL> <H3>Community Links</H3> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/sharepointdsc/new-release-new-resources-and-other-improvements-in/ba-p/2436520" target="_blank">New release: New resources and other improvements in SharePointDsc v4.7</A>&nbsp;&nbsp;<LI-USER uid="93178"></LI-USER>&nbsp;</LI> <LI><A href="#" target="_blank">Displaying the Connected Account for Microsoft Graph on the Terminal prompt</A>&nbsp;<LI-USER uid="113"></LI-USER>&nbsp;</LI> </UL> Mon, 21 Jun 2021 15:14:58 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-microsoft-graph-connectors-with/ba-p/2466309 paulschaeflein 2021-06-21T15:14:58Z Save an email attachment to a custom path with Power Automate https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/save-an-email-attachment-to-a-custom-path-with-power-automate/ba-p/2465396 <P>This use case was generated from an idea involving Xerox Docucentres, which enables end-users to email themselves a scanned document. Equally, this applies to regular emails with attachments that you would like Power Automate to automatically save the attachment(s) to a specific (<EM>custom/bespoke/unique</EM>) folder and/or SharePoint site and therefore Document Library.&nbsp; &nbsp;The dynamically chosen path is based on the Subject Line OR File Name. This can be achieved relatively easily and would save you a lot of routine administration time.</P> <P>&nbsp;</P> <P class="lia-align-center"><IFRAME src="https://www.youtube.com/embed/rO-jyVPSEVs" width="560" height="315" frameborder="0" allowfullscreen="" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"></IFRAME></P> <H2 class="has-text-align-center">&nbsp;</H2> <H2 class="has-text-align-center lia-align-center">The Solution</H2> <P>&nbsp;</P> <P>Using Power Automate,<SPAN>&nbsp;</SPAN><STRONG>When a new email arrives (v3)</STRONG><SPAN>&nbsp;</SPAN>trigger, we can be quite specific about the sender of the email and for this, I have assumed all emails will come from<SPAN>&nbsp;</SPAN>xerox@mydomain.com<SPAN>&nbsp;</SPAN>and the email must contain an attachment! Ideally, you want to limit the emails that this Flow will trigger by using the available parameters for that action.</P> <P>&nbsp;</P> <DIV class="wp-block-image"> <FIGURE class="aligncenter size-large"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DamoBird365_0-1624209543175.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290135i421399354E2C6D9B/image-size/large?v=v2&amp;px=999" role="button" title="DamoBird365_0-1624209543175.png" alt="DamoBird365_0-1624209543175.png" /></span> <P>&nbsp;</P> </FIGURE> </DIV> <P>To define the locations for saving files, I have used an<SPAN>&nbsp;</SPAN><STRONG>array</STRONG><SPAN>&nbsp;</SPAN>in a<SPAN>&nbsp;</SPAN><STRONG>compose action</STRONG><SPAN>&nbsp;</SPAN>(but don’t panic!). You might want to use a<SPAN>&nbsp;</SPAN><STRONG>SharePoint list</STRONG><SPAN>&nbsp;</SPAN>as somewhere to save the specific subject or file name keywords, alongside the folder or SharePoint site path. The advantage of using an array is that only the owner(s) of the flow can define these and all of the parameters are in one place. Creating a list in SharePoint might give you and/or other colleagues the ability to easily define and visualise the locations.</P> <P>&nbsp;</P> <DIV class="wp-block-image"> <FIGURE class="aligncenter size-large"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DamoBird365_1-1624209543161.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290134iCCC042CE4AF22D21/image-size/large?v=v2&amp;px=999" role="button" title="DamoBird365_1-1624209543161.png" alt="DamoBird365_1-1624209543161.png" /></span> <P>&nbsp;</P> </FIGURE> </DIV> <P>The parameters for this flow are basic, a keyword for searching the Subject or Filename containing, which I have called<SPAN>&nbsp;</SPAN><STRONG>Dept</STRONG>; and the<SPAN>&nbsp;</SPAN><STRONG>Path</STRONG>, which can either be a folder or a Site Name. If you are looking to have a dynamic Folder and Site, you can define a third parament or<SPAN>&nbsp;</SPAN><STRONG>key:value</STRONG><SPAN>&nbsp;</SPAN>pair.</P> <H2 class="has-text-align-center lia-align-center">&nbsp;</H2> <H2 class="has-text-align-center lia-align-center">Finding our path</H2> <P>&nbsp;</P> <P>We must now use the filter array action, which will allow us to search the Subject or Attachment name to see if it<SPAN>&nbsp;</SPAN><STRONG>contains</STRONG><SPAN>&nbsp;</SPAN>one of the keywords from the Dept key. If we get a match, the array will return a value for the Path. Here I use a compose action to return the first object from the array result. Why do I use the first expression? Because the result is returned as an array, it expects multiple elements.&nbsp; Calling the path without either using the first expression or<SPAN>&nbsp;</SPAN><STRONG>body(‘FilterFindPath’)?[0]?[‘Path’]</STRONG><SPAN>&nbsp;</SPAN>to select the first element, you will receive an error “<STRONG>Array elements can only be selected using an integer index</STRONG>“. Using First() or calling the element by using an integer will allow you to simplify your Flow if you know the result will always be the first element.</P> <P>&nbsp;</P> <DIV class="wp-block-image"> <FIGURE class="aligncenter size-large"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DamoBird365_2-1624209543294.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290136iA97F78869C381E68/image-size/large?v=v2&amp;px=999" role="button" title="DamoBird365_2-1624209543294.png" alt="DamoBird365_2-1624209543294.png" /></span> <P>&nbsp;</P> </FIGURE> </DIV> <H2 class="has-text-align-center">&nbsp;</H2> <H2 class="has-text-align-center lia-align-center">Saving the File(s) to a Custom Path</H2> <P>&nbsp;</P> <P>Using the<SPAN>&nbsp;</SPAN><STRONG>Create File<SPAN>&nbsp;</SPAN></STRONG>action for SharePoint, I am using the<SPAN>&nbsp;</SPAN><STRONG>Attachments Name</STRONG><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><STRONG>Attachments Content</STRONG><SPAN>&nbsp;</SPAN>dynamic expressions from the email trigger. By default, when you select these dynamic values, Power Automate will put your actions into an Apply to Each. Why? This is because the results for the attachment name and content are returned as an array. You can accept this and your solution will handle multiple attachments. For my solution, I am a stickler for efficiency and have used the first() expression described previously as my Xerox will only ever include one file. You can accept the default Power Automate build if you would prefer.</P> <P>&nbsp;</P> <P>I’ve two actions here, one to demonstrate how to save to a custom dynamic path, the other to a custom dynamic site. When manually supplying a custom path for the site or folder, you will have to select<SPAN>&nbsp;</SPAN><STRONG>Enter Custom Value</STRONG><SPAN>&nbsp;</SPAN>or Power Automate will try and resolve the address and error<SPAN>&nbsp;</SPAN><STRONG>‘Site Address’ is required</STRONG><SPAN>&nbsp;</SPAN>or the folder path with try and delete any additional text that you supply.</P> <P>&nbsp;</P> <DIV class="wp-block-image"> <FIGURE class="aligncenter size-large"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DamoBird365_3-1624209543448.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290138iE35F6C0E0E8EE234/image-size/large?v=v2&amp;px=999" role="button" title="DamoBird365_3-1624209543448.png" alt="DamoBird365_3-1624209543448.png" /></span> <P>&nbsp;</P> </FIGURE> </DIV> <P>The expressions I have used both using the integer selection for the first array element and the first expression are as follows:</P> <P><STRONG>File Name</STRONG>: triggerOutputs()?[‘body/attachments’]?[0]?[‘name’]<BR /><STRONG>File Content</STRONG>: first(triggerOutputs()?[‘body/attachments’])?[‘contentBytes’]</P> <P>To finish off my flow and this is personal preference, I have deleted the incoming email. Why keep it? The file attachment has been saved for me.</P> <P>&nbsp;</P> <DIV class="wp-block-image"> <FIGURE class="aligncenter size-large"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DamoBird365_4-1624209543193.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290139i38794C7778DB3DAB/image-size/large?v=v2&amp;px=999" role="button" title="DamoBird365_4-1624209543193.png" alt="DamoBird365_4-1624209543193.png" /></span> <P>&nbsp;</P> </FIGURE> </DIV> <H2 class="has-text-align-center">&nbsp;</H2> <H2 class="has-text-align-center lia-align-center">See it in Action</H2> <P>&nbsp;</P> <P>Here I have an incoming email from the Xerox mailbox. I've been sent me an attachment from the Xerox Mailbox. This will trigger my flow.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DamoBird365_8-1624210593508.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290142iFD47C1B1F751E498/image-size/large?v=v2&amp;px=999" role="button" title="DamoBird365_8-1624210593508.png" alt="DamoBird365_8-1624210593508.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>The filter action will look for each of the Dept values in the subject line and return a filtered array. In the example below, we output the ICT Path based on the subject line “This file is for ICT thanks”.</P> <P>&nbsp;</P> <DIV class="wp-block-image"> <FIGURE class="aligncenter size-large"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DamoBird365_6-1624209543237.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290140i8757D979900D3FCD/image-size/large?v=v2&amp;px=999" role="button" title="DamoBird365_6-1624209543237.png" alt="DamoBird365_6-1624209543237.png" /></span> <P>&nbsp;</P> </FIGURE> </DIV> <P>What do the two Create File Actions look like? Here you can see the custom dynamic paths for both the Folder Path or Site Address. I am obviously saving the file twice here in order to demonstrate the two options. You might want to combine the custom site and folder with an additional parameter in your Array or SharePoint List.</P> <P>&nbsp;</P> <DIV class="wp-block-image"> <FIGURE class="aligncenter size-large"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DamoBird365_7-1624209543373.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/290141i8FB522F93B3B1E9F/image-size/large?v=v2&amp;px=999" role="button" title="DamoBird365_7-1624209543373.png" alt="DamoBird365_7-1624209543373.png" /></span> <P>&nbsp;</P> </FIGURE> </DIV> <H2 class="has-text-align-center">&nbsp;</H2> <H2 class="has-text-align-center lia-align-center">Summary</H2> <P>&nbsp;</P> <P>Quickly file away those routine attached documents received via email. Maybe this would simplify uploading documents into SharePoint? Work on a file and email it to a shared mailbox and have the Flow decide where to file the attachment based on keywords? Please let me know how you could use this.</P> <P>&nbsp;</P> <P>Make sure you check out my <A href="#" target="_blank" rel="noopener">YouTube channel</A> for other ideas and proof of concepts.</P> Mon, 21 Jun 2021 06:11:46 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/save-an-email-attachment-to-a-custom-path-with-power-automate/ba-p/2465396 DamoBird365 2021-06-21T06:11:46Z Explore Microsoft 365 extensibility opportunities with the Microsoft 365 Extensibility look book https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/explore-microsoft-365-extensibility-opportunities-with-the/ba-p/2462398 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="thumbnail_image.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/289899i708F30A4AE863BBC/image-size/large?v=v2&amp;px=999" role="button" title="thumbnail_image.png" alt="Microsoft 365 Extensibility look book" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Microsoft 365 Extensibility look book</span></span></P> <P>&nbsp;</P> <P>Want to understand what types of apps you can build on Microsoft 365? Want to get inspired by the scenarios you could implement? Curious about the different extensibility points available for developers?</P> <P>&nbsp;</P> <P>Check out the new <STRONG>Microsoft 365 Extensibility look book</STRONG>: an interactive gallery that helps you understand how you can extend Microsoft 365 with custom apps. The look book has been announced at Ignite ‘21 and is publicly available at <A href="#" target="_blank" rel="noopener">https://aka.ms/m365/extensibility</A>.</P> <P>&nbsp;</P> <P>Microsoft 365 Extensibility look book explains the Microsoft 365 extensibility opportunity using three pivots: <STRONG>products</STRONG>, <STRONG>type of apps</STRONG> and <STRONG>scenarios</STRONG>. Using these pivots, you can learn what’s possible in a way that’s intuitive for your role.</P> <P>&nbsp;</P> <P>Microsoft 365 developers, familiar with Microsoft's technology, can jump to the specific Microsoft product and learn how to extend it. New developers can explore the opportunities by looking at the different types of apps. Business decision makers can look at the scenarios to start conversations in their organization and drive demand for building custom apps on Microsoft 365.</P> <P>&nbsp;</P> <P>Each page in the look book contains links to existing resources on Microsoft Docs, Learn, YouTube and GitHub to help you learn how to get started building these apps.</P> <P>&nbsp;</P> <P>We're excited to share the Microsoft 365 Extensibility look book with you and hope you'll find it helpful in your conversations with your colleagues and customers. And please, don't hesitate to let us know if you have suggestions how we could improve it.</P> Fri, 18 Jun 2021 11:28:17 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/explore-microsoft-365-extensibility-opportunities-with-the/ba-p/2462398 waldek 2021-06-18T11:28:17Z SharePoint Framework Community Call – 17th of June, 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-17th-of-june-2021/ba-p/2458095 <P>SharePoint Framework Special Interest Group (SIG) bi-weekly community call recording from June 17th is now available from the Microsoft 365 Community YouTube channel at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp-videos</A>. You can use SharePoint Framework for building solutions for<SPAN>&nbsp;</SPAN><STRONG>Microsoft Teams</STRONG><SPAN>&nbsp;</SPAN>and for<SPAN>&nbsp;</SPAN><STRONG>SharePoint</STRONG><SPAN>&nbsp;</SPAN>Online.</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/NyZP1oso8Mg" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><STRONG>Call summary:</STRONG></P> <P>&nbsp;</P> <P>Summer break and community call schedule updates reviewed.&nbsp; Register now for June trainings on <A href="#" target="_blank" rel="noopener">Sharing-is-caring</A>.&nbsp; You are invited to join the <A href="#" target="_blank" rel="noopener">Viva Connections private preview</A>!&nbsp; &nbsp;&nbsp;Update on SharePoint Framework v1.13.0 features – extensibility options with Viva Connections, Teams improvements, tooling updates, Store modernization and more. &nbsp;&nbsp;Released <STRONG>PnPjs for Client-side Libraries</STRONG> v2.6.0, <STRONG>CLI for Microsoft 365</STRONG> v3.11.0 Beta, and <STRONG>PnP Modern Search</STRONG> v4.2.3 &amp; v3.20.0. &nbsp;&nbsp;<A href="#" target="_blank" rel="noopener">Microsoft Teams Toolkit for Visual Studio &amp; Visual Studio Code</A> now available for preview. &nbsp;&nbsp;&nbsp;</P> <P>&nbsp;</P> <P>There were four <STRONG>PnP SPFx samples</STRONG> (2 extensions and 2 web parts) delivered in last 2 weeks.&nbsp; Great work!&nbsp;&nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Latest project updates include:&nbsp;</STRONG><SPAN>&nbsp;</SPAN>(<STRONG>Bold<SPAN>&nbsp;</SPAN></STRONG>indicates update from previous report 2 weeks ago)&nbsp;</P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="33.333333333333336%" height="30px"><STRONG>PnP Project</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>Current version</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>Release/Status</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">SharePoint Framework (SPFx)</TD> <TD width="33.333333333333336%" height="30px">v1.12.1&nbsp;</TD> <TD width="33.333333333333336%" height="30px">v1.13.0 Preview in summer</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">PnPjs Client-Side Libraries</TD> <TD width="33.333333333333336%" height="30px"><STRONG>v2.6.0</STRONG></TD> <TD width="33.333333333333336%" height="30px">v3.0.0 developments underway</TD> </TR> <TR> <TD width="33.333333333333336%" height="57px">CLI for Microsoft 365</TD> <TD width="33.333333333333336%" height="57px"><STRONG>v3.11.0 Beta </STRONG></TD> <TD width="33.333333333333336%" height="57px">v3.10.0 preview released</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">Reusable SPFx React Controls</TD> <TD width="33.333333333333336%" height="30px">v2.7.0 (SPFx v1.11), v3.1.0 (SPFx v1.12.1)</TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">Reusable SPFx React Property Controls</TD> <TD width="33.333333333333336%" height="30px">v2.6.0 (SPFx v1.11), v3.1.0 (SPFx v1.12.1)</TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">PnP SPFx Generator</TD> <TD width="33.333333333333336%">v1.16.0</TD> <TD width="33.333333333333336%">Angular 11 support</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">PnP Modern Search</TD> <TD width="33.333333333333336%" height="30px"><STRONG>v4.2.3 &amp; v3.20.0</STRONG></TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>The host of this call is <A href="#" target="_blank" rel="noopener">Vesa Juvonen</A> (Microsoft) @vesajuvonen.&nbsp; Q&amp;A takes place in chat throughout the call.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="210617-together-mode.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/289848iA261B0DBC2E78F24/image-size/large?v=v2&amp;px=999" role="button" title="210617-together-mode.gif" alt="210617-together-mode.gif" /></span></P> <P>&nbsp;</P> <P>The waving wall!&nbsp; Impressive.&nbsp; Great to see you.&nbsp; Truly looking forward to seeing you in Las Vegas, Düsseldorf or another conference venue in the future!</P> <P>&nbsp;</P> <P><STRONG>Actions:</STRONG></P> <UL> <LI>Join on the Viva Connections private preview! | <A href="#" target="_blank" rel="noopener">aka.ms/viva/connections/preview/register</A></LI> <LI>Feedback wanted:&nbsp; <A href="#" target="_blank" rel="noopener">Microsoft Teams Toolkit for Visual Studio &amp; Visual Studio Code</A> now available for preview.&nbsp; <UL> <LI>Tools - <A href="#" target="_blank" rel="noopener">https://aka.ms/teams-toolkit</A></LI> <LI>Support – StackOverflow - #TeamsToolkit</LI> <LI>Feedback – <A href="#" target="_blank" rel="noopener">https://github.com/Officeev/TeamsFx/Issues</A></LI> </UL> </LI> <LI>Register for Sharing is Caring Events: <UL> <LI>First Time Contributor Session –&nbsp;<A href="#" target="_blank" rel="noopener">June 29<SUP>th</SUP></A> (EMEA, APAC &amp; US friendly times available)</LI> <LI>Community Docs Session –&nbsp;<A href="#" target="_blank" rel="noopener">June 23<SUP>rd</SUP> </A>&nbsp;</LI> <LI>PnP – SPFx Developer Workstation Setup – July &nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">June 24<SUP>th</SUP></A></LI> <LI>Ask Me Anything – Teams Dev - July</LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">June 30<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – July</LI> <LI>Maturity Model Practitioners – July</LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> <LI>PnP Buddy System - <A href="#" target="_blank" rel="noopener">Request a Buddy</A></LI> </UL> </LI> <LI>Download the recurrent invite for this call –&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spdev-spfx-call</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Demos:</STRONG></P> <UL> <LI><STRONG>spfx-fast-serve: faster SharePoint Framework development</STRONG> – a spfx command line utility, that accelerates SPFx development by modifying your SPFx project to run a serve&nbsp;command immediately upon Save.&nbsp; &nbsp;Reduces SPFx build pipeline rebuild/reload time from &gt;7 to &lt;1 second by applying updates only changes rather than rebuilding entire project.&nbsp; &nbsp;Install CLI, spfx-fast-serve then apply fast-serve to your SPFx project.&nbsp; Presenter shows/explains project file modifications.&nbsp; &nbsp;Recently added hot model replacement (HMR) feature.&nbsp;</LI> <LI> <P><STRONG>Building team time zone assistant Teams solution with SPFx v1.13, including Viva Connections Card</STRONG> – a Team Time Clock app shown as Teams app, Personal app and Viva Dashboard Card (SPFx web part + Adaptive Card extension).&nbsp; On Card, see high level information (people and time) and deep link into Teams to schedule meeting experience.&nbsp; Based on when people prefer to meet (green times), select time by aligning green fields in time slot.&nbsp; Full code walkthrough, many features.&nbsp; &nbsp;&nbsp;</P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Topic:</STRONG></P> <UL> <LI> <P><STRONG>Microsoft Teams Toolkit for Visual Studio &amp; Visual Studio Code now available for preview</STRONG>.&nbsp; &nbsp;</P> <P>Did you know a feature in this latest version of the Teams Toolkit is the SPFx dev experience is truly integrated into this Toolkit?&nbsp; Of course, the build decision is largely a UX hosting decision.&nbsp; TypeScript devs, will prefer SPFx/M365 hosting while ISVs will gravitate to Azure for external hosting Please share feedback on your SPFx development experience in Teams Toolkit v2.0.&nbsp;</P> </LI> </UL> <P>&nbsp;</P> <DIV><STRONG>SPFx extension samples:&nbsp; (<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spfx-extensions</A>)&nbsp;</STRONG> <P>&nbsp;</P> </DIV> <UL> <LI><A href="#" target="_blank" rel="noopener"><STRONG>Copy PnP search results webpart settings</STRONG></A> - <A href="#" target="_blank" rel="noopener">Anoop Tatti</A>&nbsp;|&nbsp;@anooptells</LI> <LI><A href="#" target="_blank" rel="noopener"><STRONG>Follow Documents</STRONG></A> - <A href="#" target="_blank" rel="noopener">André Lage</A>&nbsp;|&nbsp;<LI-USER uid="861803"></LI-USER></LI> <LI style="list-style-type: none;">&nbsp;</LI> </UL> <P><STRONG>SPFx web part samples:&nbsp; (<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spfx-webparts</A>)&nbsp;</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG><A href="#" target="_blank" rel="noopener">Remote Event Receiver Manager</A></STRONG> - <A href="#" target="_blank" rel="noopener">Dan Toft</A>&nbsp;|&nbsp;@tanddant</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Carousel</A></STRONG> - <A href="#" target="_blank" rel="noopener">Giuliano De Luca</A>&nbsp;|&nbsp;<LI-USER uid="1038317"></LI-USER></LI> </UL> <P>Thank you for your great work.&nbsp; Samples are often showcased in Demos.&nbsp; &nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Agenda items:</STRONG></P> <UL> <LI>Latest updates on SharePoint Framework -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Vesa Juvonen</A><SPAN>&nbsp;</SPAN>(Microsoft) | @vesajuvonen –<SPAN>&nbsp;<A href="#" target="_self">6:36</A></SPAN></LI> <LI>PnPjs Client-Side Libraries -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noreferrer noopener">Julie Turner</A><SPAN>&nbsp;</SPAN>(Sympraxis Consulting) | @jfj1997 –<SPAN>&nbsp;<A href="#" target="_self">8:47</A></SPAN></LI> <LI>CLI for Microsoft 365 -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Vesa Juvonen</A><SPAN>&nbsp;</SPAN>(Microsoft) | @vesajuvonen&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">10:34</A></SPAN></LI> <LI>PnP SPFx Controls -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Vesa Juvonen</A><SPAN>&nbsp;</SPAN>(Microsoft) | @vesajuvonen&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">11:54</A></SPAN></LI> <LI>PnP Modern Search -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Vesa Juvonen</A><SPAN>&nbsp;</SPAN>(Microsoft) | @vesajuvonen&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">12:56</A></SPAN></LI> <LI><SPAN>P</SPAN>nP SPFx Samples -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Hugo Bernier</A><SPAN>&nbsp;</SPAN>(Tahoe Ninjas) | @bernierh&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">14:03</A></SPAN></LI> <LI><SPAN>Topic:&nbsp; Microsoft Teams Toolkit v2.0 -&nbsp;</SPAN><A style="background-color: #ffffff;" href="#" target="_blank" rel="noopener nofollow noreferrer">Vesa Juvonen</A>&nbsp;(Microsoft) | @vesajuvonen&nbsp;–&nbsp;<A href="#" target="_self">52:48</A><SPAN>&nbsp;</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Demos:</STRONG></P> <UL> <LI><STRONG>Demo:</STRONG>&nbsp; spfx-fast-serve: faster SharePoint Framework development – <A href="#" target="_blank" rel="noopener">Sergei Sergeev</A> (Mastaq) | @sergeev_srg - <A href="#" target="_self">17:42</A></LI> <LI><STRONG>Demo:</STRONG>&nbsp; Building team time zone assistant Teams solution with SPFx v1.13, including Viva Connections Card – <A href="#" target="_blank" rel="noopener">Julie Turner</A> (Sympraxis Consulting) | @jfj1997 &amp; <A href="#" target="_blank" rel="noopener">Derek Cash-Peterson</A> | @spdcp - <A href="#" target="_self">31:22</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>Additional resources around the covered topics and links from the slides.</P> <UL> <LI>Repo - <A href="#" target="_blank">SPFx Fast Serve Tool</A>&nbsp;</LI> <LI> <P>Article - <A href="#" target="_blank">hTWOo v0.3.0 released – Teams Splash Cards, Placeholder and demo</A>&nbsp;</P> </LI> <LI> <P>Tool - <A href="#" target="_blank">ABOUT HTWOO UI</A>&nbsp;</P> </LI> <LI>Tools - <A href="#" target="_blank">https://aka.ms/teams-toolkit</A></LI> <LI>Register -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Register for Viva Connections developer platform updates and private Beta</A>&nbsp;</LI> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A></LI> <LI>PnP Weekly – Episode 131 <A href="#" target="_blank">Vesa Juvonen&nbsp;</A>(Microsoft) | @vesajuvonen,&nbsp;<A href="#" target="_blank">Waldek Mastykarz</A>&nbsp;(Microsoft) | @waldekm&nbsp;were joined by Senior Program Manager&nbsp;- Zhenya Savchenko (Microsoft), from the Developer Division of Visual Studio group to talk about new&nbsp;<A href="#" target="_blank">Microsoft Teams Toolkit v2 extension for Visual Studio Code</A>. | <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-131/ba-p/2445655" target="_blank">video</A> | <A href="#" target="_blank">podcast</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>General Resources:</STRONG></P> <UL> <LI>Gallery -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>&nbsp;&nbsp;</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Build sessions guide</A><SPAN>&nbsp;</SPAN>(Modern Work Digital Brochure) - aka.ms/modernworkbuildsessions</LI> <LI>SharePoint Framework - v1.12.1 npm install –g<SPAN>&nbsp;</SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/user/viewprofilepage/user-id/41501" target="_blank" rel="noopener">@microsoft</A>/generator-sharepoint@next</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">CLI for Microsoft 365 v3</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">CodeTour</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Sharing is Caring</A><SPAN>&nbsp;</SPAN>| aka.ms/sharing-is-caring</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Tools -<SPAN>&nbsp;</SPAN></A><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnP Modern Search v4</A><A href="#" target="_blank" rel="noopener noreferrer">&nbsp; |<SPAN>&nbsp;</SPAN></A><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/pnp-search</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">M365 PnP site</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Starter Kit v2</A></LI> <LI>Blog: "<A href="#" target="_blank" rel="noopener noreferrer">A Lap Around Microsoft Graph Toolkit" blog series</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">New Microsoft 365 Patterns and Practices (PnP) team model with new community leads</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Community Content</A><SPAN>&nbsp;</SPAN>(non-Dev docs)</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx web part samples</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx extension samples</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">GitHub PnPjs</A></LI> <LI>Tutorials -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started with SharePoint Framework v1.10 Tutorials</A><SPAN>&nbsp;</SPAN>(12 videos)</LI> <LI>Tutorials -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started with SharePoint Framework v1.10 Extensions</A><SPAN>&nbsp;</SPAN>(6 videos)</LI> <LI>Docs -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Tutorials and training material for SharePoint Development</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFX Training Package</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Web Parts</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Extensions</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Library Components</A></LI> <LI>Documentation -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnPjs v2 documentation</A></LI> <LI>Link -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 developer training</A></LI> <LI>Link -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Office 365 Developer Program</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">Latest documentation on SharePoint Framework</A></LI> <LI>Found an issue with SharePoint Dev? - please let us know at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/spdev-issues</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Reusable web part property controls</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Reusable react controls for SharePoint Framework solutions</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">Reusable controls webcast</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener nofollow">Office 365 CLI</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx Yeoman Generator</A><SPAN>&nbsp;</SPAN>- Extends the out-of-the-box experience with open-source community capabilities</LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint Dev UserVoice</A><SPAN>&nbsp;</SPAN>- for new feature requests</LI> </UL> <P>&nbsp;</P> <P><STRONG>Other mentioned topics:</STRONG></P> <UL> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint dev documentation</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint dev issue list</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Upcoming calls | Recurrent invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>M365 General Dev call </STRONG>– June 24<SUP>th</SUP> at 7:00 am PDT | <A href="#" target="_blank">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>SharePoint Framework call </STRONG>– July 1<STRONG><SUP>st</SUP></STRONG>at 7:00 am PDT | <A href="#" target="_blank">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG>Office add-in monthly call – </STRONG>July 14<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG>Adaptive Cards monthly call – </STRONG>July 8<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank">https://aka.ms/adaptivecardscommunitycall</A></LI> <LI><STRONG>Microsoft Identity Platform –</STRONG> July 15<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank">https://aka.ms/IDDevCommunityCalendar</A></LI> <LI><STRONG style="font-family: inherit;">Power Apps monthly call –</STRONG> July<SPAN style="font-family: inherit;"> 21</SPAN><SUP style="font-family: inherit;">st</SUP><SPAN style="font-family: inherit;"> at 8:00 am PDT | </SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank">https://aka.ms/PowerAppsMonthlyCall</A></LI> </UL> <P>&nbsp;</P> <P>PnP SharePoint Framework Special Interest Group bi-weekly calls are targeted at anyone who is interested in the JavaScript-based development towards Microsoft Teams, SharePoint Online, and also on-premises. SIG calls are used for the following objectives.</P> <UL> <LI>SharePoint Framework engineering update from Microsoft</LI> <LI>Talk about PnP JavaScript Core libraries</LI> <LI>Office 365 CLI Updates</LI> <LI>SPFx reusable controls</LI> <LI>PnP SPFx Yeoman generator</LI> <LI>Share code samples and best practices</LI> <LI>Possible engineering asks for the field - input, feedback, and suggestions</LI> <LI>Cover any open questions on the client-side development</LI> <LI>Demonstrate SharePoint Framework in practice in Microsoft Teams or SharePoint context</LI> <LI>You can download a recurrent invite from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">https://aka.ms/spdev-spfx-call</A>. Welcome and join the discussion!</LI> </UL> <P><EM>“Sharing is caring”</EM></P> <HR /> <P><EM>Microsoft 365 PnP team, Microsoft - 18th of June 2021</EM></P> Fri, 18 Jun 2021 07:58:27 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-17th-of-june-2021/ba-p/2458095 Vesa Juvonen 2021-06-18T07:58:27Z Microsoft 365 Developer Podcast - Viva Connections with John Nguyen and Luca Bandinelli https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-viva-connections-with-john/ba-p/2459393 <P>Paul talks with John Nguyen and Luca Bandinelli about the developer story for Viva Connections.</P> <P><IFRAME src="https://www.podbean.com/player-v2/?i=ghb9s-10549d6-pb&amp;from=pb6admin&amp;share=0&amp;download=0&amp;rtl=0&amp;fonts=Courier%20New&amp;skin=1&amp;btn-skin=6" width="100%" height="150" scrolling="no" style="border: none; min-width: min(100%, 430px);" title="Viva Connections with John Nguyen and Luca Bandinelli" allowtransparency="true" data-name="pb-iframe-player"></IFRAME></P> <P>Listen to the show here:&nbsp;<A href="#" target="_self">Viva Connections with John Nguyen and Luca Bandinelli (m365devpodcast.com)</A>&nbsp;</P> <H3>Links from the show:</H3> <UL> <LI><A href="#" target="_blank" rel="noopener">https://aka.ms/viva/connections/preview/register</A></LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-viva-blog/microsoft-viva-connections-helps-everyone-to-stay-engaged-and/ba-p/2107009" target="_blank" rel="noopener">Microsoft Viva Connections helps everyone to stay engaged and informed</A></LI> </UL> <H3>Microsoft News</H3> <UL> <LI><A href="#" target="_blank" rel="noopener">SharePoint Framework v1.12.1 release notes</A></LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft Graph community call – May 2021</A></LI> <LI><A href="#" target="_blank" rel="noopener">Understanding the Office Add-ins runtime</A></LI> </UL> <H3>Community Links</H3> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-determine-web-part-size-with-spfx-v1-12/ba-p/2230898" target="_blank" rel="noopener">How to determine web part size with SPFx v1.12 (@yhabersaat)</A></LI> <LI><A href="#" target="_blank" rel="noopener">spfx-fast-serve 2.0: new architecture, better extensibility, support of the latest SPFx</A></LI> <LI><A href="#" target="_blank" rel="noopener">Building a supply chain attack with .NET, NuGet, DNS, source generators, and more!</A></LI> <LI><A href="#" target="_blank" rel="noopener">React Groups and Teams – Graphgod</A></LI> </UL> Thu, 17 Jun 2021 16:53:39 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-viva-connections-with-john/ba-p/2459393 paulschaeflein 2021-06-17T16:53:39Z Power Apps Community Call – June 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/power-apps-community-call-june-2021/ba-p/2369715 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SEssionTHumb.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/289440iDC962F8F964037AC/image-size/large?v=v2&amp;px=999" role="button" title="SEssionTHumb.png" alt="SEssionTHumb.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN><STRONG>Call Summary:</STRONG></SPAN></P> <P>Topics covered in this month’s community call include 3 demos - COE in Dataverse for Teams in the Power Platform, Planner Gantt chart in Power Apps, and Create a digital escape room with Power Apps.&nbsp; Also, Recent Power Apps News and Community Contributions and Latest on <A href="#" target="_blank" rel="noopener">PnP Power Platform Samples Contributions</A>.&nbsp;&nbsp; <STRONG>Demo Extravaganza&nbsp;2021</STRONG>.&nbsp; Entries accepted now, Finalist voting starts – June 1<SUP>st</SUP>, Finalist voting ends – June 30<SUP>th</SUP>, Finals / Winner(s) to be Announced – July 21, 2021 at 08:00 PT.&nbsp;&nbsp; This session included Q&amp;A in chat.&nbsp; The call was<SPAN> hosted by </SPAN>Todd Baginski (Canviz)<SPAN>.&nbsp; Demo presenters are </SPAN>Krishna Vandanapu, Terho Antila and May Alhajri. &nbsp;This call was rec<SPAN>orded </SPAN>on June 16, 2021<SPAN>.&nbsp; Thank for attending the call or viewing it on demand.&nbsp; </SPAN></P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/WVQ882sHoVc" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN><STRONG>Demos:&nbsp;</STRONG></SPAN></P> <UL> <LI> <P><STRONG>COE in Dataverse for Teams in the Power Platform - </STRONG><SPAN>tips on configuring and using the Center of Excellence (CoE) Management/Governance tool that runs on top of Dataverse for Teams and is used for maintaining and supporting the Power Platform. &nbsp;&nbsp;Hear about and see the 5 major components in CoE Dataverse for Teams followed by the presenter’s favorite apps &amp; flows and the advantages and limitations of the tool</SPAN><SPAN>.&nbsp; </SPAN></P> </LI> <LI> <P><STRONG>Planner Gantt chart in Power Apps - </STRONG>a Power Apps canvas app that builds a Gantt chart out of the tasks stored in Microsoft Planner.&nbsp; &nbsp;Use in Microsoft 365 environment with Planner connectors and no premium licensing required.&nbsp; &nbsp;Hear about lessons learned in development and capabilities yet to implement. &nbsp;UI display’s all Planner Plans available to it, multiple plans may be viewed on Gantt chart at one time.&nbsp;</P> </LI> <LI> <P><STRONG>Create a digital escape room with Power Apps</STRONG><SPAN> – the user experience: &nbsp;Participants need to solve problems cast about the digital room to get out of the room – open the door. &nbsp;&nbsp;Presenter defines process for app design - create story, clues, images (build the room), locks, and then build app. &nbsp;Experience the app then go behind scenes to step through components used (button, label, pop up message, collections) for the app.</SPAN><SPAN>&nbsp;&nbsp;&nbsp; </SPAN></P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Recent News &amp; Cool Stuff:</STRONG></P> <UL> <LI> <P>Power Apps Demo Extravaganza 2021- <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsDemoExtravaganza</A></P> <P><A href="#" target="_blank" rel="noopener">Power Apps for Kids</A> - <A href="#" target="_blank" rel="noopener">www.powerapps4kids.com</A></P> <P>Components and Power Apps Component Controls is GA!! - <A href="#" target="_blank" rel="noopener">https://aka.ms/PCFGA</A>&nbsp;</P> <P>Houston User Group&nbsp;- <EM>User Groups and Custom Connectors 6/16/2021 4PM -</EM><A href="#" target="_blank" rel="noopener">https://aka.ms/HoustonPPUG</A>&nbsp;</P> </LI> </UL> <P><SPAN><STRONG>&nbsp;</STRONG></SPAN></P> <P><SPAN><STRONG>Actions:&nbsp;</STRONG></SPAN></P> <UL> <LI><A href="#" target="_self">View and Vote on Demo Extravaganza entries</A>&nbsp;</LI> <LI>Last chance to submit entries for Demo Extravaganza 2021 | <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsDemoExtravaganza</A></LI> <LI>Join us for our next call: July 21, 2021 at 08:00am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/powerappscommunitycall</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Call Agenda:</STRONG></P> <UL> <LI>COE in Dataverse for Teams in the Power Platform - <A href="#" target="_self">Krishna Vandanapu</A> | @KrishnaShp -&nbsp;<A href="#" target="_self">3:50</A></LI> <LI>Planner Gantt chart in Power Apps - <A href="#" target="_self">Terho Antila</A> | @terhoantila -&nbsp;<A href="#" target="_self">26:05</A></LI> <LI>Create a digital escape room with Power Apps - <A href="#" target="_self">May Alhajri</A> | <LI-USER uid="670696"></LI-USER> - <A href="#" target="_self">42:48</A></LI> <LI>Recent Power Apps News and Community Contributions – <A href="#" target="_self">Charles Sterling</A> (Microsoft) | @chass -&nbsp;<A href="#" target="_self">63:49</A></LI> <LI>Latest PnP Power Apps Samples – <A href="#" target="_self">April Dunnam</A> (Microsoft) | @aprildunnam -&nbsp;<A href="#" target="_self">65:02</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Referenced in this session:</STRONG></P> <UL> <LI> <P>Repo -&nbsp; <A href="#" target="_blank" rel="noopener">Microsoft Power Platform Center of Excellence (CoE) Starter Kit</A>&nbsp;&nbsp;</P> </LI> <LI> <P>Video - <A href="#" target="_blank" rel="noopener">CoE Starter kit for the Power Platform in Dataverse for Teams environment</A>&nbsp;</P> </LI> <LI> <P><SPAN>Blog Post - </SPAN><A href="#" target="_blank" rel="noopener">Microsoft Planner Gantt Chart with Power Apps – download your own!</A><SPAN>&nbsp;&nbsp;</SPAN></P> </LI> <LI> <P><SPAN>Repo - </SPAN><A href="#" target="_blank" rel="noopener">Planner Gantt Chart introduction</A></P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Learn more:</STRONG>&nbsp;&nbsp;</P> <UL> <LI>See the full blog post for this call on the Tech Community Blog -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community/blog</A></LI> <LI>Microsoft’s<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Power Platform website</A></LI> <LI>Power Apps Responsive Design -&nbsp;<SPAN>https://</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">bit.ly/responsivepowerapps</A>&nbsp;</LI> <LI>Power Apps Training Resources -&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/PowerAppsTraining</A></LI> <LI>Power Apps Community -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">https://Community.PowerApps.com</A></LI> <LI><SPAN>Power Apps Community Samples -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/PowerAppsCommunitySamples</A></LI> <LI><SPAN>Power Apps Community Videos -</SPAN><A href="#" target="_blank" rel="noopener noreferrer">&nbsp;https://aka.ms/PowerAppsCommunityVideos</A></LI> <LI>Power Addicts Hangout -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">https://wearepoweraddicts.com</A></LI> <LI>#LessCodeMorePower Video Series -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://www.youtube.com/playlist?list=PL8IYfXypsj2Cr4DUqMKYkGM-Wejfim2QX</A></LI> <LI>Share more - draw attention to your great work -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">#PowerAppsCC</A></LI> </UL> <P><SPAN><STRONG>&nbsp;</STRONG></SPAN></P> <P><SPAN><STRONG>Stay connected:&nbsp;</STRONG></SPAN></P> <UL> <LI><SPAN>Twitter:&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">https://twitter.com/MSPowerPlat</A></SPAN></LI> <LI><SPAN>Twitter -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://twitter.com/microsoft365dev</A><SPAN>​</SPAN></LI> <LI><SPAN>YouTube -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://aka.ms/M365DevYouTube</A><SPAN>​</SPAN></LI> <LI><SPAN>Blogs -&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community/blog</A></SPAN></LI> <LI><SPAN>Recurrent Invite -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/powerappscommunitycall</A></LI> </UL> Thu, 17 Jun 2021 16:43:14 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/power-apps-community-call-june-2021/ba-p/2369715 Todd Baginski 2021-06-17T16:43:14Z Microsoft Teams Community Call - June 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-teams-community-call-june-2021/ba-p/2449603 <P><SPAN>Recording of the Microsoft Teams monthly community call from June 15, 2021.</SPAN></P> <P>&nbsp;</P> <P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="teams-june-15th-recording.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/289020i1C778A9BEA45A493/image-size/large?v=v2&amp;px=999" role="button" title="teams-june-15th-recording.png" alt="teams-june-15th-recording.png" /></span></SPAN></P> <P>&nbsp;</P> <P><STRONG>Call Summary</STRONG></P> <P>Latest news from Microsoft engineering on Microsoft Teams updates and community assets.&nbsp; &nbsp;&nbsp;&nbsp;</P> <P>&nbsp;</P> <P>It’s time for summer break and for upcoming changes to community call cadence.&nbsp; Sign up for June trainings on <A href="#" target="_blank" rel="noopener">Sharing-is-caring</A>.&nbsp; &nbsp;See the new <A href="#" target="_blank" rel="noopener">Microsoft 365 Extensibility look book gallery</A> co-developed by Microsoft Teams and Sharepoint engineering.&nbsp;&nbsp; Visit the <A href="#" target="_blank" rel="noopener">Microsoft Teams samples gallery</A> to get started with Microsoft Teams development.&nbsp; Build your Teams apps fast with yo teams – go to <A href="#" target="_blank" rel="noopener">PnP Teams Quickstart</A>.&nbsp; Build 2021 – latest news on the Microsoft Teams platform and integrations including: &nbsp;<A href="#" target="_blank" rel="noopener">Shared stage</A>, <A href="#" target="_blank" rel="noopener">Together Mode</A>, <A href="#" target="_blank" rel="noopener">Fluid components</A>, <A href="#" target="_blank" rel="noopener">Adaptive Cards</A>, <A href="#" target="_blank" rel="noopener">Microsoft Teams Toolkit</A> and <A href="#" target="_blank" rel="noopener">Developer Portal</A>.&nbsp;&nbsp; The host of this call was <A href="#" target="_self">Vesa Juvonen</A> (Microsoft) | @vesajuvonen. &nbsp;Q&amp;A takes place in chat throughout the call</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/wwTExv2Ha4g" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><STRONG>Actions:&nbsp;&nbsp;</STRONG></P> <P>&nbsp;</P> <UL> <LI>Register for Sharing is Caring Events: <UL> <LI><SPAN style="font-family: inherit;">First Time Contributor Session –&nbsp;</SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">June 29<SUP>th</SUP></A><SPAN style="font-family: inherit;"> (EMEA, APAC &amp; US friendly times available)</SPAN></LI> <LI>Community Docs Session –&nbsp;<A style="background-color: #ffffff;" href="#" target="_blank" rel="noopener">June 23<SUP>rd</SUP></A></LI> <LI>PnP – SPFx Developer Workstation Setup – <A href="#" target="_blank" rel="noopener">June 17<SUP>th</SUP></A> &nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">June 24<SUP>th</SUP></A></LI> <LI>Ask Me Anything – Teams Dev – <A href="#" target="_blank" rel="noopener">July 13<SUP>th</SUP></A></LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">June 30<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – <A href="#" target="_blank" rel="noopener">June 16<SUP>th</SUP></A></LI> <LI>Maturity Model Practitioners – July</LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> <LI>PnP Buddy System - <A href="#" target="_blank" rel="noopener">Request a Buddy</A></LI> </UL> </LI> <LI><SPAN>Call attention to your great work by using the&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">#PnPWeekly</A><SPAN>&nbsp;on Twitter.</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Microsoft Teams Development Samples:&nbsp;<SPAN>&nbsp;</SPAN></STRONG>(<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/teams-samples</A>)</P> <UL> <LI> <P>Your community is looking for Samples!&nbsp; Please share your good work&nbsp;&nbsp;</P> </LI> </UL> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="210615-together-mode.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/289021iCAED4BF6894A01DC/image-size/large?v=v2&amp;px=999" role="button" title="210615-together-mode.gif" alt="210615-together-mode.gif" /></span></P> <P>&nbsp;</P> <P><STRONG>Always a highlight to see you here.&nbsp; &nbsp;Looking forward to seeing you in person at an event one day.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</STRONG></P> <P>&nbsp;</P> <P><STRONG>Demos</STRONG><SPAN>&nbsp;</SPAN>delivered in this session</P> <UL> <LI> <P><STRONG>Kudos App sample using Teams Activity Feed API in Microsoft Graph</STRONG> – showcases how to build a solution leveraging the Teams Activity Feed API for sending notifications to selected users.&nbsp; See how activities (notifications) are gated in the manifest.&nbsp; Create a Kudos app (100 lines code) with appropriate Graph services permissions, layout UI using Fluent UI components, add out-of-box controls from Microsoft Graph Toolkit.&nbsp; Activity feed is now a fully supported workload. &nbsp;&nbsp;&nbsp;</P> </LI> <LI> <P><STRONG>Building a digital asset / document repository management app for Microsoft Teams </STRONG>– Document manager – an asset management system sample app that makes use of Teams platform capabilities to simplify searching, retrieving, sharing, contributing, and governing assets.&nbsp; Uses messaging extensions to find documents, task module to upload documents, Graph APIs, and creates awareness of / gains approvals on assets leveraging user specific views in Adaptive Cards.&nbsp; Stores documents awaiting approval in staging folder in library.&nbsp;</P> </LI> <LI> <P><STRONG>Introduction to Microsoft Teams Toolkit v2</STRONG> – helps developers create and deploy Teams apps with integrated Identity, access to cloud storage, data from&nbsp;<A href="#" target="_blank" rel="noopener">Microsoft Graph</A>, and other services in&nbsp;<A href="#" target="_blank" rel="noopener">Azure</A>&nbsp;and&nbsp;<A href="#" target="_blank" rel="noopener">M365</A>&nbsp;with a “zero-configuration” approach (single-line statements and no side trips to Azure and ADD) to the developer experience. &nbsp;Efficiently configures front-end, back-end, bot at same time.&nbsp; &nbsp;Simplifies creating proof-of-concepts!&nbsp; &nbsp;&nbsp;Get the toolkit through the Extensions Marketplace in VS Code.&nbsp;</P> <P>&nbsp;</P> </LI> </UL> <P>Thank you for your work. Samples are often showcased in Demos.</P> <P>&nbsp;</P> <P><STRONG>Topics</STRONG><SPAN>&nbsp;</SPAN>covered in this call</P> <UL> <LI>News and updates -<SPAN>&nbsp;<A href="#" target="_self" rel="nofollow noopener noreferrer">Vesa Juvonen</A></SPAN><SPAN>&nbsp;</SPAN>(Microsoft) | @vesajuvonen -<SPAN>&nbsp;<A href="#" target="_self">3:11</A></SPAN></LI> <LI><SPAN>Build 2021 Recap on Microsoft Teams platform announcements - <A href="#" target="_self">9:15</A></SPAN></LI> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Kudos App sample using Teams Activity Feed API in Microsoft Graph – <A href="#" target="_blank" rel="noopener">Sébastien Levert</A> (Microsoft) | <LI-USER uid="926766"></LI-USER> - <A href="#" target="_self">15:39</A></P> </LI> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Building a digital asset / document repository management app for Microsoft Teams – Sathya Raveendran (Microsoft) &amp; Arun Kumar Anaparthi (Zen3 Infosolutions) - <A href="#" target="_self">30:38</A></P> </LI> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Introduction to Microsoft Teams Toolkit v2 – Zhenya Savchenko (Microsoft) - <A href="#" target="_self">45:27</A></P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>Additional resources around the covered topics and links from the slides.</P> <UL> <LI> <P>Blog – <A href="#" target="_blank" rel="noopener">Microsoft Graph Mailbag</A></P> </LI> <LI> <P>Dev Tool - <A href="#" target="_blank" rel="noopener">Microsoft Graph Toolkit</A>&nbsp;</P> </LI> <LI> <P>Library - <A href="#" target="_blank" rel="noopener">Microsoft Graph JavaScript Client Library</A>&nbsp;</P> </LI> <LI> <P>Sample - <A href="#" target="_blank" rel="noopener">Kudos App (Teams Activity Feed API)</A>&nbsp;</P> </LI> <LI> <P>Blog - <A href="#" target="_blank" rel="noopener">Microsoft Graph Mailbag – Create engaging apps with the Microsoft Teams Activity Feed API</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Messaging extensions – Search Commands</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">User Specific Views</A>&nbsp;</P> </LI> <LI> <P>Repo - <A href="#" target="_blank" rel="noopener">Document Manager</A>&nbsp;</P> </LI> <LI> <P>Dev Tools - <A href="#" target="_blank" rel="noopener">Microsoft Teams Toolkit for Visual Studio Code</A>&nbsp;</P> </LI> <LI>PnP Weekly – Episode 131 with guest Senior Program Manager Zhenya Savchenko (Microsoft) from the Developer Division of Visual Studio group.&nbsp; He one of the PMs coordinating new&nbsp;<A href="#" target="_blank" rel="noopener">Microsoft Teams Toolkit v2 extension for Visual Studio Code</A>.&nbsp; | <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-131/ba-p/2445655" target="_blank" rel="noopener">video</A> | <A href="#" target="_blank" rel="noopener">podcast</A></LI> <LI>GitHub Codespace - <A href="#" target="_blank" rel="noopener">PnP Teams Quickstart</A> | aka.ms/pnp-teams-quickstart</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/m365/extensibility</LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Microsoft Teams Samples Gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/teams-samples</LI> </UL> <P>&nbsp;</P> <P><STRONG>General resources</STRONG>:</P> <UL> <LI>Controls - &nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-teams-community-call-may-2021/ba-p/Designing%20your%20Microsoft%20Teams%20app" target="_blank" rel="noopener nofollow noreferrer">Designing your Microsoft Teams app</A><SPAN>&nbsp;</SPAN>|&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/teams/ui/design</A></LI> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A></LI> <LI>Microsoft Learn -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="noopener noreferrer">Microsoft Teams development Learning Paths</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Teams Toolkit for Visual Studio Code</A></LI> <LI><A href="#" target="_self" rel="noopener noreferrer">Microsoft Teams app templates</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Yo Teams video training package</A></LI> <LI><A href="#" target="_self" rel="noopener noreferrer">Microsoft 365 Developer videos</A><SPAN>&nbsp;</SPAN>| aka.ms/m365devyoutube</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 community (PnP) videos</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp/videos</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">yo Teams</A><SPAN>&nbsp;</SPAN>| aka.ms/yoteams</LI> <LI>Video -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started using yo Teams</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Wictor Wilén</A><SPAN>&nbsp;</SPAN>(Avanade)| @wictor</LI> </UL> <P><STRONG>Upcoming Calls | Recurrent Invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>Power Apps monthly call – </STRONG>June 16<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A></LI> <LI><STRONG>SharePoint Framework call – </STRONG>June 17<SUP>th&nbsp;</SUP>at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG>Microsoft Identity Platform – </STRONG>June 17<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A></LI> <LI><STRONG>M365 General Dev call – </STRONG>June 24<SUP>th</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>Office add-in monthly call – </STRONG>July 14<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG>Adaptive Cards monthly call – </STRONG>July 8<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> </UL> <P>&nbsp;</P> <P>Microsoft Teams monthly community calls are targeted at anyone who's interested in Microsoft Teams development topics. This includes Microsoft Teams, Bots, App templates, Samples, and more.&nbsp; Details on the Microsoft 365 community from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/m365pnp</A>. We also welcome community demos, if you are interested in doing a live demo in these calls!</P> <P>&nbsp;</P> <P>You can download recurrent invite from<SPAN>&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/microsoftteamscommunitycall</A></SPAN>. Welcome and join in the discussion. If you have any questions, comments, or feedback, feel free to provide your input as comments to this post as well. More details on the Microsoft 365 community and options to get involved are available from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp</A>.</P> <P>&nbsp;</P> <P><EM>“Sharing is caring”</EM></P> <HR /> <P><EM>Microsoft 365 PnP team, Microsoft - 16th of June 2021</EM></P> Thu, 17 Jun 2021 11:44:11 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-teams-community-call-june-2021/ba-p/2449603 Vesa Juvonen 2021-06-17T11:44:11Z Microsoft 365 Developer Podcast - Azure Event Hub and Rich Notifications with Ayca Bas https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-azure-event-hub-and-rich/ba-p/2455220 <DIV>Ayca Bas&nbsp;<LI-USER uid="371601"></LI-USER>&nbsp;returns to talk with Jeremy and Paul about updates to change notifications in Microsoft Graph.</DIV> <DIV>&nbsp;</DIV> <P><IFRAME src="https://www.podbean.com/player-v2/?i=8bbsu-1059aab-pb&amp;from=embed&amp;share=1&amp;download=1&amp;skin=1&amp;btn-skin=7&amp;size=150" width="100%" height="150" scrolling="no" style="border: none; min-width: min(100%, 430px);" title="Azure Event Hub and Rich Notifications with Ayca Bas" allowtransparency="true" data-name="pb-iframe-player"></IFRAME></P> <DIV>Listen to the show here&nbsp;<A href="#" target="_blank" rel="noopener">Azure Event Hub and Rich Notifications with Ayca Bas (m365devpodcast.com)</A></DIV> <DIV>&nbsp;</DIV> <DIV>&nbsp;</DIV> <H3>Links from the show:</H3> <UL> <LI><A href="#" target="_blank" rel="noopener">Get Microsoft Graph change notifications delivered through Azure Event Hubs</A></LI> <LI><A href="#" target="_blank" rel="noopener">Set up change notifications that include resource data</A></LI> <LI><A href="#" target="_blank" rel="noopener">Build session recording</A></LI> </UL> <H3>Microsoft News</H3> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/azure-active-directory-identity/automate-and-manage-azure-ad-tasks-at-scale-with-the-microsoft/ba-p/1942489" target="_blank" rel="noopener">Automate and manage Azure AD tasks at scale with the Microsoft Graph PowerShell SDK</A></LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/azure-monitor/application-insights-azue-devops-release-annotations/ba-p/2406008" target="_blank" rel="noopener">Application Insights Azure DevOps Release Annotations Implementation Update</A></LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft Teams: Change notifications extended for federated chats</A></LI> <LI>Microsoft Build 2021</LI> <UL> <LI><A href="#" target="_blank" rel="noopener">Visual Studio Code at Build 2021</A></LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft 365 Developer playlist</A></LI> <LI><A href="#" target="_blank" rel="noopener">All Sessions</A></LI> </UL> <LI><A href="#" target="_blank" rel="noopener">Join us to see what's next for Windows</A></LI> </UL> <H3>Community Links</H3> <UL> <LI><A href="#" target="_blank" rel="noopener">PnP Modern Search web parts v4.2.0 released!</A></LI> <LI><A href="#" target="_blank" rel="noopener">List Expiring Application Credentials - Graph.Community Samples</A></LI> </UL> Thu, 17 Jun 2021 16:39:25 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-podcast-azure-event-hub-and-rich/ba-p/2455220 paulschaeflein 2021-06-17T16:39:25Z Office Add-ins community call – June 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/office-add-ins-community-call-june-2021/ba-p/2446156 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="office-add-ins-call-recording-9th-june.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/289263i438AEC3C59732377/image-size/large?v=v2&amp;px=999" role="button" title="office-add-ins-call-recording-9th-june.png" alt="office-add-ins-call-recording-9th-june.png" /></span></P> <P>&nbsp;</P> <H2 id="toc-hId--465887464">Call Summary:</H2> <P><SPAN>This month's community call features presentations - </SPAN>Excel v1.13 API updates (highlights 2 new APIs &nbsp;<STRONG>insertWorksheetFromBase64</STRONG> and <STRONG>onFormulaChanged</STRONG> event), Outlook Add-ins - Build 2021 recap (GA for <STRONG>Event- Driven Add-in with onCompose Event</STRONG> and for <STRONG>Mailbox 1.10 for Outlook</STRONG>), New Email Signature Add-in (Exclaimer’s Outlook Add-in product uses latest Outlook Add-ins capabilities), and PnP: Insert template from external Excel file (insert external Excel file into the open Excel worksheet and populate it with JSON data).&nbsp; This month’s Community spotlight recognizes MVPs Damien Bird (DamoBird365) and Maarten van Stam.&nbsp; Thank you!&nbsp;&nbsp; &nbsp;Q&amp;A in chat throughout call.&nbsp; The call was<SPAN> hosted by David Chesnut (Microsoft) | </SPAN>@davidchesnut<SPAN>. Microsoft Presenters: Raymond Lu and </SPAN>Juan Balmori | @juaneloBalmori. &nbsp;Special guest presenters James Wayne and Phillip Vetter from Exclaimer Cloud.&nbsp; R<SPAN>ecorded </SPAN>on June 9, 2021<SPAN>.</SPAN></P> <P>&nbsp;</P> <H2 id="toc-hId--465887464">Agenda:</H2> <P>June's call, hosted by<SPAN>&nbsp;</SPAN><STRONG>David Chesnut</STRONG>, featured the following presenters and topics:</P> <UL> <LI><STRONG>Excel API updates</STRONG> – Raymond Lu (Microsoft) - <A href="#" target="_self">1:31</A></LI> <LI><STRONG>Outlook API updates</STRONG> - Juan Balmori (Microsoft) | @juaneloBalmori - <A href="#" target="_self">13:17</A></LI> <LI><STRONG>New Email Signature Add-in</STRONG> - James Wayne (Exclaimer Cloud) - <A href="#" target="_self">21:27</A></LI> <LI><STRONG>PnP: Insert template from external Excel file</STRONG> - <SPAN>David Chesnut (Microsoft) | @davidchesnut - <A href="#" target="_self">37:12</A></SPAN></LI> </UL> <DIV class="video-embed-center video-embed"><LI-VIDEO vid="https://youtu.be/934N5mZY_5M" align="center" size="large" width="600" height="338" uploading="false" thumbnail="http://i.ytimg.com/vi/934N5mZY_5M/hqdefault.jpg" external="url"></LI-VIDEO></DIV> <P>&nbsp;</P> <H2>Q&amp;A (Question &amp; Answers)</H2> <P>&nbsp;</P> <P>Unfortunately, we had some issues with the chat during the call. We apologize to folks who were not able to ask a question. If you have a question, you can reach out to us by using our short <A href="#" target="_blank" rel="noopener">survey form</A>. We’ll address any questions in the form during the next call.</P> <P>&nbsp;</P> <P><STRONG>Can you fix Teams add-ins functionality for online meetings? Association between Outlook events and online meetings is non-existent. The Teams SDK currently works online with single instance meetings, but there is no way to associate custom data with event instance and event series. For example, the SDK does not let you get meeting instance start time.</STRONG></P> <P>We can help with Office Add-ins development, but this is a good question for Microsoft Teams. We recommend asking this question on <A href="#" target="_blank" rel="noopener">office-teams-app-dev - Microsoft Q&amp;A.</A> Thanks!</P> <P>&nbsp;</P> <P><STRONG>Are there plans to provide access to the Outlook auto-complete list via office-js? The list is available in the UI on mobile, OWA and desktop clients while entering recipients. It would be useful for us to be able to access it (or a list of commonly used email addresses for the user) via office-js to check the entered recipients.</STRONG></P> <P>There are no plans at this time, but this sounds like a great idea! Please create a feature request for this on our ideas page at <A href="#" target="_blank" rel="noopener">https://aka.ms/m365dev-suggestions</A>. Thanks!</P> <P>&nbsp;</P> <P><STRONG>There are many videos and articles aboutsSingle sign-on for Office Add-ins. The Yeoman generator uses the NPM package "msal" but there is also an NPM package called "@azure/msal-browser" and another one called "@azure/msal-react". Can these all be used inside an Office Add-in? Which ones are the recommended ones to use?</STRONG></P> <P>&nbsp;In general you can use most web libraries with an Office Add-in. For SSO you don't need an authentication library to get the user identity token, since you just call <A href="#" target="_blank" rel="noopener"><STRONG>getAccessToken</STRONG></A>(). However, you should implement a fallback sign-in dialog for scenarios where SSO will fail. In these cases using an authentication library makes the process easier. There is no requirement to use MSAL, but if you do, you should use the official MSAL package for the framework/language of choice as recommended by Microsoft Azure. For more information see <A href="#" target="_blank" rel="noopener">Enable single sign-on for Office Add-ins - Office Add-ins | Microsoft Docs</A></P> <P>&nbsp;</P> <P><STRONG>I am attempting to implement the shared JavaScript runtime. However, I get an error when adding the &lt;Runtimes&gt; section. The error is: The element 'Host' in namespace '</STRONG><A href="#" target="_blank" rel="noopener"><STRONG>http://schemas.microsoft.com/office/taskpaneappversionoverrides</STRONG></A><STRONG>' has invalid child element 'Runtimes' in namespace '</STRONG><A href="#" target="_blank" rel="noopener"><STRONG>http://schemas.microsoft.com/office/taskpaneappversionoverrides</STRONG></A><STRONG>'. List of possible elements expected: 'AllFormFactors, DesktopFormFactor' in namespace '</STRONG><A href="#" target="_blank" rel="noopener"><STRONG>http://schemas.microsoft.com/office/taskpaneappversionoverrides</STRONG></A><STRONG>'.</STRONG></P> <P>This error can occur if the &lt;Runtimes&gt; section is not in the expected location. Be sure to put the &lt;Runtimes&gt; section just below the &lt;Host&gt; tag as follows:</P> <P>&nbsp;</P> <P>&lt;Hosts&gt;</P> <P>&nbsp; &lt;Host xsi:type="Workbook"&gt;</P> <P>&nbsp; &lt;Runtimes&gt;</P> <P>&nbsp;&nbsp;&nbsp; &lt;Runtime resid="Taskpane.Url" lifetime="long" /&gt;</P> <P>&nbsp; &lt;/Runtimes&gt;</P> <P>&nbsp;</P> <P>In general if you run into a manifest error, you can compare the manifest to one that works and look for any significant differences. For example you could compare against this <A href="#" target="_blank" rel="noopener">PnP sample manifest</A> that uses a shared runtime.</P> <P>You can also run <A href="#" target="_blank" rel="noopener">manifest validation</A> which can provide more information about the error.</P> <P>&nbsp;</P> <H2>Resources:</H2> <H3>Excel API updates</H3> <UL> <LI>insertWorksheetsFromBase64 - <A href="#" target="_blank" rel="noopener">Work with workbooks using the Excel JavaScript API - Office Add-ins | Microsoft Docs</A></LI> <LI>onFormulaChanged - <A href="#" target="_blank" rel="noopener">Work with worksheets using the Excel JavaScript API - Office Add-ins | Microsoft Docs</A></LI> <LI>getDirectDependents - <A href="#" target="_blank" rel="noopener">Work with formula precedents and dependents using the Excel JavaScript API - Office Add-ins | Microsoft Docs</A></LI> <LI>Workbook.onActivated - <A href="#" target="_blank" rel="noopener">Work with workbooks using the Excel JavaScript API - Office Add-ins | Microsoft Docs</A></LI> <LI>Table.resize - <A href="#" target="_blank" rel="noopener">Work with tables using the Excel JavaScript API - Office Add-ins | Microsoft Docs</A></LI> </UL> <H3>Outlook add-ins Build conference recap</H3> <UL> <LI>Try out event-based activation - <A href="#" target="_blank" rel="noopener">https://aka.ms/LearnEventBasedAddIns</A></LI> </UL> <H3>Exclaimer Cloud Signatures Outlook add-in</H3> <UL> <LI>&lt;TBD: Link to demo video&gt;</LI> </UL> <H3>PnP: Insert an external Excel file and populate it with JSON data</H3> <UL> <LI>PnP sample: <A href="#" target="_blank" rel="noopener">Insert an external Excel file and populate it with JSON data</A></LI> </UL> <H3>Office Add-ins community call</H3> <UL> <LI><A href="#" target="_blank" rel="noopener">Recurring, monthly community call calendar invite</A></LI> <LI><A href="#" target="_blank" rel="noopener">Community call topic requests and questions</A></LI> <LI>Community call recordings on the <A href="#" target="_blank" rel="noopener">YouTube Office Dev channel</A></LI> </UL> <H3>Office Add-ins feedback</H3> <UL> <LI>Technical questions – Microsoft Q&amp;A (<A href="#" target="_blank" rel="noopener">office-js-dev</A>), (<A href="#" target="_blank" rel="noopener">office-addins-dev</A>)</LI> <LI>Issues – <A href="#" target="_blank" rel="noopener">GitHub</A>&nbsp;</LI> <LI>Recommendations and suggestions – <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-developer-platform/idb-p/Microsoft365DeveloperPlatform" target="_blank" rel="noopener">Microsoft 365 Developer Platform ideas</A></LI> </UL> <P>The next Office Add-ins community call is on <STRONG>Wednesday, July 14, 2021 </STRONG>at 8:00AM PDT. Get the calendar invite at <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscommunitycall</A>.</P> Wed, 16 Jun 2021 16:29:28 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/office-add-ins-community-call-june-2021/ba-p/2446156 David Chesnut 2021-06-16T16:29:28Z Microsoft 365 PnP Weekly - Episode 131 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-131/ba-p/2445655 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Thumb-Ep131.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288561iA35A6184FC05C0F9/image-size/large?v=v2&amp;px=999" role="button" title="Thumb-Ep131.png" alt="Thumb-Ep131.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>In this installment of the weekly discussion revolving around the latest news and topics on&nbsp;<SPAN>Microsoft 365</SPAN>, hosts –&nbsp;<A href="#" target="_blank" rel="noopener">Vesa Juvonen</A>&nbsp;(Microsoft) | @vesajuvonen,&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A>&nbsp;(Microsoft) | @waldekm are joined by the Senior Program Manager&nbsp;Zhenya Savchenko (Microsoft) from the Developer Division of Visual Studio group. He one of the PMs coordinating new <A href="#" target="_self">Microsoft Teams Toolkit v2 extension for Visual Studio Code</A>.&nbsp; Topics discussed in this session – the Visual Studio developer tools group’s role in the development of the Microsoft Teams Toolkit, ideas for spending $5B to make Microsoft products better for developers, next steps for Teams Toolkit, and wrap up with each participant’s focus for the week.&nbsp;</P> <P>&nbsp;</P> <P>Covering also 22 new articles from Microsoft and the Community from past week!&nbsp;&nbsp;</P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true">Please remember to keep on providing us feedback on how we can help on this journey. We always welcome feedback on making the community more inclusive and diverse.</P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true"><LI-VIDEO vid="https://youtu.be/yq1uceXp_1M" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true"><SPAN style="font-family: inherit;">This episode was recorded on Monday, June 14, 2021.</SPAN></P> <P>&nbsp;</P> <UL> <LI>Video at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Community YouTube channel.</A></LI> <LI>Podcast format at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://pnpweekly.podbean.com.</A></LI> </UL> <P>&nbsp;</P> <P data-unlink="true">These videos and podcasts are published each week and are intended to be roughly 45 - 60 minutes in length.&nbsp; Please do give us feedback on this video and podcast series and also do let us know if you have done something cool/useful so that we can cover that in the next weekly summary! The easiest way to let us know is to share your work on Twitter and add the hashtag<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">#PnPWeekly</A>. We are always on the lookout for refreshingly new content. “<EM>Sharing is caring!”</EM>&nbsp;</P> <P>&nbsp;</P> <P>Here are all the links and people mentioned in this recording. Thanks, everyone for your contributions to the community!<BR /><BR /></P> <P>&nbsp;</P> <P><STRONG>Microsoft articles:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-teams-blog/what-s-new-for-teams-phones-june-2021/ba-p/2422100?WT.mc_id=m365-31622-wmastyka" target="_self">What’s new for Teams phones | June 2021</A> - Microsoft</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-teams-blog/reconnect-and-have-a-hybrid-coffee-break-with-starbucks-and/ba-p/2417579?WT.mc_id=m365-31622-wmastyka" target="_blank" rel="noopener">Reconnect and have a hybrid coffee break with Starbucks and Microsoft Teams</A> - Microsoft</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-blog/introducing-microsoft-dictation-for-ios/ba-p/2405938?WT.mc_id=m365-31622-wmastyka" target="_blank" rel="noopener">Introducing Microsoft Dictation for iOS</A> - Dan Parish (Microsoft)</LI> </UL> <P>&nbsp;</P> <P><STRONG>Community articles:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_blank" rel="noopener">Microsoft Graph Mailbag – A deeper look into the Microsoft Graph PowerShell SDK</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Matt Krause</A> (Microsoft) | @mattckrause</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-june-2021-update/ba-p/2400494?WT.mc_id=m365-31622-wmastyka" target="_blank" rel="noopener">Microsoft 365 PnP Community – June 2021 update</A> - <A href="#" target="_blank" rel="noopener">Vesa Juvonen</A> (Microsoft) |&nbsp;@vesajuvonen</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-use-fluent-ui-react-persona-control-in-spfx/ba-p/2415229?WT.mc_id=m365-31622-wmastyka" target="_blank" rel="noopener">How to use fluent UI react persona control in SPFx?</A> -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Chandani Prajapati</A><SPAN>&nbsp;|&nbsp;@Chandani_SPD</SPAN></LI> <LI><SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/what-kind-of-apps-can-you-build-on-microsoft-365/ba-p/2434448?WT.mc_id=m365-31622-wmastyka" target="_blank" rel="noopener">What kind of apps can you build on Microsoft 365?</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A> (Microsoft) |&nbsp;@waldekm</SPAN></LI> <LI><SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/use-pnp-powershell-to-add-a-document-library-webpart-to-a-page/ba-p/2428310?WT.mc_id=m365-31622-wmastyka" target="_blank" rel="noopener">Use PnP Powershell to add a document library webpart to a page (and only show a specific folder)</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Marijn Somers</A>&nbsp;|&nbsp;@marijnsomers</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Preconsent multiple scopes with Microsoft Graph Toolkit</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A> (Microsoft) |&nbsp;@waldekm</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Which permissions should you preconsent for your app using Microsoft Graph Toolkit</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A> (Microsoft) |&nbsp;@waldekm</SPAN></LI> <LI><SPAN><A href="#" target="_self">Updated script to re-index user profiles for search</A> - <A href="#" target="_blank" rel="noopener">Mikael&nbsp;Svenson</A> (Microsoft)&nbsp;| @mikaelsvenson</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Get started with child flows in Power Automate</A> -&nbsp; <A href="#" target="_blank" rel="noopener nofollow noreferrer">Pieter Veenstra</A>&nbsp;(HybrIT Services) |&nbsp;@PieterVeenstra</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Simplify taking meeting notes using native OneNote/Outlook integration</A> - <A href="#" target="_blank" rel="noopener">Cameron Dwyer</A> (OnePlace Solutions) |&nbsp;@CameronDwyer</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">How-to: Call SharePoint REST API with application permissions from Azure Logic App with Azure Key Vault and Managed Identity</A> - <A href="#" target="_blank" rel="noopener">Sergei Sergeev</A> (Mastaq) |&nbsp;@sergeev_srg</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Azure Event Hub and Rich Notifications with Ayca Bas</A> - <A href="#" target="_blank" rel="noopener">Jeremy Thake</A> (Microsoft) | @jthake, <A href="#" target="_blank" rel="noopener">Paul Schaeflein</A> (Addin365) | @paulschaeflein and <A href="#" target="_blank" rel="noopener">Ayca Bas</A> (Microsoft) |&nbsp;@aycabs</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">HTWOO - release v0.3.0</A>&nbsp;- <A href="#" target="_blank" rel="noopener">Stefan Bauer</A> (N8D) |&nbsp;@StfBauer</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Export / Import from Excel file in SharePoint</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Gaurav Goyal</A> (eWorkplace Apps Pvt. Ltd.) |&nbsp;<LI-USER uid="584998"></LI-USER></SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">PnPjs - release 2.6.0</A> - <A href="#" target="_blank" rel="noopener">Julie Turner</A> (Sympraxis Consulting) |&nbsp;@jfj1997</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Migrate Files and Folder to SharePoint Online Using Microsoft 365 CLI</A> - <A href="#" target="_blank" rel="noopener">Dipen Shah</A> (Rapid Circle) |&nbsp;@Dips_365</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Dataverse for Teams Profile Plus Power Apps Template</A> - <A href="#" target="_blank" rel="noopener">April Dunnam</A> (Microsoft) |&nbsp;@aprildunnam</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Episode #158 - Microsoft Graph Toolkit File and File List Components</A> - <A href="#" target="_blank" rel="noopener">Paolo Pialorsi</A> (PiaSys) |&nbsp;@PaoloPia</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Edit a SharePoint page or news post in Microsoft Teams</A>&nbsp;-&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Daniel Glenn</A>&nbsp;(InfoWorks, Inc) | @DanielGlenn,&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Darrell Webster</A>&nbsp;(Modern Workplace Change) | @darrellaas</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Additional resources:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_blank" rel="noopener">Microsoft Teams Toolkit for Visual Studio Code</A> - <A href="#" target="_blank" rel="noopener">https://aka.ms/teams-toolkit</A>&nbsp;</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Sharing is Caring initiative</A><SPAN>&nbsp;</SPAN>- Getting started guidance and training for using GitHub and contributing to the community</LI> <LI>Want to ask a question or in general engage with the community - Add a note in the Microsoft 365 PnP Community hub at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community</A></LI> <LI>Check out all the great community calls, SDKs, and tooling for Microsoft 365 from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp</A></LI> </UL> <P>&nbsp;</P> <P>If you’d like to hear from a specific community member in an upcoming recording and/or have specific questions for Microsoft 365 engineering or visitors – please let us know. We will do our best to address your requests or questions.</P> <P>&nbsp;</P> <P><EM>"Sharing is caring!"</EM></P> Fri, 18 Jun 2021 07:57:58 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-131/ba-p/2445655 Vesa Juvonen 2021-06-18T07:57:58Z How to use Send an HTTP request to SharePoint in Power Automate? https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-use-send-an-http-request-to-sharepoint-in-power-automate/ba-p/2439436 <H2>Introduction</H2> <P>&nbsp;</P> <P>Send an HTTP request to SharePoint action is used to execute REST queries. As we know when we want to perform any operations in SharePoint then we are using APIs so in the flow, we can use fro the same requirements.</P> <P>&nbsp;</P> <P>For more details refer to <A href="#" target="_blank" rel="noopener">this</A>.</P> <P>&nbsp;</P> <H2>Implementation</H2> <P>&nbsp;</P> <P>We will create a SharePoint list and we will perform Create, Read, Update and Delete operations. we will create an instant flow. let's see step-by-step implementation.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG>1. Go to Power Automate &gt; My flows &gt; Click on New flow &gt; Select instant cloud flow</STRONG></P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="STep 1.png" style="width: 376px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288069i322382E6EFAFEC13/image-size/large?v=v2&amp;px=999" role="button" title="STep 1.png" alt="STep 1.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG>2. Read items from To Do list. (Read Operation)</STRONG></P> <P>&nbsp;</P> <P>So to perform the read operation we will use the <STRONG>GET</STRONG> method.</P> <P>&nbsp;</P> <P>Add&nbsp;Send an HTTP request to SharePoint action from <STRONG>+ </STRONG>icon and here we need Site address, Method, and URI.</P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px"><STRONG>Site Address:</STRONG> Select the Site URL in which we want to perform actions</P> <P class="lia-indent-padding-left-30px"><STRONG>Method:</STRONG> <EM>GET</EM></P> <P class="lia-indent-padding-left-30px"><STRONG>Uri:</STRONG>&nbsp;<EM>_api/web/lists/getbytitle('To Do')/items</EM></P> <P class="lia-indent-padding-left-30px"><STRONG>Headers</STRONG><EM><STRONG>:</STRONG> Not required</EM></P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px">You can also add URI in a variable because this we will need for all the actions.</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Read Items.png" style="width: 603px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288070iC415BF2E9258F5C0/image-size/large?v=v2&amp;px=999" role="button" title="Read Items.png" alt="Read Items.png" /></span></P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px">If it will successfully execute it returns statusCode 200 and records in the body if records are available.</P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Read Items OP.png" style="width: 627px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288083iA55015B4873A2108/image-size/large?v=v2&amp;px=999" role="button" title="Read Items OP.png" alt="Read Items OP.png" /></span></P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P><STRONG>3. Create item in To Do list (Create Operation)</STRONG></P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px"><STRONG>Site Address:</STRONG> Select the Site URL in which we want to perform actions</P> <P class="lia-indent-padding-left-30px"><STRONG>Method:</STRONG> <EM>POST</EM></P> <P class="lia-indent-padding-left-30px"><STRONG>Uri:</STRONG>&nbsp;<EM>_api/web/lists/getbytitle('To Do')/items</EM></P> <P class="lia-indent-padding-left-30px"><STRONG>Headers</STRONG><EM><STRONG>: </STRONG>Need JSON object</EM></P> <P class="lia-indent-padding-left-90px"><EM>&nbsp;&nbsp;{<BR />&nbsp; &nbsp; &nbsp; &nbsp;"content-type": "applicationhttps://techcommunity.microsoft.com/json;odata=verbose",<BR />&nbsp; &nbsp; &nbsp; &nbsp;"accept": "applicationhttps://techcommunity.microsoft.com/json;odata=verbose"<BR />&nbsp; }</EM></P> <P class="lia-indent-padding-left-30px"><STRONG>Body : </STRONG><EM>RequestBody</EM></P> <P class="lia-indent-padding-left-60px"><EM>&nbsp; &nbsp; &nbsp;{<BR />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"__metadata": {<BR />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"type": "SP.Data.To_x0020_DoListItem"<BR />&nbsp; &nbsp; &nbsp; &nbsp; },<BR />&nbsp; &nbsp; &nbsp; &nbsp;"Title": "Demo Task1",<BR />&nbsp; &nbsp; &nbsp; &nbsp;"Status": "Started"<BR />&nbsp; &nbsp;}</EM></P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px">In the request body, we need type so now the question is how to get type? It is&nbsp;<STRONG><EM>SP.Data.{ListName}ListItem</EM></STRONG>&nbsp;(replace {<EM>ListName</EM>} with list name. if space in between list name then it will be separated with <STRONG><EM>_x0020_</EM></STRONG>).</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Create item.png" style="width: 599px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288073i920EFE8CE6406947/image-size/large?v=v2&amp;px=999" role="button" title="Create item.png" alt="Create item.png" /></span></P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px">If it will successfully execute it returns statusCode 201.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Create item op.png" style="width: 608px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288082i98AD4FD9BF6B56E7/image-size/large?v=v2&amp;px=999" role="button" title="Create item op.png" alt="Create item op.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG>4. Update item in To Do list (Update Operation)</STRONG></P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px"><STRONG>Site Address:</STRONG> Select the Site URL in which we want to perform actions</P> <P class="lia-indent-padding-left-30px"><STRONG>Method:</STRONG> PATCH</P> <P class="lia-indent-padding-left-30px"><STRONG>Uri:</STRONG>&nbsp;<EM>_api/web/lists/getbytitle('To Do')/items(itemID)&nbsp;</EM></P> <P class="lia-indent-padding-left-30px"><STRONG>Headers</STRONG><EM><STRONG>:&nbsp;</STRONG></EM></P> <P class="lia-indent-padding-left-90px"><EM>&nbsp; {<BR />&nbsp; &nbsp; &nbsp; "content-type": "applicationhttps://techcommunity.microsoft.com/json;odata=verbose",<BR />&nbsp; &nbsp; &nbsp; "IF-MATCH": "*"<BR />}</EM></P> <P class="lia-indent-padding-left-30px"><STRONG>Body : </STRONG><EM>RequestBody</EM></P> <P class="lia-indent-padding-left-60px"><EM>&nbsp; &nbsp; &nbsp;{<BR />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"__metadata": {<BR />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"type": "SP.Data.To_x0020_DoListItem"<BR />&nbsp; &nbsp; &nbsp; &nbsp; },<BR />&nbsp; &nbsp; &nbsp; &nbsp;"Title": "Task1",<BR />&nbsp; &nbsp;}</EM></P> <P><STRONG>&nbsp;&nbsp;</STRONG></P> <P class="lia-indent-padding-left-30px"><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Update Item.png" style="width: 597px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288076i791D97200BD29A67/image-size/large?v=v2&amp;px=999" role="button" title="Update Item.png" alt="Update Item.png" /></span></STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG>5.&nbsp;Delete item in To Do list (Delete Operation)</STRONG></P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px"><STRONG>Site Address:</STRONG> Select the Site URL in which we want to perform actions</P> <P class="lia-indent-padding-left-30px"><STRONG>Method:</STRONG> DELETE</P> <P class="lia-indent-padding-left-30px"><STRONG>Uri:</STRONG>&nbsp;<EM>_api/web/lists/getbytitle('To Do')/items(itemID)&nbsp;</EM></P> <P class="lia-indent-padding-left-30px"><STRONG>Headers</STRONG><EM><STRONG>:&nbsp;</STRONG></EM></P> <P class="lia-indent-padding-left-90px"><EM>&nbsp; {&nbsp; &nbsp; &nbsp;<BR />&nbsp; &nbsp; &nbsp; "content-type": "applicationhttps://techcommunity.microsoft.com/json;odata=verbose",<BR />&nbsp; &nbsp; &nbsp; "IF-MATCH": "*",<BR />&nbsp; &nbsp; &nbsp; "X-HTTP-Method": "DELETE "<BR />}</EM></P> <P class="lia-indent-padding-left-30px"><STRONG>Body: </STRONG><EM>Not required&nbsp;</EM></P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px"><EM><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Delete ietm.png" style="width: 599px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288078i11A2FD5057908D2D/image-size/large?v=v2&amp;px=999" role="button" title="Delete ietm.png" alt="Delete ietm.png" /></span></EM></P> <H2>Summary</H2> <P>&nbsp;</P> <P>In this article, we have seen the step-by-step implementation of CRUD operation of SharePoint list items using Send an HTTP request to SharePoint in Power automate.</P> <P>&nbsp;</P> <P>Hope this helps!</P> <P>&nbsp;</P> <P>Sharing is caring!</P> <P>&nbsp;</P> Tue, 15 Jun 2021 08:50:36 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-use-send-an-http-request-to-sharepoint-in-power-automate/ba-p/2439436 ChandaniPrajapati 2021-06-15T08:50:36Z Run reports on your tenant using the CLI for Microsoft and Azure Container Instances https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/run-reports-on-your-tenant-using-the-cli-for-microsoft-and-azure/ba-p/2377851 <P>Using the CLI for Microsoft 365, you can manage your Microsoft 365 tenant and SharePoint Framework projects on any platform, including running it in a container. By running the CLI for Microsoft 365 in a container you free yourself from installing it locally. Leveraging a Logic App, Azure Container Instances and the CLI for Microsoft 365 you can automate reporting and maintenance of your tenant.</P> <P>&nbsp;</P> <P>The goal is thus to generate some form of reporting on our tenant. There are a lot of <A title="CLI for Microsoft 365 sample scripts" href="#" target="_blank" rel="noopener">sample scripts available</A>, but we will start simple by reporting all deleted Office 365 Groups (this will include deleted Teams). Executing a report like that with the CLI for Microsoft 365 would be just a single line:&nbsp;&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">m365 aad o365group recyclebinitem list</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>To achieve our reporting scenario we need the a few other components as well:</P> <OL> <LI>An Azure resource group to group our resources together&nbsp;</LI> <LI>A managed identity to make sure we can access our tenant securely;</LI> <LI>A Logic App to orchestrate everything;</LI> <LI>Azure Container Instances to execute our script;</LI> <LI>A Git repo that contains the script we want to execute and pull in;</LI> </OL> <P>If you are new to running Azure Containers and using Logic Apps there is a great <A title="running sentiment analysis with Azure Container Instances&nbsp;" href="#" target="_self">walkthrough on&nbsp;running sentiment analysis with Azure Container Instances</A>. But let us get started with the first step.</P> <P><FONT size="6">Create an Azure Resource Group</FONT></P> <P><FONT size="4">To create a new Azure resource group simply log in to the Azure Portal and create a new resource group using the <STRONG>create a resource</STRONG> button. For demo purposes I called my resource group <EM>cli-test</EM>.</FONT></P> <P><FONT size="6">Create a Managed Identity</FONT></P> <P>In our resource group we can create a new user managed identity that we can use. Click on the <STRONG>add</STRONG> button and search for <STRONG>User Assigned Managed Identity </STRONG>to create the new managed identity. Simply provide a name and create your new managed identity.&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="cli-ma.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/287158i3798606F0854681C/image-size/large?v=v2&amp;px=999" role="button" title="cli-ma.png" alt="cli-ma.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Once the managed identity is created it still need permissions to do anything. Just creating it is not enough. In order to use the managed identity we need to make sure that it has the correct permissions. The <A href="#" target="_blank" rel="noopener">CLI for Microsoft 365 docs</A> explain in details what the steps are required. For our reporting scenario's we need support to query the Graph and SharePoint. You can use the CLI for Microsoft 365 to easily hand out the permissions you need with the following snippet:&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">m365 aad approleassignment add --displayName "ma-cli-test" --resource "Microsoft Graph" --scope "Sites.Read.All" m365 aad approleassignment add --displayName "ma-cli-test" --resource "Office 365 SharePoint Online" --scope "Sites.Manage.All" m365 aad approleassignment add --displayName "ma-cli-test" --resource "Microsoft Graph" --scope "Group.Read.All" </LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>Now all we need is the GUID that identifies the managed identity. Navigate to <A href="#" target="_blank" rel="noopener">https://portal.azure.com</A>&nbsp;select <STRONG>Azure Active Directory</STRONG> and pick <STRONG>Enterprise Applications</STRONG>. In the Application Filter filter on <STRONG>Managed Identities</STRONG> and make sure to pick the <STRONG>Application Id</STRONG> of your newly created managed identity.&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="cli-ma-id.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288466iB87F18CB4EBF773F/image-size/large?v=v2&amp;px=999" role="button" title="cli-ma-id.png" alt="cli-ma-id.png" /></span></P> <P>Store it somewhere save as we need it at a later moment.&nbsp;</P> <P><FONT size="6">Create a Logic App</FONT></P> <P><FONT size="4">As we need a Logic App to orchestrate the execution of our script the first step is to create one. You can do so in any resouce group, or create a new one. There are no requirements for your Logic App. So we pick a <STRONG>Logic App (Consumption) </STRONG>and provide a resource group and name. Once the Logic App is created navigate to it and click the <STRONG>edit</STRONG> button. Once in edit mode you are free to pick your trigger. You can pick any trigger you like, for demo purposes you could connect it to a list in SharePoint Online, or just use a HTTP trigger. The next step is to create two parameters, <STRONG>containerGroup</STRONG> and <STRONG>containerName</STRONG>. Both will be used more than once so it helps to create them parameters, but it is not required. For demo purposes I added a small snippet as a postfix to identify when it was created:&nbsp;</FONT></P> <P>&nbsp;</P> <LI-CODE lang="excel">formatDateTime(utcNow(),'MM-dd-yyyy')</LI-CODE> <P>&nbsp;</P> <P><FONT size="4">&nbsp;This helps when debugging as you can always identify when something was created. The next step is to add a new action of type <STRONG>Create or update a container group</STRONG>. It is a pretty complex action with a lot of parameters to get right, so it is worth to pay close attention when typing:</FONT></P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="33.333333333333336%" height="44px"><FONT size="4"><STRONG>Option&nbsp;</STRONG></FONT></TD> <TD width="33.333333333333336%" height="44px"><FONT size="4"><STRONG>Value</STRONG></FONT></TD> <TD width="33.333333333333336%" height="44px"><FONT size="4"><STRONG>Comments</STRONG></FONT></TD> </TR> <TR> <TD width="33.333333333333336%" height="84px">Subscription id</TD> <TD width="33.333333333333336%" height="84px">Any subscription you like</TD> <TD width="33.333333333333336%" height="84px">I suggest putting it all in the same subscription.&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="84px">Resource Group</TD> <TD width="33.333333333333336%" height="84px">Any resource group you like&nbsp;</TD> <TD width="33.333333333333336%" height="84px">I suggest putting it all in the same resource group.</TD> </TR> <TR> <TD width="33.333333333333336%" height="83px">Container Group Name</TD> <TD width="33.333333333333336%" height="83px"><LI-CODE lang="excel">@{variables('containerGroup')}</LI-CODE></TD> <TD width="33.333333333333336%" height="83px">Parameter for ease of use</TD> </TR> <TR> <TD width="33.333333333333336%" height="57px">Container Group Location</TD> <TD width="33.333333333333336%" height="57px">Any location is supported</TD> <TD width="33.333333333333336%" height="57px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="83px">Container Name - 1</TD> <TD width="33.333333333333336%" height="83px"><LI-CODE lang="excel">@{variables('containerName')}</LI-CODE></TD> <TD width="33.333333333333336%" height="83px">Parameter for ease of use</TD> </TR> <TR> <TD width="33.333333333333336%" height="83px">Container Image - 1</TD> <TD width="33.333333333333336%" height="83px"><LI-CODE lang="bash">m365pnp/cli-microsoft365:latest</LI-CODE></TD> <TD width="33.333333333333336%" height="83px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="192px">Container Resource Requests CPU - 1</TD> <TD width="33.333333333333336%" height="192px">1</TD> <TD width="33.333333333333336%" height="192px">If you are planning to run complex or large scripts it might be worth to add additional resources.&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="192px">Container Resource Requests Memory - 1</TD> <TD width="33.333333333333336%" height="192px">1.5</TD> <TD width="33.333333333333336%" height="192px">If you are planning to run complex or large scripts it might be worth to add additional resources.&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="192px">Container Command Segment - 1</TD> <TD width="33.333333333333336%" height="192px"><LI-CODE lang="bash">bash</LI-CODE></TD> <TD width="33.333333333333336%" height="192px">You cannot execute multiple commands in a single line. You will need to add each statement to a segment.&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="138px">Container Command Segment - 2</TD> <TD width="33.333333333333336%" height="138px"><LI-CODE lang="bash">/mnt/repo1/test.sh</LI-CODE></TD> <TD width="33.333333333333336%" height="138px">The value of the mount path and script name are dependant on settings below.&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="84px">Container Volume Mount Path - 1</TD> <TD width="33.333333333333336%" height="84px">/mnt/repo1</TD> <TD width="33.333333333333336%" height="84px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="138px">Container Volume Mount Name - 1</TD> <TD width="33.333333333333336%" height="138px">gitrepo</TD> <TD width="33.333333333333336%" height="138px">The name for the mount path must match the volume name specified later.&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="84px">Volume Git Repo Volume Repository - 1</TD> <TD width="33.333333333333336%" height="84px"><A href="#" target="_blank" rel="noopener">https://github.com/appieschot/cli-test.git</A></TD> <TD width="33.333333333333336%" height="84px">Any public repository will do.&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="57px">Volume Name - 1</TD> <TD width="33.333333333333336%" height="57px">gitrepo</TD> <TD width="33.333333333333336%" height="57px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="138px">ContainerGroup Managed Identity User Assigned Identities</TD> <TD width="33.333333333333336%" height="138px">{<BR />"/subscriptions/<STRONG>[guid]</STRONG>/resourcegroups/[rg-name]/providers/microsoft.managedidentity/userassignedidentities/<STRONG>[identity-name]</STRONG>": {}<BR />}</TD> <TD width="33.333333333333336%" height="138px">Make sure to update the <STRONG>bold</STRONG> parts.</TD> </TR> <TR> <TD width="33.333333333333336%" height="111px">ContainerGroup Restart Policy</TD> <TD width="33.333333333333336%" height="111px">OnFailure</TD> <TD width="33.333333333333336%" height="111px">Make sure the container is restarted if there are problems.&nbsp;</TD> </TR> </TBODY> </TABLE> <P>This action will thus create a new container instance, pulls in the CLI for Microsoft 365 image and make sures that a git repo with a script is pulled in. And best of all; the container created will be running with the managed identity you have specified. Now all we need to do is to capture the output of our container instance and clean up.&nbsp;</P> <P>&nbsp;</P> <P>To do so add a action of type <STRONG>until</STRONG>. Do not configure any requirements yet and simply add an action of type <STRONG>Get properties of a container</STRONG>&nbsp;to retrieve the latest status, use the <STRONG>containerGroup</STRONG>&nbsp;parameter to make sure you get the correct container. Put in the Container Group name as a parameter and check for status <STRONG>Succeeded </STRONG>of the untill action. Add a new condition and check there for the same status. In the true statement we can implement the logic for retrieving our data. You can use the <STRONG>Get logs from a container instance</STRONG> and e-mail the output to yourself.&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="cli-la-cleanup.png" style="width: 525px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/288482i9B5AB92362145240/image-size/large?v=v2&amp;px=999" role="button" title="cli-la-cleanup.png" alt="cli-la-cleanup.png" /></span></P> <P>In the false branche add an wait <STRONG>action</STRONG> that waits for 10 or 15 seconds. That will make sure it takes a while before it retries checking the status to see if it is finished.&nbsp;&nbsp;</P> <P><FONT size="6">Create your script</FONT></P> <P>The last part is to make sure that the test.sh file referred to as being mounted in your container actually exists. It should contain all logic to run your script, but the first step is to authenticate. In order to authenticate with the managed identity we need to tell the CLI for Microsoft 365 to do so. By specifying the login using the authType parameter we can pass the GUID of our managed identity. The CLI then knows to use the managed identity of the container it is running in and you are done.&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="applescript">m365 login --authType identity --userName 00000000-0000-0000-0000-000000000000 m365 aad o365group recyclebinitem list --output json</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P><FONT size="6">Full Logic App</FONT></P> <P>Once all these components are in place you can simply run any script in the container. Just make sure you have the appropriate permissions assigned to the Manged Identity!&nbsp;</P> <P><FONT size="6">PnP Recording</FONT></P> <P>If you are looking at a video walkthrough you can checkout the PnP recording. It highlights the results and steps taken to achieve basic reporting on your tenant.&nbsp;</P> <P><IFRAME src="https://www.youtube.com/embed/e36qPG9x0C0" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen" title="YouTube video player" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"></IFRAME></P> Tue, 15 Jun 2021 09:05:15 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/run-reports-on-your-tenant-using-the-cli-for-microsoft-and-azure/ba-p/2377851 Albert-Jan Schot 2021-06-15T09:05:15Z Microsoft 365 Developer Community Call recording – 10th of June, 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-community-call-recording-10th-of-june/ba-p/2435433 <P>Recording of the Microsoft 365 – General M365 development Special Interest Group (SIG) community call from June 10, 2021.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="m365-general-10th-june-recording.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/287965i4A6CEEDFE4A5ED3B/image-size/large?v=v2&amp;px=999" role="button" title="m365-general-10th-june-recording.png" alt="m365-general-10th-june-recording.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Call Summary</STRONG></P> <P>Summer break and community call schedule updates reviewed. You are invited to join the <A href="#" target="_blank" rel="noopener">Viva Connections private preview</A>!&nbsp;&nbsp; Preview the new <A href="#" target="_blank" rel="noopener">Microsoft 365 Extensibility look book gallery</A>.&nbsp; Looking to get started with Microsoft Teams development? &nbsp;Don’t miss out our <A href="#" target="_blank" rel="noopener">Teams samples gallery</A>, and the new Microsoft 365 tenant – <A href="#" target="_blank" rel="noopener">script samples gallery</A> - s<EM>cripts for PowerShell and CLIs.&nbsp; </EM>Sign up and attend one of a growing list of events hosted by <A href="#" target="_blank" rel="noopener">Sharing is Caring</A> this month.&nbsp;&nbsp; Check out the new <A href="#" target="_blank" rel="noopener">PnP Teams Quickstart</A>.&nbsp;</P> <P>&nbsp;</P> <P>Recent PnP project releases include:&nbsp; PnP Core SDK v1.2.0 GA, PnP Framework v1.5.0 GA, PnP PowerShell v1.6.0 GA, Yo teams - generator-teams v3.2.0 GA, yoteams-build-core V1.2.0 GA + v1.2.1 Preview, yoteams-deploy v1.0.0 GA and finally component updates to Microsoft Graph Toolkit (MGT) v.2.2.0 GA.&nbsp; &nbsp;</P> <P>&nbsp;</P> <P><STRONG>Open-source project status:&nbsp; (Bold indicates new this call)</STRONG></P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="33.333333333333336%"><STRONG>Project</STRONG></TD> <TD width="33.333333333333336%"><STRONG>Current Version</STRONG></TD> <TD width="33.333333333333336%"><STRONG>Release/Status</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%">PnP .NET Libraries - PnP Framework</TD> <TD width="33.333333333333336%"><STRONG>v1.5.0 GA</STRONG></TD> <TD width="33.333333333333336%"><STRONG>Version 1.6.0 – Summer 2021</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%">PnP .NET Libraries - PnP Core SDK</TD> <TD width="33.333333333333336%"><STRONG>v1.2.0 GA</STRONG></TD> <TD width="33.333333333333336%"><STRONG>Version 1.3.0 – Summer 2021</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%">PnP PowerShell</TD> <TD width="33.333333333333336%"><STRONG>v1.6.0 &nbsp;GA</STRONG></TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - generator-teams</TD> <TD width="33.333333333333336%"><STRONG>v3.2.0 GA</STRONG></TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - yoteams-build-core</TD> <TD width="33.333333333333336%"><STRONG>v1.2.0 GA, v1.2.1 Preview</STRONG></TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD>Yo teams – yoteams-deploy</TD> <TD><STRONG>v1.1.0 GA</STRONG></TD> <TD>&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - msteams-react-base-component</TD> <TD width="33.333333333333336%">v3.1.0</TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Microsoft Graph Toolkit (MGT)</TD> <TD width="33.333333333333336%">v2.2.0 GA</TD> <TD width="33.333333333333336%">Regular component updates</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>Additionally, 1 new Teams samples were delivered in the last 2 weeks.&nbsp; The host of this call was Vesa Juvonen (Microsoft) |@vesajuvonen. &nbsp;Q&amp;A takes place in chat throughout the call.</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/qOgH82b5Jw4" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><STRONG>Actions:&nbsp;&nbsp;</STRONG></P> <P>&nbsp;</P> <UL> <LI>Join on the Viva Connections private preview! |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">aka.ms/viva/connections/preview/register</A></LI> <LI><STRONG>Feedback wanted:&nbsp; Regarding PnP PowerShell</STRONG><SPAN>&nbsp;</SPAN>– “What if we did not return classic CSOM objects from the cmdlets?” &nbsp;Comments to:&nbsp; @erwinvanhunen.&nbsp; &nbsp;&nbsp;</LI> <LI>Save the date to the Microsoft Teams monthly community call on the 15<SUP>th</SUP> of June @ 8 AM PT | <A href="#" target="_blank" rel="noopener">https://aka.ms/microsoftteamscommunitycall</A> &nbsp;</LI> <LI><STRONG>Register for Sharing is Caring Events</STRONG>: <UL> <LI>First Time Contributor Session –&nbsp;<A href="#" target="_blank" rel="noopener">June 29<SUP>th</SUP></A> (EMEA, APAC &amp; US friendly times available)</LI> <LI>Community Docs Session –&nbsp;<A href="#" target="_blank" rel="noopener">June 23<SUP>rd</SUP> </A>&nbsp;</LI> <LI>PnP – SPFx Developer Workstation Setup – <A href="#" target="_blank" rel="noopener">June 17<SUP>th</SUP></A> &nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">June 24<SUP>th</SUP></A></LI> <LI>Ask Me Anything – Teams Dev - July</LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">June 30<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – <A href="#" target="_blank" rel="noopener">June 16<SUP>th</SUP></A></LI> <LI>Maturity Model Practitioners – <A href="#" target="_blank" rel="noopener">June 15<SUP>th</SUP></A></LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> </UL> </LI> <LI>Download the recurrent invite for this call –&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365-dev-sig</A></LI> <LI><SPAN>Call attention to your great work by using the&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">#PnPWeekly</A><SPAN>&nbsp;on Twitter.</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Microsoft Teams Development Samples:&nbsp;<SPAN>&nbsp;</SPAN></STRONG>(<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/TeamsSampleBrowser</A>)</P> <UL> <LI> <P><STRONG><A href="#" target="_blank" rel="noopener">Configure Teams applications with Azure App Configuration</A> - </STRONG><A href="#" target="_blank" rel="noopener">Markus Moeller</A> | @Moeller2_0&nbsp;</P> </LI> </UL> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="210610-together-mode.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/287967i4F682232231968ED/image-size/large?v=v2&amp;px=999" role="button" title="210610-together-mode.gif" alt="210610-together-mode.gif" /></span></P> <P>&nbsp;</P> <P>Thank you for joining for today's PnP Community call.&nbsp; &nbsp;The auditorium was packed.&nbsp; &nbsp;</P> <P>&nbsp;</P> <P><STRONG>Demos</STRONG><SPAN>&nbsp;</SPAN>delivered in this session</P> <UL> <LI> <P><STRONG>Remote Event Receiver Manager solution in SPFx for managing list events</STRONG> -</P> <P>A very simple web part that lets users view, add and delete remote event receivers in lists.&nbsp; &nbsp;Review what is a Remote Event Receiver, Strengths and Weaknesses, and when/not to consider using Power Automate to accomplish task.&nbsp;&nbsp; Use the sample to quickly identify Event Receivers in lists across a tenant without having to connect to PowerShell or go to a REST API.</P> </LI> <LI> <P><STRONG>Preview on list formatting demo site template</STRONG> – as an alternative to going to GitHub to pull samples, the Community team is experimenting with an additional layout option – List Formatting Sample Showcase pages that display fully functional samples Power Users can manipulate, drill in to view/customize data, and get additional details in GitHub - from within a browser! &nbsp;&nbsp;You may even adopt this formatting in your own tenant.&nbsp; Available soon.&nbsp;</P> </LI> <LI> <P><STRONG>Getting started on using Time Clock Microsoft Graph APIs to clock&nbsp;in and out of a shift</STRONG> – the time tracking component (Time Clock APIs) in the Teams Shifts Application provides clock in / out, timesheet edit and more capabilities that auto-syncs to Payroll / T&amp;A apps like Cronos, Workday, ADP, Ceridian SAP. &nbsp;Call the APIs to integrate with your customer’s payroll and T&amp;A systems using Time Clock APIs (beta).&nbsp; Supports CRUD operations and WebHooks.&nbsp; Request handling guidance in the documentation.</P> <P>&nbsp;</P> </LI> </UL> <P>Thank you for your work. Samples are often showcased in Demos.</P> <P>&nbsp;</P> <P><STRONG>Topics</STRONG><SPAN>&nbsp;</SPAN>covered in this call</P> <UL> <LI>PnP .NET library updates -&nbsp;<A href="#" target="_self" rel="nofollow noopener noreferrer">Bert Jansen</A><SPAN>&nbsp;</SPAN>(Microsoft) | @O365bert -<SPAN>&nbsp;<A href="#" target="_self">10:31</A></SPAN></LI> <LI>PnP PowerShell updates -<SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">&nbsp;Erwin van Hunen</A>&nbsp;(Valo Intranet) |&nbsp;@erwinvanhunen</SPAN>&nbsp;-<SPAN>&nbsp;<A href="#" target="_self">12:59</A></SPAN></LI> <LI>yo Teams updates - <A href="#" target="_self">Wictor Wilén</A> (Avanade) | @wictor<SPAN>&nbsp;</SPAN><SPAN>- <A href="#" target="_self">14:23</A></SPAN></LI> <LI>Microsoft Graph Toolkit updates -&nbsp;<SPAN><A href="#" target="_self">Beth Pan</A> (Microsoft) |&nbsp;<LI-USER uid="803637"></LI-USER></SPAN><SPAN>&nbsp;</SPAN>-<SPAN>&nbsp;<A href="#" target="_self">16:42</A></SPAN></LI> <LI>Microsoft Teams Samples - <A href="#" target="_self">Bob German</A> (Microsoft) | @Bob1German<SPAN>&nbsp;</SPAN><SPAN>- <A href="#" target="_self">18:22</A></SPAN></LI> <LI> <P><STRONG>Demo:&nbsp; </STRONG>Remote Event Receiver Manager solution in SPFx for managing list events – <A href="#" target="_blank" rel="noopener">Dan Toft</A> (Evobis ApS) | @tanddant - <A href="#" target="_self">20:22</A></P> </LI> <LI> <P><STRONG>Demo:&nbsp; </STRONG>Preview on list formatting demo site template – <A href="#" target="_blank" rel="noopener">Chris Kent</A> (DMI) | @theChrisKent - <A href="#" target="_self">31:32</A></P> </LI> <LI> <P><STRONG>Demo:&nbsp; </STRONG>Getting started on using Time Clock Microsoft Graph APIs to clock&nbsp;in and out of a shift – Aarthi Kumar (Microsoft)&nbsp;<SPAN style="font-family: inherit;">-</SPAN><SPAN style="font-family: inherit;">&nbsp;<A href="#" target="_self">41:20</A></SPAN><A href="#" target="_self"><SPAN style="font-family: inherit;">&nbsp;</SPAN></A></P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>Additional resources around the covered topics and links from the slides.</P> <UL> <LI> <P>Samples - <A href="#" target="_blank" rel="noopener">Remote Event Receiver Manager</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A style="background-color: #ffffff;" href="#" target="_blank" rel="noopener">Use remote event receivers in SharePoint</A></P> </LI> <LI> <P>Repo - <A href="#" target="_blank" rel="noopener">SharePoint List Formatting Samples</A>&nbsp;</P> </LI> <LI> <P>GitHub - <A href="#" target="_blank" rel="noopener">SharePoint List Formatting Samples</A></P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">shift resource type</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">timecard resource type</A>&nbsp;</P> </LI> <LI> <P>Documentation – <A href="#" target="_self">Webhook to Shifts changes</A>&nbsp;</P> </LI> <LI>PnP Weekly – Episode 130 with the Software Engineer behind the Microsoft Graph Toolkit,&nbsp;<A href="#" target="_blank" rel="noopener">Nikola Metulev</A>&nbsp;(Microsoft) | @metulev.&nbsp;| <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-130/ba-p/2422722" target="_blank" rel="noopener">video</A> | <A href="#" target="_blank" rel="noopener">podcast</A></LI> <LI><SPAN style="font-family: inherit;">Microsoft 365 tenant – </SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">Script Samples Gallery</A><SPAN style="font-family: inherit;"> | aka.ms/script-samples</SPAN></LI> <LI>PnP Teams Quickstart | <A href="#" target="_blank" rel="noopener">aka.ms/pnp-teams-quickstart</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/m365/extensibility</LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Microsoft Teams Samples Gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/teams-samples</LI> </UL> <P>&nbsp;</P> <P><STRONG>General resources</STRONG>:</P> <UL> <LI>Microsoft Teams Toolkit v2.2 |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/teams-toolkit</A></LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp/ct-p/Microsoft365PnP" target="_blank" rel="noopener">Microsoft 365 PnP Community hub</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp/community&nbsp;</LI> <LI>Microsoft Graph Toolkit in Microsoft Learn |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/learn-mgt</A></LI> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint look book</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Yo Teams video training package</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">.NET Standard 2.0 version of SharePoint Online CSOM API</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 community (PnP) videos</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp-videos</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Teams Toolkit for Visual Studio Code</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">yo Teams</A><SPAN>&nbsp;</SPAN>| aka.ms/yoteams</LI> <LI>Video -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started using yo Teams</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Wictor Wilén</A><SPAN>&nbsp;</SPAN>(Avanade)| @wictor</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-sharepoint-blog/build-a-crisis-management-site-to-connect-people-and-information/ba-p/1216791?WT.mc_id=m365-24198-cxa" target="_blank" rel="noopener">Build a crisis management site to connect people and information</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Developer documentation</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spdev-docs</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Power Shell</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Modernization Partner Guidance</A><SPAN>&nbsp;</SPAN>- Feedback welcome</LI> <LI>Solution -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Building a modern search experiences with SharePoint Framework web parts</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Page transformation guidance</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Page transformation videos</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Modernization scanner</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 developer program site</A><SPAN>&nbsp;</SPAN>- Need to become a Tenant Admin to test look book capabilities? Get a Microsoft 365 E5 developer subscription (free tenant for 90 days)</LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">SharePoint Provisioning Service<SPAN>&nbsp;</SPAN></A>- Easily provision look book designs to any tenant in the world</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Provisioning templates on Github</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Provisioning Tenant Templates documentation</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Page Transformation webcast series</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Power Shell</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Modernization Tools</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Upcoming Calls | Recurrent Invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>Microsoft Teams monthly call –</STRONG> June 15<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/microsoftteamscommunitycall</A></LI> <LI><STRONG>Power Apps monthly call – </STRONG>June 16<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A></LI> <LI><STRONG>SharePoint Framework call – </STRONG>June 17<SUP>th</SUP>at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG>Microsoft Identity Platform – </STRONG>June 17<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A></LI> <LI><STRONG>M365 General Dev call – </STRONG>June 24<SUP>th</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>Office add-in monthly call – </STRONG>July 14<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG style="font-family: inherit;">Adaptive Cards monthly call – </STRONG><SPAN style="font-family: inherit;">July 8</SPAN><SUP style="font-family: inherit;">th</SUP><SPAN style="font-family: inherit;"> at 9:00 am PDT | </SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> </UL> <P>&nbsp;</P> <P>General Microsoft 365 Dev Special Interest Group bi-weekly calls are targeted at anyone who's interested in the general Microsoft 365 development topics. This includes Microsoft Teams, Bots, Microsoft Graph, CSOM, REST, site provisioning, PnP PowerShell, PnP Sites Core, Site Designs, Microsoft Flow, PowerApps, Column Formatting, list formatting, etc. topics. More details on the Microsoft 365 community from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/m365pnp</A>. We also welcome community demos, if you are interested in doing a live demo in these calls!</P> <P>&nbsp;</P> <P>You can download recurrent invite from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/m365-dev-sig</A>. Welcome and join in the discussion. If you have any questions, comments, or feedback, feel free to provide your input as comments to this post as well. More details on the Microsoft 365 community and options to get involved are available from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp</A>.</P> <P>&nbsp;</P> <P><EM>“Sharing is caring”</EM></P> <HR /> <P><EM>Microsoft 365 PnP team, Microsoft - 11th of June 2021</EM></P> Fri, 11 Jun 2021 06:24:28 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-community-call-recording-10th-of-june/ba-p/2435433 Vesa Juvonen 2021-06-11T06:24:28Z How to use fluent UI react persona control in SPFx? https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-use-fluent-ui-react-persona-control-in-spfx/ba-p/2415229 <H2>Introduction</H2> <P>&nbsp;</P> <P>A persona is a visual representation of a person across products, typically showcasing the image that person has chosen to upload themselves. This control includes an individual's avatar (an uploaded image or a composition of the person’s initials on a background color), their name or identification, and so on. for more details refer to <A href="#" target="_blank" rel="noopener">this</A>.</P> <P>&nbsp;</P> <H2>Scenario&nbsp;</H2> <P>&nbsp;</P> <P>We will create an SPFx web part in the way to fetch users from any specific group and render these users using a persona. so let's see step-by-step implementation.</P> <P>&nbsp;</P> <P>In the end, our output will be like this,</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Output.png" style="width: 315px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286246i238B2956F1E85171/image-size/large?v=v2&amp;px=999" role="button" title="Output.png" alt="Output.png" /></span></P> <P>&nbsp;</P> <H2>Implementation&nbsp;&nbsp;</H2> <P>&nbsp;</P> <P>Open a command prompt<BR />Move to the path where you want to create a project<BR />Create a project directory using:</P> <P>&nbsp;</P> <PRE>md spfx-persona</PRE> <P>&nbsp;</P> <DIV id="pastingspan1">Move to the above-created directory using:</DIV> <DIV>&nbsp;</DIV> <PRE>cd spfx-persona</PRE> <DIV>&nbsp;</DIV> <DIV> <DIV id="pastingspan1">Now execute the below command to create an SPFx solution:</DIV> <DIV>&nbsp;</DIV> <PRE>yo @microsoft/sharepoint </PRE> <DIV>&nbsp;</DIV> <DIV> <DIV id="pastingspan1">It will ask some questions, as shown below,</DIV> <DIV>&nbsp;</DIV> <DIV><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Project Structure.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286247iB48EBA3A11505543/image-size/large?v=v2&amp;px=999" role="button" title="Project Structure.png" alt="Project Structure.png" /></span> <P>&nbsp;</P> </DIV> <DIV> <P>Now we will install <STRONG>pnpjs</STRONG> as shown below:</P> <P>&nbsp;</P> <PRE>npm install @pnp/sp --save</PRE> <P>&nbsp;</P> <P>After a successful installation, we can open a project in any source code tool. Here, I am using the VS code, so I will execute the command:</P> <P>&nbsp;</P> <PRE>code .</PRE> </DIV> <DIV>&nbsp;</DIV> <DIV>1. Move to the&nbsp;<EM>src/webparts/spfxpersona/components/<STRONG>ISpfxpersonaProps.ts&nbsp;</STRONG></EM>and create a context property as below,</DIV> <DIV>&nbsp;</DIV> <DIV><LI-CODE lang="javascript">import { WebPartContext } from "@microsoft/sp-webpart-base"; export interface ISpfxpersonaProps { description: string; context: WebPartContext }</LI-CODE></DIV> <DIV>&nbsp;</DIV> </DIV> <DIV>2. Now move to the&nbsp;<STRONG>SpfxpersonaWebPart.ts&nbsp;</STRONG>file and here we initialize an SP context and pass it in the property.</DIV> <DIV>&nbsp;</DIV> <DIV><LI-CODE lang="javascript">import * as React from 'react'; import * as ReactDom from 'react-dom'; import { Version } from '@microsoft/sp-core-library'; import { IPropertyPaneConfiguration, PropertyPaneTextField } from '@microsoft/sp-property-pane'; import { BaseClientSideWebPart } from '@microsoft/sp-webpart-base'; import * as strings from 'SpfxpersonaWebPartStrings'; import Spfxpersona from './components/Spfxpersona'; import { ISpfxpersonaProps } from './components/ISpfxpersonaProps'; import { sp } from "@pnp/sp/presets/all"; export interface ISpfxpersonaWebPartProps { description: string; } export default class SpfxpersonaWebPart extends BaseClientSideWebPart&lt;ISpfxpersonaWebPartProps&gt; { public onInit(): Promise&lt;void&gt; { return super.onInit().then(_ =&gt; { sp.setup({ spfxContext: this.context }); }); } public render(): void { const element: React.ReactElement&lt;ISpfxpersonaProps&gt; = React.createElement( Spfxpersona, { description: this.properties.description, context: this.context, } ); ReactDom.render(element, this.domElement); } protected onDispose(): void { ReactDom.unmountComponentAtNode(this.domElement); } protected get dataVersion(): Version { return Version.parse('1.0'); } protected getPropertyPaneConfiguration(): IPropertyPaneConfiguration { return { pages: [ { header: { description: strings.PropertyPaneDescription }, groups: [ { groupName: strings.BasicGroupName, groupFields: [ PropertyPaneTextField('description', { label: strings.DescriptionFieldLabel }) ] } ] } ] }; } } </LI-CODE></DIV> <DIV>&nbsp;</DIV> <DIV>3. Create a common component means folder called&nbsp;<STRONG>RenderProfilePicture</STRONG> inside&nbsp;<EM>src/webparts/spfxpersona/Common/Components.&nbsp;</EM>And inside this folder create a file&nbsp;<STRONG>RenderProfilePicture.tsx</STRONG>&nbsp;<STRONG>.</STRONG></DIV> <DIV>&nbsp;</DIV> <DIV>At here we will pass a property as an argument and render it and in the main component, we will call API to get items so they will be set through the property.&nbsp;</DIV> <DIV>&nbsp;</DIV> <DIV><LI-CODE lang="javascript">import * as React from 'react'; import { Persona, PersonaSize } from 'office-ui-fabric-react/lib/Persona'; interface IProfilePicProps { loginName: string; displayName: string; getUserProfileUrl?: () =&gt; Promise&lt;string&gt;; } export function RenderProfilePicture(props: IProfilePicProps) { const [profileUrl, setProfileUrl] = React.useState&lt;string&gt;(); let { displayName, getUserProfileUrl } = props; React.useEffect(() =&gt; { getUserProfileUrl().then(url =&gt; { setProfileUrl(url); }); }, [props]) return ( &lt;div&gt; &lt;Persona imageUrl={profileUrl} text={displayName} size={PersonaSize.size32} imageAlt={displayName} styles={{ primaryText: { fontSize: '14px' }, root: { margin: '10px' } }} /&gt; &lt;/div&gt;); }</LI-CODE></DIV> <DIV>&nbsp;</DIV> <DIV>4. Now move to the <STRONG>Spfxpersona.tsx</STRONG> our main component. here we will call APIs and render the child component here.</DIV> <DIV>&nbsp;</DIV> <DIV class="lia-indent-padding-left-30px">Create a state interface and initialize a user state.</DIV> <DIV class="lia-indent-padding-left-30px">At here we are getting the user from a particular group ID so first call API to get users from the group.</DIV> <DIV class="lia-indent-padding-left-30px">And then we will get user profile properties to get users' profile picture so after calling the get users method we will call API to get user profile properties.</DIV> <DIV class="lia-indent-padding-left-30px">And then render the component.</DIV> <DIV class="lia-indent-padding-left-30px">&nbsp;</DIV> <DIV><LI-CODE lang="javascript">import * as React from 'react'; import styles from './Spfxpersona.module.scss'; import { ISpfxpersonaProps } from './ISpfxpersonaProps'; import { escape } from '@microsoft/sp-lodash-subset'; import { sp } from "@pnp/sp/presets/all"; import { RenderProfilePicture } from '../Common/Components/RenderProfilePicture/RenderProfilePicture' export interface ISpfxpersonaWebPartState { users: any[] } export default class Spfxpersona extends React.Component&lt;ISpfxpersonaProps, ISpfxpersonaWebPartState&gt; { constructor(props: ISpfxpersonaProps) { super(props); this.state = { users: [] } } private async getUserProfileUrl(loginName: string) { const userPictureUrl = await sp.profiles.getUserProfilePropertyFor(loginName, 'PictureURL'); return userPictureUrl; } private async getSiteUsers() { const grpUsers = await sp.web.siteGroups.getById(3).users(); this.setState({ users: grpUsers }) } public componentDidMount() { this.getSiteUsers() } public render(): React.ReactElement&lt;ISpfxpersonaProps&gt; { return ( &lt;div className={styles.spfxpersona}&gt; &lt;span&gt;USERS WITH PERSONA CARD&lt;/span&gt; {this.state.users.map(m =&gt; &lt;RenderProfilePicture loginName={m.LoginName} displayName={m.Title} getUserProfileUrl={() =&gt; this.getUserProfileUrl(m.LoginName)} &gt;&lt;/RenderProfilePicture&gt; )} &lt;/div&gt; ); } } </LI-CODE></DIV> <DIV class="lia-indent-padding-left-30px">&nbsp;</DIV> <DIV> <DIV id="pastingspan1">Now serve the application using the below command,</DIV> <DIV>&nbsp;</DIV> <PRE>gulp serve</PRE> <DIV>&nbsp;</DIV> <DIV> <DIV id="pastingspan1">Now test the webpart in SharePoint-SiteURL + /_layouts/15/workbench.aspx.</DIV> <DIV>&nbsp;</DIV> <H2>Output</H2> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Output.png" style="width: 315px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/287813iB1FABBA98F6A0A91/image-size/large?v=v2&amp;px=999" role="button" title="Output.png" alt="Output.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Find the full source code <A href="#" target="_blank" rel="noopener">here</A>.</P> <P>&nbsp;</P> <P>&nbsp;</P> <H2>Summary</H2> <P>&nbsp;</P> <P>In this article, we have seen the step-by-step implementation of how to use a persona card to show the users' profile picture.<BR /><BR />I hope this helps, if this helps you then share it with others.<BR /><BR />Sharing is caring!</P> </DIV> </DIV> </DIV> Thu, 10 Jun 2021 12:56:25 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-use-fluent-ui-react-persona-control-in-spfx/ba-p/2415229 ChandaniPrajapati 2021-06-10T12:56:25Z Microsoft 365 PnP Community – June 2021 update https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-june-2021-update/ba-p/2400494 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="pnp-june-promo-summary.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/287809iD44E0A72FAB745D6/image-size/large?v=v2&amp;px=999" role="button" title="pnp-june-promo-summary.png" alt="pnp-june-promo-summary.png" /></span></P> <P><!-- wp:paragraph --></P> <P>&nbsp;</P> <P>Microsoft 365 Patterns and Practices (PnP) Community June 2021 update is out with a summary of the latest guidance, samples, and solutions from Microsoft or from the community for the community. This article is a summary of all the different areas and topics around the community work we do around Microsoft 365 ecosystem during the past month. Thank you for being part of this success. <EM>Sharing is caring!</EM></P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:heading {"level":1} --></P> <H1>What is Microsoft 365 Community (PnP)</H1> <P><!-- /wp:image --><!-- wp:paragraph --></P> <P><A href="#" target="_blank" rel="noopener">Microsoft 365 PnP</A> is a nick-name for Microsoft 365 platform community activities coordinated by numerous teams inside of the Microsoft 365 engineering organizations. PnP is a community-driven open source initiative where Microsoft and external community members are sharing their learning's around implementation practices for Microsoft 365.</P> <P>&nbsp;</P> <P>Topics vary from Microsoft Viva, Microsoft Graph, Microsoft Teams, OneDrive and SharePoint. Active development and contributions happen in GitHub by providing contributions to the samples, reusable components, and documentation for different areas. PnP is owned and coordinated by Microsoft engineering, but this is work done by the community for the community.</P> <P>&nbsp;</P> <UL> <LI>See more details from <A href="#" target="_blank" rel="noopener">New Microsoft 365 Patterns and Practices (PnP) team model with new community leads</A></LI> </UL> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:paragraph --></P> <P>The initiative is facilitated by Microsoft, but we have multiple community members as part of the PnP team (see team details in end of the article) and we are always looking to extend the PnP team with more community members. Notice that since this is open source community initiative, so there’s no SLAs for the support for the samples provided through GitHub. Obviously, all officially released components and libraries are under official support from Microsoft.</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:paragraph --></P> <P>Some key statistics around <A href="#" target="_blank" rel="noopener">Microsoft 365 PnP initiative</A> from May 2021:</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>Unique visitors during the past 2 weeks in <A href="#" target="_blank" rel="noopener">PnP</A>, <A href="#" target="_blank" rel="noopener">OneDrive</A>, <A href="#" target="_blank" rel="noopener">Microsoft-Search</A>, <A href="#" target="_blank" rel="noopener">OfficeDev</A> and <A href="#" target="_blank" rel="noopener">SharePoint GitHub organization</A> repositories - 63,134</LI> <LI>Overall unique contributors in the <A href="#" target="_blank" rel="noopener">PnP</A>, <A href="#" target="_blank" rel="noopener">OneDrive</A>, <A href="#" target="_blank" rel="noopener">Microsoft-Search</A>, <A href="#" target="_blank" rel="noopener">OfficeDev</A> and <A href="#" target="_blank" rel="noopener">SharePoint</A> GitHub organizations - 1,840</LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft 365 Community (PnP) YouTube channel</A> had 97,126 views with 6,354 hours of watch time and 22,758 subscribers</LI> <LI><A href="#" target="_self">Microsoft 365 Developer YouTube channel</A> had 53,533 views with 3,384 hours of watch time and 13,998 subscribers</LI> </UL> <P>&nbsp;</P> <P><!-- /wp:list --><!-- wp:paragraph --></P> <P>Most viewed videos in the <A href="#" target="_blank" rel="noopener">Microsoft 365 Community (PnP) YouTube channel</A> during May 2021:</P> <P>&nbsp;</P> <OL> <LI><A href="#" target="_self">Introduction to Microsoft Teams Developer Portal</A> |&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Karthig Balendran</A> (Microsoft) | 5,543</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft Teams Meeting Questionnaire App with SharePoint Framework</A> |&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Nanddeep Nachan</A> | 4,311</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Building a beautifully designed Intranet with SharePoint -&nbsp;latest design and branding capabilities</A> |&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Cathy Dew</A> (Microsoft) &amp; <A href="#" target="_blank" rel="noopener">Katie Swanson</A> (Microsoft) | 3,631</SPAN></LI> <LI><A href="#" target="_self">Microsoft Lists integration with Power BI</A> | <A href="#" target="_self">Mark Kashman</A> (Microsoft) | 3,416</LI> <LI><A href="#" target="_blank" rel="noopener">Getting started with Site Designs in SharePoint Online</A> - <A href="#" target="_blank" rel="noopener">Laura Kokkarinen</A> (Sulava) | 2,985</LI> <LI><A href="#" target="_blank" rel="noopener">Working with Microsoft Lists (webinar)</A> - Harini Saladi, <A href="#" target="_blank" rel="noopener">Miceile Barrett</A>, <A href="#" target="_blank" rel="noopener">Chakkaradeep Chandran</A> and <A href="#" target="_blank" rel="noopener">Mark Kashman</A> | 2,925</LI> <LI><A href="#" target="_blank" rel="noopener">Architecting Your Intranet</A> | <A href="#" target="_blank" rel="noopener">Melissa Torres</A> (Microsoft) | 2,024</LI> <LI><A href="#" target="_self">SharePoint Framework Tutorial 1 - HelloWorld WebPart</A> | 1,992</LI> <LI><A href="#" target="_blank" rel="noopener">Introducing: New Employee Onboarding - a Microsoft Teams app template</A> | <SPAN><A href="#" target="_blank" rel="noopener">Nidhi Sharma</A> (Microsoft)&nbsp;</SPAN>| 1,890</LI> <LI><A href="#" target="_blank" rel="noopener">Getting started on deploying Viva Connections for Microsoft Teams desktop</A> | 1,751</LI> </OL> <P>&nbsp;</P> <P>Most viewed videos in the <A href="#" target="_blank" rel="noopener">Microsoft 365 Developer YouTube channel</A> during May 2021:</P> <P>&nbsp;</P> <OL> <LI><A href="#" target="_self">Build the next generation of collaborative apps on the Microsoft Teams platform</A> | 5,286</LI> <LI><A href="#" target="_blank" rel="noopener">Build Outlook Add-ins that integrate your solution seamlessly into your users’ Outlook experience</A>​ | Juan Balmori, Hitesh Manwar - 1,332</LI> <LI><A href="#" target="_blank" rel="noopener">Authenticate and connect with Microsoft Graph - June 2019</A> | 1,317</LI> <LI><A href="#" target="_blank" rel="noopener">An introduction to Microsoft Graph for developers - Part I - Getting started - October 2019</A> | 1,106</LI> <LI><A href="#" target="_self">Office Scripts Tutorial: Introduction to the Code Editor</A> | 1,014</LI> <LI><A href="#" target="_self">Microsoft Graph Explained</A> | 944</LI> <LI><A href="#" target="_blank" rel="noopener">Demo: Getting started with Power Apps Portals</A> |&nbsp;<A href="#" target="_blank" rel="noopener">Brian Knight</A> (Pragmatic Works) | 907</LI> <LI><A href="#" target="_blank" rel="noopener">Create interactive conversational bots for Microsoft Teams</A> | 869</LI> <LI><A href="#" target="_blank" rel="noopener">Build and Office add-in using modern JavaScript tools and technologies</A> | 823</LI> <LI><A href="#" target="_blank" rel="noopener">Getting Started with Microsoft Graph and Application Registration</A> | 787</LI> </OL> <P>&nbsp;</P> <P>Main resources around Microsoft 365 Community:</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>Microsoft 365 Community - <A href="#" target="_blank" rel="noopener">http://aka.ms/m365pnp</A>&nbsp;- One location for all the resources and news around PnP</LI> <LI>Microsoft 365 community blog -&nbsp; <A href="#" target="_self">http://aka.ms/m365pnp/community/blog</A></LI> <LI>Microsoft 365 development blog -&nbsp; <A href="#" target="_blank" rel="noopener">http://aka.ms/m365pnp-blog</A></LI> <LI>Microsoft 365 Community Channel on YouTube - <A href="#" target="_blank" rel="noopener">http://aka.ms/m365pnp-videos</A></LI> <LI>Microsoft 365 Developer YouTube channel - <A href="#" target="_blank" rel="noopener">https://aka.ms/M365DevYouTube</A></LI> </UL> <P>&nbsp;</P> <P><!-- /wp:list --><!-- wp:heading {"level":1} --><!-- /wp:paragraph --><!-- wp:heading {"level":1} --></P> <H2>Latest Dev Blog posts</H2> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P>Here are the latest blog posts and announcements around Microsoft 365 development topics from <A href="#" target="_blank" rel="noopener">https://developer.microsoft.com/en-us/microsoft-365/blogs</A>.</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>26th of May -&nbsp;<A href="#" target="_self">Four new features to build richer apps for Microsoft Teams meetings</A>&nbsp;</LI> <LI>26th of May -&nbsp;<A href="#" target="_blank" rel="noopener">What’s new in Office Platform at Build 2021</A></LI> <LI>25th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Microsoft Graph @ Build 2021</A></LI> <LI>25th of May -&nbsp;<A href="#" target="_blank" rel="noopener">What’s New for the Microsoft 365 Developer | Build 2021</A></LI> <LI>24th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Microsoft Teams App Development Challenge Winners!</A>&nbsp;</LI> <LI>20th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Announcing new file components, MSAL 2 Provider, and SharePoint Framework library in Microsoft Graph Toolkit</A>&nbsp;</LI> <LI>18th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Publish your apps to the Microsoft Teams store</A></LI> <LI>13th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Add custom keyboard shortcuts to your Office Add-ins in Excel</A></LI> <LI>12th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Microsoft Graph .NET SDK v4 adds enhanced features – now in preview</A></LI> <LI>12th of May -&nbsp;<A href="#" target="_self">Five new features enhancing Adaptive Cards in Microsoft Teams</A></LI> <LI>11th of May -&nbsp;<A href="#" target="_self">New renewal offering for your app’s Publisher Attestation and Microsoft 365 Certification</A></LI> <LI>11th of May -&nbsp;<A href="#" target="_self">Microsoft Graph Mailbag – Azure AD applications and users for testing</A></LI> <LI>5th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Understanding the Office Add-ins runtime</A></LI> <LI>5th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Application permissions support for assignments API in Microsoft Graph now available</A></LI> </UL> <P>&nbsp;</P> <P>Latest community posts at <A href="#" target="_self">https://aka.ms/m365pnp/community/blog</A></P> <P>&nbsp;</P> <UL> <LI>30th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Garry Trinder</A> (CPS) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/cli-for-microsoft-365-v3-10/ba-p/2400105" target="_blank" rel="noopener">CLI for Microsoft 365 v3.10</A></LI> <LI>28th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Luise Freese</A>&nbsp;&amp; <A href="#" target="_blank" rel="noopener">Hugo Bernier</A> (Microsoft) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-spotlight-hugo-bernier/ba-p/2377738" target="_blank" rel="noopener">Microsoft 365 PnP Community Spotlight: Hugo Bernier</A></LI> <LI>26th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Mohamed Ashiq Faleel</A> (Tata Consultancy Services) - <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-invite-external-users-to-a-sharepoint-site-or-microsoft/ba-p/2385603" target="_self">How to invite external users to a SharePoint site or Microsoft Team using Power Automate &amp; Graph API</A></LI> <LI>26th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Chandani Prajapati</A>&nbsp;- <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/spfx-webpart-form-validation-using-react-formik/ba-p/2386945" target="_blank" rel="noopener">SPFx webpart form validation using React Formik</A></LI> <LI>22nd of May -&nbsp;<A href="#" target="_blank" rel="noopener">Luise Freese</A>&nbsp;&amp; <A href="#" target="_blank" rel="noopener">Garry Trinder</A> (CPS) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-spotlight-garry-trinder/ba-p/2377740" target="_blank" rel="noopener">Microsoft 365 PnP Community Spotlight: Garry Trinder</A></LI> <LI>20th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Bob German</A> (Microsoft) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/do-you-need-ngrok-to-develop-microsoft-teams-apps/ba-p/2353206" target="_blank" rel="noopener">Do you need ngrok to develop Microsoft Teams apps?</A></LI> <LI>17th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Damien Bird</A> (Aberdeen City Council) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/excel-scripts-and-cloud-flows-data-manipulation/ba-p/2356956" target="_blank" rel="noopener">Excel Scripts and Cloud Flows - Data Manipulation</A></LI> <LI>15th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Luise Freese</A>&nbsp;&amp; <A href="#" target="_blank" rel="noopener">Arjun Menon</A> (Tata Consultancy Services) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/bg-p/Microsoft365PnPBlog" target="_blank" rel="noopener">Microsoft 365 PnP Community Spotlight: Arjun Menon</A></LI> <LI>15th of May - <A href="#" target="_blank" rel="noopener">Alison Collins</A> - <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/react-groups-and-teams-filters/ba-p/2355920" target="_blank" rel="noopener">React Groups and Teams Filters</A></LI> <LI>14th of May - <A href="#" target="_blank" rel="noopener">Paul Bullock</A> (CaPa Creative) - <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/getting-started-with-azure-shell-and-pnp-powershell-with/ba-p/2315482" target="_blank" rel="noopener">Getting Started with Azure Shell and PnP PowerShell with Certificates</A></LI> <LI>13th of May - <A href="#" target="_blank" rel="noopener">Bob German</A> (Microsoft) -&nbsp;<A id="link_26" class="page-link lia-link-navigation lia-custom-event" href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/setting-up-https-for-teams-tabs-projects-without-ngrok/ba-p/2351012" target="_self">Setting up https for Teams Tabs projects - without ngrok</A></LI> <LI>10th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/user/viewprofilepage/user-id/73228" target="_blank" rel="noopener">Ari Gunawan</A> (DevStack) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/community-sample-news-ticker-app-spfx-extensions/ba-p/2337566" target="_self">Community Sample: News Ticker app (SPFx Extensions)</A></LI> <LI>10th of May - <A href="#" target="_blank" rel="noopener">Django Lohn</A> (InSpark)&nbsp;-&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/power-automate-skip-the-parse-json-action-to-reference-data/ba-p/2336866" target="_blank" rel="noopener">Power Apps: source code editing for Canvas Apps</A></LI> <LI>7th of May - <A href="#" target="_blank" rel="noopener">Vesa Juvonen</A> (Microsoft) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/new-microsoft-365-patterns-and-practices-pnp-team-members-may/ba-p/2332415" target="_blank" rel="noopener">New Microsoft 365 Patterns and Practices (PnP) team members – May 2021</A></LI> <LI>7th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Luise Freese</A> -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-spotlight-stefan-bauer/ba-p/2334949" target="_blank" rel="noopener">Microsoft 365 PnP Community Spotlight: Stefan Bauer</A></LI> <LI>7th of May - <A href="#" target="_blank" rel="noopener">Michael Roth</A> (IT-P Information Technology-Partner GmbH) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/let-s-build-a-timer-app-for-teams-meetings/ba-p/2334593" target="_blank" rel="noopener">Let’s build a timer app for Teams meetings</A></LI> <LI>6th of May -&nbsp;<A href="#" target="_blank" rel="noopener">André Lage</A> (Datalynx AG) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/navigate-onedrive-data-with-microsoft-graph-and-mgt-file-list/ba-p/2296730" target="_blank" rel="noopener">Navigate OneDrive data with Microsoft Graph and Mgt-File-List Beta version</A></LI> <LI>6th of May - <A href="#" target="_blank" rel="noopener">Mohamed Derhalli</A> (BDO Canada) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/introducing-react-video-banner-web-part/ba-p/2329002" target="_blank" rel="noopener">Introducing React Video Banner Web Part</A></LI> <LI>6th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Carl Cookson</A> (Avanade) -&nbsp;U<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/using-power-automate-and-graph-api-to-manage-external-access-to/ba-p/2330775" target="_blank" rel="noopener">sing Power Automate And Graph API To Manage External Access To Teams</A></LI> <LI>6th of May - <A href="#" target="_blank" rel="noopener">Hubert Lam</A> (NSW Department of Education) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/simple-reminders-for-any-teams-channel-or-chat-message/ba-p/2319963" target="_blank" rel="noopener">Simple reminders for any Teams Channel or Chat message</A></LI> <LI>5th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Chandani Prajapati</A>&nbsp;-&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-to-get-all-site-collections-with-their-sub-webs-using-pnp/ba-p/2322131" target="_blank" rel="noopener">How to to get all site collections with their sub webs using PnP PowerShell?</A></LI> <LI>5th of May -&nbsp;<A href="#" target="_blank" rel="noopener">Luis Mañez</A> (ClearPeople) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/community-sample-engage-your-users-with-sharepoint-stories-reels/ba-p/2325128" target="_blank" rel="noopener">Community sample: Engage your users with SharePoint stories/reels</A></LI> <LI>4th of May - <A href="#" target="_blank" rel="noopener">Bob German</A> (Microsoft) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/what-s-up-with-markdown/ba-p/2323834" target="_blank" rel="noopener">What's up with Markdown?</A></LI> <LI>1st of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/user/viewprofilepage/user-id/73228" target="_blank" rel="noopener">Ari Gunawan</A> (DevStack) -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-set-up-tailwind-css-in-a-spfx-project/ba-p/2313192" target="_blank" rel="noopener">How to Set Up Tailwind CSS in a SPFx Project</A></LI> </UL> <P>&nbsp;</P> <P>Community call recording blog posts:</P> <P>&nbsp;</P> <UL> <LI>2nd of June -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-graph-community-call-june-2021/ba-p/2405781" target="_blank" rel="noopener">Microsoft Graph community call – June 2021</A></LI> <LI>28th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-community-call-recording-27th-of-may/ba-p/2392027" target="_blank" rel="noopener">Microsoft 365 Developer Community Call recording – 27th of May, 2021</A></LI> <LI>26th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-identity-platform-community-call-may-2021/ba-p/2381364" target="_blank" rel="noopener">Microsoft Identity Platform community call – May 2021</A></LI> <LI>21st of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-20th-of-may-2021/ba-p/2373087" target="_blank" rel="noopener">SharePoint Framework Community Call – 20th of May, 2021</A></LI> <LI>20th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/power-apps-community-call-may-2021/ba-p/2369713" target="_blank" rel="noopener">Power Apps Community Call – May 2021</A></LI> <LI>20th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-identity-platform-community-call-april-2021/ba-p/2315934" target="_blank" rel="noopener">Microsoft Identity Platform community call - April 2021</A></LI> <LI>20th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-graph-community-call-may-2021/ba-p/2326814" target="_blank" rel="noopener">Microsoft Graph community call – May 2021</A></LI> <LI>19th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/office-add-ins-community-call-may-2021/ba-p/2369804" target="_blank" rel="noopener">Office Add-ins community call – May 2021</A></LI> <LI>19th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-teams-community-call-may-2021/ba-p/2365081" target="_blank" rel="noopener">Microsoft Teams Community Call - May 2021</A></LI> <LI>14th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-community-call-recording-13th-of-may/ba-p/2349231" target="_blank" rel="noopener">Microsoft 365 Developer Community Call recording – 13th of May, 2021</A></LI> <LI>11th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-community-call-may-11th-2021/ba-p/2345463" target="_blank" rel="noopener">SharePoint community call - May 11th, 2021</A></LI> <LI>7th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-recording-6th-of-may-2021/ba-p/2331918" target="_blank" rel="noopener">SharePoint Framework Community Call Recording – 6th of May, 2021</A></LI> <LI>3rd of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/office-add-ins-community-call-april-14-2021/ba-p/2318886" target="_blank" rel="noopener">Office Add-ins community call – April 14, 2021</A></LI> </UL> <P>&nbsp;</P> <P>PnP Weekly video blog / podcast shows:</P> <P>&nbsp;</P> <UL> <LI>1st of June -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-129/ba-p/2401546" target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 129</A></LI> <LI>25th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-128/ba-p/2381362" target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 128</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Katie Swanson</A> (Microsoft)</LI> <LI>18th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-127-rick-van-rousselt/ba-p/2361251" target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 127</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Rick Van Rousselt</A> (Advantive)</LI> <LI>11th of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-126-d-arce-hess/ba-p/2341130" target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 126 -&nbsp;</A><SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-126-d-arce-hess/ba-p/2341130" target="_blank" rel="noopener">D'arce Hess</A> (TrnDigital)</SPAN></LI> <LI>3rd of May -&nbsp;<A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-125/ba-p/2318240" target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 125</A> -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Sandy Ussia</A>&nbsp;(Lightning Tools)</LI> </UL> <P>&nbsp;</P> <P>We highly recommend also subscribing on the <A href="#" target="_blank" rel="noopener">Microsoft 365 Developer Podcast show</A>, which is a great show covering also latest development in the Microsoft 365 platform from developer and extensibility perspective.</P> <P>&nbsp;</P> <H2>Community Calls</H2> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P>There are numerous different community calls on different areas. All calls are being recorded and published either from <A href="#" target="_blank" rel="noopener">Microsoft 365 Developer</A> or <A href="#" target="_blank" rel="noopener">Microsoft 365 Community (PnP) YouTube</A> channels. Recordings are typically released within the following 24 hours after the call. You can find a detailed agenda and links to specific covered topics on blog post articles at the <A href="#" target="_blank" rel="noopener">Microsoft 365 developer blog</A> when the videos are published.</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>Adaptive Cards&nbsp; <A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A> - Updates and news around Adaptive Cards with live demos</LI> <LI>Microsoft Graph&nbsp; <A href="#" target="_blank" rel="noopener">https://aka.ms/microsoftgraphcall</A> - Updates and news from Microsoft Graph with live demos</LI> <LI>Microsoft identity platform&nbsp; <A href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A> - Latest on the identity side</LI> <LI>Microsoft Teams&nbsp; <A href="#" target="_blank" rel="noopener">https://aka.ms/microsoftteamscommunitycall</A> - Microsoft Teams monthly update with live demos</LI> <LI>Office Add-ins&nbsp; <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscommunitycall</A> - News and community work around Office add-ins with live demos</LI> <LI>PowerApps &nbsp; <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A> - Monthly summary on PowerApps community with live demos</LI> <LI>SharePoint &nbsp; <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-call</A> - Consists of the latest news, providing credits for all community contributors and live demos typically by SharePoint engineering.</LI> <LI>M365 General Dev SIG&nbsp; &nbsp; <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-sig-call</A>&nbsp; - Bi-weekly - General topics on Microsoft 365 Dev from various aspects - Microsoft Teams, Microsoft Graph Toolkit, Provisioning, Automation, Scripting, Power Automate, Solution design</LI> <LI>SharePoint Framework SIG&nbsp; <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A> - Bi-weekly - Consists of topics around SharePoint Framework and JavaScript-based development in the Microsoft Teams and in SharePoint platform.</LI> </UL> <P>&nbsp;</P> <P><!-- /wp:list --><!-- wp:paragraph --></P> <P>If you are interested in doing a live demo of your solution or sample in these calls, please do reach out to the PnP&nbsp; Team members (contacts later in this post) and they are able to help with the right setup. These are great opportunities to gain visibility for example for existing MVPs, for community members who would like to be MVPs in the future or any community member who'd like to share some of their learnings.</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:heading {"level":1} --></P> <H2>Microsoft 365 Community (PnP) Ecosystem in GitHub</H2> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P>Most of the community driven repositories are in the <A href="#" target="_blank" rel="noopener">PnP GitHub organization</A> as samples are not product specifics as they can contain numerous different solutions or the solution works in multiple different applications.</P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_blank" rel="noopener">PnPjs</A>&nbsp;-&nbsp;PnPjs Framework repository</LI> <LI><A href="#" target="_blank" rel="noopener">CLI Microsoft 365</A>&nbsp;-&nbsp;Cross-OS command line interface to manage Office 365 tenant settings</LI> <LI><A href="#" target="_blank" rel="noopener">generator-spfx</A> - Open-source Yeoman generator which extends the out-of-the-box Yeoman generator for SharePoint with additional capabilities</LI> <LI><A href="#" target="_blank" rel="noopener">generator-teams</A> - Open-source Microsoft Teams Yeoman generator - Bots, Messaging Extensions, Tabs, Connectors, Outgoing Web hooks and more</LI> <LI><A href="#" target="_blank" rel="noopener">teams-dev-samples</A> - Microsoft Teams targeted samples from community and Microsoft engineering</LI> <LI><A href="#" target="_blank" rel="noopener">Sharing is Caring</A> - Getting started on learning how to contribute and be active on the community from GitHub perspective.</LI> <LI><A href="#" target="_blank" rel="noopener">pnpcore </A>- The PnP Core SDK is an SDK designed to work against Microsoft 365 with Microsoft Graph API first approach</LI> <LI><A href="#" target="_blank" rel="noopener">powershell</A> -&nbsp; PnP PowerShell module which is PowerShell Core module targeted for Microsoft 365</LI> <LI><A href="#" target="_blank" rel="noopener">pnpframework</A> - PnP Framework is a .Net Standard 2.0 library targeting Microsoft 365 containing the PnP Provisioning engine and a ton of other useful extensions</LI> <LI><A href="#" target="_blank" rel="noopener">teams-dev-samples</A> - Samples around the Microsoft Teams development models from Microsoft and from the community</LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-fx-webparts</A> - Client-side web part samples from community and Microsoft engineering</LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-fx-extensions</A>&nbsp;- Samples and tutorial code around SharePoint Framework Extensions</LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-fx-library-components</A> - Samples and tutorial code around the SharePoint Framework library components</LI> <LI><A href="#" target="_blank" rel="noopener">sp-starter-kit</A>&nbsp;- Starter kit solution for SharePoint modern experiences</LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-fx-vs-extension</A>&nbsp;- Open source Visual Studio IDE extension for creating SharePoint Framework solutions&nbsp;in the Visual Studio 2015 or 2017</LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-build-extensions</A>&nbsp;-&nbsp;Different build extensions like gulp tasks and gulp plugins from the community and engineering around SharePoint development</LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-solutions</A>&nbsp;- Repository for more polished and fine-tuned reusable solutions build with SharePoint Framework</LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-samples</A> - Repository for other samples related on the SharePoint development topics - WebHooks etc.</LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-fx-controls-react</A>&nbsp;-&nbsp;Reusable content controls for SharePoint Framework solutions build with React</LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-fx-property-controls</A>&nbsp;- Reusable property pane controls to be used in web parts</LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-list-formatting</A>&nbsp;- Open-source community-driven repository for the column and view formatting JSON definitions</LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-site-scripts</A>&nbsp;- Open-source community-driven repository for community Site Designs and Site Scripts</LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-modernization</A> - Tooling and guidance around modernizing SharePoint from classic to modern</LI> <LI><A href="#" target="_blank" rel="noopener">sp-power-platform-solutions</A> - Solution and sample code for SharePoint Power Platform solutions</LI> <LI><A href="#" target="_blank" rel="noopener">powerfx-samples</A> -&nbsp;<SPAN>Samples that demonstrate different usage patterns for the Power Fx low-code programming language<BR /></SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">powerapps-samples</A> - Samples&nbsp;that demonstrate different usage patterns for Power Apps</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">powerautomate-samples</A> -&nbsp;Samples that demonstrate different usage patterns for Power Automate</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">powerva-samples</A> -&nbsp;Samples that demonstrate different usage patterns for Power Virtual Agents</SPAN></LI> </UL> <P>&nbsp;</P> <P>All SharePoint specific repositories or services supported directly by Microsoft are located in the SharePoint GitHub organization<BR /><BR /></P> <UL> <LI><A href="#" target="_blank" rel="noopener">sp-dev-docs</A> - Source for new SharePoint dev center documentation exposed from <A href="#" target="_blank" rel="noopener">http://docs.microsoft.com/en-us/sharepoint/dev</A></LI> <LI><A href="#" target="_blank" rel="noopener">sp-dev-provisioning-templates</A> - Open-source templates used by the <A href="#" target="_blank" rel="noopener">SharePoint Look Book site</A></LI> <LI><A href="#" target="_blank" rel="noopener">sp-provisioning-service</A> - Source code of the <A href="#" target="_blank" rel="noopener">SharePoint look book site</A></LI> </UL> <P><!-- /wp:list --><!-- wp:paragraph --></P> <P>&nbsp;</P> <P>PnP specific repositories - solution designs and tooling</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI><A href="#" target="_blank" rel="noreferrer noopener">PnP</A>&nbsp;- Main repository for SP add-in, Microsoft Graph&nbsp;etc. samples</LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">PnP-Sites-Core</A>&nbsp;- Office Dev PnP Core component</LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">PnP-PowerShell</A>&nbsp;- Office Dev PnP PowerShell Cmdlets</LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">PnP-Tools</A>&nbsp;- Tools and scripts targeted more for IT Pro's and for on-premises for SP2013 and SP2016</LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">PnP-Provisioning-Schema</A>&nbsp;- PnP Provisioning engine schema repository</LI> <LI><A href="#" target="_blank" rel="noopener">PnP-IdentityModel</A>&nbsp;- Open source replacement of&nbsp;Microsoft.IdentityModel.Extensions.dll</LI> </UL> <P><!-- /wp:list --><!-- wp:paragraph --><!-- /wp:paragraph --><!-- wp:list --><!-- /wp:list --><!-- wp:paragraph --></P> <P>&nbsp;</P> <P>Repositories in the GitHub <A href="#" target="_blank" rel="noopener">Microsoft Search</A> organization controlled by the PnP initiative</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI><A href="#" target="_blank" rel="noopener">pnp-modern-search</A> -&nbsp; Home of PnP Modern Search solutions, see more from the <A href="#" target="_blank" rel="noopener">documentation</A></LI> </UL> <P>&nbsp;</P> <P>Other related resources from GitHub</P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_blank" rel="noopener">Microsoft Graph Toolkit</A> in GitHub - Community contributions welcome!</LI> <LI><A href="#" target="_blank" rel="noopener">Office add-in Patterns and Practices in GitHub</A> - Community contributions welcome!</LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft Graph</A> GitHub organization</LI> <LI><A href="#" target="_blank" rel="noopener">OfficeDev GitHub organization</A> - Includes all Microsoft Teams samples from Microsoft<BR /><BR /></LI> </UL> <P><!-- /wp:list --><!-- wp:heading {"level":1} --></P> <H2>What's supportability story around the community tooling and assets?</H2> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P>Following statements apply across all of the community lead and contributed samples and solutions, including samples, core component(s) and solutions, like <A href="#" target="_blank" rel="noopener">SharePoint Starter Kit</A>, <A href="#" target="_self">yo teams</A> or <A href="#" target="_blank" rel="noopener">PnP PowerShell</A>. All Microsoft released SDKs and tools are supported based on the specific tool policies.</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>PnP guidance and samples are created by Microsoft &amp; by the Community</LI> <LI>PnP guidance and samples are maintained by Microsoft &amp; community</LI> <LI>PnP uses supported and recommended techniques</LI> <LI>PnP is an&nbsp;open-source initiative&nbsp;by the community – people who work on the initiative for the benefit of others, have their normal day job as well</LI> <LI>PnP is NOT a product and therefore it’s not supported by Premier Support or other official support channels</LI> <LI>PnP is supported in similar ways as other open source projects done by Microsoft with support from the community by the community</LI> <LI>There are numerous partners that utilize PnP within their solutions for customers. Support for this is provided by the Partner. When PnP material is used in deployments, we recommend being clear with your customer/deployment owner on the support model</LI> </UL> <P>&nbsp;</P> <P>Please see the specifics on the supportability on the tool, SDK or&nbsp; component repository or download page.</P> <P>&nbsp;</P> <H2>Microsoft 365 PnP team model</H2> <P>&nbsp;</P> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="pnp-community-model.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261738iE62C2523C7D5399F/image-size/large?v=v2&amp;px=999" role="button" title="pnp-community-model.png" alt="pnp-community-model.png" /></span></P> <P>&nbsp;</P> <P>In April 2020 we announced our new <A href="#" target="_blank" rel="noopener">Microsoft 365 PnP team model</A> and grew the MVP team quite significantly. PnP model exists for having more efficient engagement between Microsoft engineering and community members. Let's build things together. Your contributions and feedback is always welcome! During August, we also crew the team with 5 new members. PnP Team coordinates and leads the different open-source and community efforts we execute in the Microsoft 365 platform.</P> <P>&nbsp;</P> <P>We welcome all community members to get involved on the community and open-source efforts. Your input do matter!</P> <P>&nbsp;</P> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/new-microsoft-365-patterns-and-practices-pnp-team-members-may/ba-p/2332415" target="_self">New Microsoft 365 Patterns and Practices (PnP) team members - May 2021</A>&nbsp;-&nbsp;<A href="#" target="_blank" rel="noopener">Gautam Sheth</A> (Valo) and&nbsp;<A href="#" target="_blank" rel="noopener">Patrick Lamber</A> (Experts Inside AG)</LI> <LI><A href="#" target="_blank" rel="noopener">New Microsoft 365 Patterns and Practices (PnP) team members - February 2021</A>&nbsp;-&nbsp;<SPAN>&nbsp;</SPAN><A title="https://www.twitter.com/aprildunnam" href="#" target="_blank" rel="noreferrer noopener nofollow">April Dunnam</A><SPAN>&nbsp;(Microsoft),&nbsp;<A href="#" target="_self" rel="nofollow noopener noreferrer">Emily Mancini</A>&nbsp;(Sympraxis Consulting) and&nbsp;<A href="#" target="_blank" rel="nofollow noopener noreferrer">Veronique Lengelle</A>&nbsp;(CPS)</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">New Microsoft 365 Patterns and Practices (PnP) team members - December 2020</A>&nbsp;-&nbsp;<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="nofollow noopener noreferrer">Luise Freese</A><SPAN>&nbsp;and&nbsp;<A href="#" target="_blank" rel="nofollow noopener noreferrer">Sébastien Levert</A>&nbsp;</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">New Microsoft 365 Patterns and Practices (PnP) team members - August 2020</A>&nbsp;-&nbsp;<A href="#" target="_blank" rel="nofollow noopener noreferrer">Albert-Jan Schot</A><SPAN>&nbsp;(Portiva),&nbsp;</SPAN><A href="#" target="_blank" rel="nofollow noopener noreferrer">Koen Zomers</A><SPAN>&nbsp;(Microsoft),&nbsp;</SPAN><A href="#" target="_blank" rel="nofollow noopener noreferrer">Paul Bullock</A><SPAN>&nbsp;(CaPa Creative),&nbsp;</SPAN><A href="#" target="_blank" rel="nofollow noopener noreferrer">Rabia Williams</A><SPAN>&nbsp;(Microsoft) and</SPAN><SPAN>&nbsp;<A href="#" target="_blank" rel="nofollow noopener noreferrer">Yannick Plenevaux</A>&nbsp;(PVX Solutions)</SPAN></LI> </UL> <P>&nbsp;</P> <P>Got feedback, suggestions or ideas? - Please let us know. Everything we do in this program is <STRONG>for your benefit</STRONG>. Feedback and ideas are more than welcome so that we can adjust the process for benefitting you even more.</P> <P>&nbsp;</P> <P><!-- /wp:list --><!-- wp:heading {"level":1} --></P> <H2 id="latest-changes">Area-specific updates</H2> <P>These are different areas which are closely involved on the community work across the PnP initiative. Some are lead and coordinated by engineering organizations, some are coordinated by the community and MVPs.</P> <P>&nbsp;</P> <H3>Microsoft Graph Toolkit</H3> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="graph-toolkit.jpg" style="width: 527px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261739iA57BB73461170C2E/image-size/large?v=v2&amp;px=999" role="button" title="graph-toolkit.jpg" alt="graph-toolkit.jpg" /></span></P> <P>&nbsp;</P> <P>Microsoft Graph Toolkit is engineering lead initiative, which works closely with the community on the open-source areas. The Microsoft Graph Toolkit is a collection of reusable, framework-agnostic web components and helpers for accessing and working with Microsoft Graph. The components are fully functional right of out of the box, with built in providers that authenticate with and fetch data from Microsoft Graph.</P> <P>&nbsp;</P> <UL> <LI>Latest version currently is 2.2. See the v2.2 announcement blog post for more details - <A href="#" target="_self">Announcing new file components, MSAL 2 Provider, and SharePoint Framework library in Microsoft Graph Toolkit </A></LI> <LI><A href="#" target="_blank" rel="noopener">mgt.dev</A> - Microsoft Graph Toolkit Playground</LI> <LI><A href="#" target="_blank" rel="noopener">Getting started with Microsoft Graph Toolkit guidance video</A> from developer community call by <A href="#" target="_blank" rel="noopener">Beth Pan</A> (Microsoft)</LI> <LI>Latest code and preview versions from <A href="#" target="_self">https://aka.ms/mgt</A></LI> </UL> <P>&nbsp;</P> <P>All the latest updates on the Microsoft Graph Toolkit is being presented in our bi-weekly Microsoft 365 Generic Dev community call, including the latest community contributors.</P> <P>&nbsp;</P> <P><!-- /wp:heading --><!-- wp:heading {"level":3} --></P> <H3>Microsoft 365 Community docs</H3> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="community-dcos.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261740i45A51B070D635369/image-size/large?v=v2&amp;px=999" role="button" title="community-dcos.png" alt="community-dcos.png" /></span></P> <P>&nbsp;</P> <P>Community docs model was announced in the April 2020 and it's great to see the interest for community to help each other by providing new guidance on the non-dev areas. See more on the announcement from the SharePoint blog - <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-sharepoint-blog/announcing-the-microsoft-365-community-docs/ba-p/1288203" target="_blank" rel="noopener">Announcing the Microsoft 365 Community Docs</A>. We do welcome contributions from the community - our objective is to build a valuable location for articles from Microsoft and community together.</P> <P>&nbsp;</P> <P>Have ideas for articles or want to contribute yourself? - Get involved! Here are also some additional resources explaining the model more detailed.</P> <P>&nbsp;</P> <UL> <LI>YouTube - <A href="#" target="_blank" rel="noopener">Introducing Microsoft 365 Community Docs</A></LI> <LI><A href="#" target="_blank" rel="noopener">GitHub issue list</A> with articles ideas</LI> </UL> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:heading {"level":3} --><!-- /wp:paragraph --><!-- wp:heading {"level":3} --><!-- /wp:list --><!-- wp:heading {"level":3} --><!-- /wp:list --><!-- wp:heading {"level":3} --></P> <H3>SharePoint Framework development samples</H3> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="spfx-gallery.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261742i96F265E42A76DB51/image-size/large?v=v2&amp;px=999" role="button" title="spfx-gallery.png" alt="spfx-gallery.png" /></span></P> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P>These are the updated SharePoint Framework samples which are available from the the different repositories.</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>New sample&nbsp;<A href="#" target="_self">react-news-banner</A> by&nbsp;<A href="#" target="_self">João Mendes</A> which&nbsp;<SPAN>shows news information as a Banner, this information come from a list defined in any site, this web part can be installed on 2019, and SharePoint Online.</SPAN></LI> <LI><SPAN>New sample&nbsp;<A href="#" target="_self">react-organization-chart</A> by</SPAN>&nbsp;<A href="#" target="_self">João Mendes</A> which&nbsp;<SPAN>shows an organization chart based on specified user, and user can navigate to show company organization. This web part can be installed on SharePoint Server 2019, and SharePoint Online.</SPAN></LI> <LI><SPAN>Updates to&nbsp;<A href="#" target="_self">react-list-form</A> by</SPAN>&nbsp;<A href="#" target="_blank" rel="noopener">Ari Gunawan</A>&nbsp;<SPAN>which&nbsp;provides a working example of implementing generic SharePoint list forms using the&nbsp;SharePoint Framework (SPFx)&nbsp;and the&nbsp;<EM>React</EM>&nbsp;and&nbsp;<EM>Office UI Fabric</EM>&nbsp;libraries.</SPAN></LI> <LI><SPAN>Updates to&nbsp;<A href="#" target="_self">react-calendar</A> by&nbsp;<A href="#" target="_self">Eli H. Schei</A> which&nbsp;allows you to manage events in a calendar. Uses a list of existing calendars on any website.</SPAN></LI> <LI><SPAN>Updates to&nbsp;<A href="#" target="_self">react-onedrive-finder</A> by&nbsp;<A href="#" target="_self">André Lage</A> which&nbsp;access drives from OneDrive and navigate between his content using Graph OneDrive and Site API and Microsoft Graph Toolkit react controls.</SPAN></LI> <LI><SPAN>Updates to&nbsp;<A href="#" target="_self">react-pagecontributors</A> by&nbsp;<A href="#" target="_blank" rel="noopener">Ari Gunawan</A>&nbsp;which displays page contributors in reverse chronological order.</SPAN></LI> <LI>Updates to&nbsp;<A href="#" target="_blank" rel="noopener">react-datatable</A> by&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Chandani Prajapati</A>&nbsp;which&nbsp;provides easy way to render SharePoint custom list in datatable view with all the necessary features.</SPAN></LI> <LI><SPAN>Other adjustments to numerous&nbsp;SPFx web part and extension samples by our awesome community members!</SPAN></LI> </UL> <P>&nbsp;</P> <P>How to find what's relevant for you? Take advantage of our SharePoint Framework web part and extension sample galleries - includes also solutions which work in Microsoft Teams</P> <P>&nbsp;</P> <UL> <LI>Web Part sample gallery - <A href="#" target="_blank" rel="noopener">http://aka.ms/spfx-webparts</A></LI> <LI>Extensions sample gallery - <A href="#" target="_blank" rel="noopener">http://aka.ms/spfx-extensions</A></LI> </UL> <P>&nbsp;</P> <H3>Microsoft Teams community samples</H3> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="teams-samples-promo.jpg" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261745i9E77F4A84CE0145E/image-size/large?v=v2&amp;px=999" role="button" title="teams-samples-promo.jpg" alt="teams-samples-promo.jpg" /></span></P> <P>&nbsp;</P> <P>These are samples which have been contributed on the community samples since last summary. We do welcome all Microsoft Teams samples to this gallery. They can be implemented using in any technology.</P> <P>&nbsp;</P> <UL> <LI>New sample&nbsp;<A href="#" target="_self">msgext-graph-action-config</A> by&nbsp;<A href="#" target="_blank" rel="nofollow noopener">Markus Moeller</A>&nbsp;which&nbsp;<SPAN>is a action based messaging extension created using the Teams Yeoman Generator.&nbsp;It authenticates against Microsoft Graph via SSO and on-behalf flow from the frontend and recieves documents to be posted as adaptive card to the message compose box of a channel.&nbsp;</SPAN></LI> <LI><SPAN>New sample&nbsp;<A href="#" target="_self">tab-context-viewer</A> by</SPAN>&nbsp;<A href="#" target="_blank" rel="noopener">Sébastien Levert</A> (Microsoft) which is&nbsp;<SPAN>showcasing every Teams SDK context in every type of tab</SPAN></LI> <LI><SPAN>New sample&nbsp;<A href="#" target="_blank" rel="noopener">msgext-action-preview</A> by&nbsp;</SPAN><A href="#" target="_blank" rel="nofollow noopener">Markus Moeller</A>&nbsp;which is a&nbsp;<SPAN>small demo sample is a&nbsp;</SPAN><STRONG>action</STRONG><SPAN>&nbsp;based messaging extension created using the Teams Yeoman Generator.</SPAN><SPAN>&nbsp;It posts a simple adaptive card to the Team's news channel but 'as a bot' and with an action to update the same adaptive card again and again.</SPAN></LI> </UL> <P>&nbsp;</P> <P>If you are interested on Microsoft Teams samples, we have just released also new <A href="#" target="_blank" rel="noopener">Microsoft Teams sample gallery</A>. Contributions to <A href="#" target="_blank" rel="noopener">Microsoft Teams samples</A> is also more than welcome. This gallery already surfaces all Microsoft samples, <A href="#" target="_blank" rel="noopener">Microsoft Teams app templates</A> and community samples.</P> <P>&nbsp;</P> <H3>Power Platform samples</H3> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="power-platform-samples.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/279633i788F8D894CE8B615/image-size/large?v=v2&amp;px=999" role="button" title="power-platform-samples.png" alt="power-platform-samples.png" /></span></P> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P><BR />These are the updated Power Platform samples which are available from the new Power Platform sample gallery.</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>New sample&nbsp;<A href="#" target="_self">always-reply-to-request</A> by<SPAN> <A href="#" target="_blank" rel="noopener">Remy Blok</A>&nbsp;(Prodware) providing a pattern for making sure that the Flow always provides a responds to a request in Power Automate.</SPAN></LI> <LI><SPAN>New sample&nbsp;<A href="#" target="_self">DeskReservation</A> by&nbsp;<A href="#" target="_blank" rel="noopener">April Dunnam</A> (Microsoft) as&nbsp;a fully functional phone-based Canvas Power App template which provides functionality to manage and book desk reservations.&nbsp;</SPAN></LI> <LI><SPAN>New sample <A href="#" target="_self">fluentui-custom-theme</A> by&nbsp;<A href="#" target="_blank" rel="noopener">Fabio Franzini</A>&nbsp;implementing a custom theme (for tablet layout) to apply the style of the Fluent UI controls to the canvas controls with extensive modification of the "Default Theme" inside the&nbsp;<CODE>theme.json</CODE>&nbsp;file.</SPAN></LI> <LI><SPAN>New sample&nbsp;<A href="#" target="_self">custom-font-samples</A> by&nbsp;<A href="#" target="_blank" rel="noopener">Matthew Devaney</A>&nbsp;(Hitachi Solutions) providing&nbsp;177 custom font samples for Power App</SPAN></LI> <LI><SPAN>New sample&nbsp;<A href="#" target="_blank" rel="noopener">calendar-component</A> by&nbsp;<A href="#" target="_blank" rel="noopener">April Dunnam</A> (Microsoft) providing a&nbsp;re-usable component that allows you to display events in a calendar.</SPAN></LI> <LI>New sample <A href="#" target="_blank" rel="noopener">color-functions</A> by&nbsp;<A href="#" target="_blank" rel="noopener">P3N</A> showing f<SPAN>unctions that calculate the contrast between two colors</SPAN></LI> </UL> <P>&nbsp;</P> <P>How to find what's relevant for you? Take advantage of our Power Platform sample gallery.</P> <P>&nbsp;</P> <UL> <LI>Power Platform sample gallery -&nbsp;<A href="#" target="_self">https://aka.ms/powerplatform-samples</A></LI> </UL> <P>&nbsp;</P> <H3>Microsoft 365 Script Samples</H3> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="script-gallery.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/287810i07695D4C2B844F3E/image-size/large?v=v2&amp;px=999" role="button" title="script-gallery.png" alt="script-gallery.png" /></span></P> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P><BR />We also released new Microsoft 365 Script Sample gallery within past month. We welcome all scripts on Microsoft 365 automation to this centralized repository, targeted to help to manage and automate day-to-day operations.</P> <P>&nbsp;</P> <P>If you have any existing scripts which you'd be willing to share with others - please submit a pull request or contact the PnP team members to get started on getting more closely involved on this initiative.&nbsp;</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>Microsoft 365 Script Samples - <A href="#" target="_self">https://aka.ms/script-samples</A></LI> </UL> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:image {"id":3821,"sizeSlug":"large"} --><!-- /wp:image --><!-- wp:heading {"level":3} --></P> <H3>Sharing is Caring initiative</H3> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sharing-is-caring-promo-1024x576.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/261747i39E00EA5029AD282/image-size/large?v=v2&amp;px=999" role="button" title="sharing-is-caring-promo-1024x576.png" alt="sharing-is-caring-promo-1024x576.png" /></span></P> <P>&nbsp;</P> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P>The "Sharing Is Caring" imitative is targeted for learning the basics around making changes in Microsoft Docs, in GitHub, submitting pull requests to the PnP repositories and in GitHub in general. Take advantage of this instructor lead training for learning how to contribute to docs or to open-source solutions. Everyone is welcome to learn how to get started on contributing to open-source docs or code!</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>See more from the <A href="#" target="_blank" rel="noopener">guidance documentation</A> - including all upcoming instructor lead sessions which you can participate!</LI> </UL> <P>&nbsp;</P> <P><!-- /wp:list --><!-- wp:image {"id":3823,"sizeSlug":"large"} --><!-- /wp:image --><!-- wp:heading {"level":3} --></P> <P><!-- /wp:paragraph --><!-- wp:image {"id":3824,"sizeSlug":"large"} --><!-- /wp:image --><!-- wp:heading {"level":3} --></P> <H3>Different Microsoft 365 related open-source initiatives build together with the community</H3> <P>See exact details on the latest updates from the specific open-source project release notes. You can also follow up on the project updates from our community calls. There are numerous active projects which are releasing new versions with the community even on weekly basis. Get involved!</P> <P>&nbsp;</P> <P><!-- /wp:heading --><!-- wp:list --></P> <UL> <LI><STRONG>Microsoft Look Book</STRONG> - Discover the modern experiences you can build with SharePoint in Microsoft 365. Look book provides design examples for SharePoint Online which can be automatically provisioned to any tenant in the world. See more from <A href="#" target="_blank" rel="noopener">https://lookbook.microsoft.com</A>. This service is also provided as open-source solution sample from <A href="#" target="_blank" rel="noopener">GitHub</A>.</LI> <LI><STRONG>yo teams</STRONG> - Open-source Yeoman generator for Microsoft Teams extensibility. Supports creation of bots, messaging extensions, tabs (with SSO), connectors and outgoing Webhooks. See more from <A href="#" target="_blank" rel="noopener">https://aka.ms/yoteams</A>.</LI> <LI><STRONG>PnP Framework</STRONG> - .NET Standard 2.0 SDK containing the classic PnP Sites Core features for SharePoint Online. More around this package from <A href="#" target="_blank" rel="noopener">GitHub</A>.</LI> <LI><STRONG>PnP Core SDK</STRONG> - The PnP Core SDK is an SDK designed to work for Microsoft 365 with Graph API first approach. It provides a unified object model for working with SharePoint Online and Teams which is agnostic to the underlying API's being called. See more around the SDK from <A href="#" target="_blank" rel="noopener">documentation</A>.</LI> <LI><STRONG>PnP PowerShell</STRONG> - PnP PowerShell is a .NET Core 3.1 / .NET Framework 4.6.1 based PowerShell Module providing over 400 cmdlets that work with Microsoft 365 environments and more specifically SharePoint Online and Microsoft Teams. See more details from <A href="#" target="_blank" rel="noopener">documentation</A>.</LI> <LI><STRONG>Reusable SharePoint Framework controls</STRONG> - Reusable controls for SharePoint Framework web part and extension development. Separate projects for <A href="#" target="_blank" rel="noopener">React content controls</A> and <A href="#" target="_blank" rel="noopener">Property Pane controls for web parts</A>. These controls are using Office UI Fabric React controls under the covers and they are SharePoint aware to increase the productivity of developers.</LI> <LI><STRONG>Office 365 CLI</STRONG> -&nbsp;Using the Office 365 CLI, you can manage your Microsoft Office 365 tenant and SharePoint Framework projects on any platform. See <A href="#" target="_blank" rel="noopener">release notes</A> for the latest updates.</LI> <LI><STRONG>PnPJs</STRONG> - PnPJs encapsulates SharePoint REST APIs and provides a fluent and easily usable interface for querying data from SharePoint sites. It's a replacement of already deprecated pnp-js-core library. See <A href="#" target="_blank" rel="noopener">changelog</A> for the&nbsp;latest updates.</LI> <LI><STRONG>PnP Provisioning Engine and PnP CSOM Core</STRONG> - PnP provisioning engine is part of the PnP CSOM extension. They encapsulate complex business driven operations behind easily usable API surface, which extends out-of-the-box CSOM NuGet packages. See <A href="#" target="_blank" rel="noopener">changelog</A> for the latest updates.</LI> <LI><STRONG>PnP PowerShell</STRONG> - PnP PowerShell cmdlets are open-source complement for the SharePoint Online cmdlets. There are more than 300 different cmdlets to use and you can use them to manage tenant settings or to manipulate actual SharePoint sites. They See <A href="#" target="_blank" rel="noopener">changelog</A> for the latest updates.</LI> <LI><STRONG>PnP Modern Search solution</STRONG> - The PnP 'Modern Search' solution is a set of SharePoint Online modern Web Parts allowing SharePoint super users, webmasters and developers to create highly flexible and personalized search based experiences in minutes. See more details on the different supported capabilities from <A href="#" target="_blank" rel="noopener">https://aka.ms/pnp-search</A>.</LI> <LI><STRONG>Modernization tooling</STRONG> -&nbsp;All tools and guidance on helping you to transform you SharePoint to modern experiences from <A href="#" target="_blank" rel="noopener">http://aka.ms/sppnp-modernize</A>.</LI> <LI><STRONG>SharePoint Starter Kit v2</STRONG> - Building modern experiences with Microsoft Teams flavors for SharePoint Online and SharePoint 2019 - reference solution in <A href="#" target="_blank" rel="noopener">GitHub</A>.</LI> <LI><STRONG>List formatting definitions</STRONG> - Community contributed samples around the column and view formatting in <A href="#" target="_blank" rel="noopener">GitHub</A>.</LI> <LI><STRONG>Site Designs and Site Scripts</STRONG> - Community contributed samples around SharePoint Site Designs and Site Scripts in <A href="#" target="_blank" rel="noopener">GitHub</A>.</LI> <LI><STRONG>DevOps tooling and scripts&nbsp;</STRONG>- Community contributed scripts and tooling automation around DevOps topics (CI/CD) in <A href="#" target="_blank" rel="noopener">GitHub</A>.</LI> <LI><STRONG>Teams provisioning solution</STRONG> - Set of open-source Azure Functions for Microsoft Teams provisioning. See more details from <A href="#" target="_blank" rel="noopener">GitHub</A>.</LI> </UL> <P>&nbsp;</P> <P><!-- /wp:list --><!-- wp:heading {"level":3} --></P> <H3 id="pnp-guidance-articles">Documentation updates</H3> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P>Please see all the Microsoft 365 development documentation updates from the related documentation sets and repositories as listed below:</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>Microsoft Teams platform documentation - <A href="#" target="_blank" rel="noopener">Microsoft Docs</A> | <A href="#" target="_blank" rel="noopener">GitHub</A></LI> <LI>SharePoint Developer documentation - <A href="#" target="_blank" rel="noopener">Microsoft Docs</A> | <A href="#" target="_blank" rel="noopener">GitHub</A></LI> <LI>Microsoft Graph documentation - <A href="#" target="_blank" rel="noopener">Microsoft Docs</A> | <A href="#" target="_blank" rel="noopener">GitHub</A></LI> <LI>Office add-in documentation - <A href="#" target="_blank" rel="noopener">Microsoft Docs</A> | <A href="#" target="_blank" rel="noopener">GitHub</A></LI> </UL> <P>&nbsp;</P> <P><!-- /wp:list --><!-- wp:heading {"level":3} --></P> <H3 id="pnp-guidance-videos">Microsoft 365 Developer and Microsoft 365 Community YouTube video channels</H3> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P>You can find all Microsoft 365 related videos on our YouTube Channel at <A href="#" target="_blank" rel="noopener">http://aka.ms/m365pnp-videos</A> or at <A href="#" target="_blank" rel="noopener">Microsoft 365 Dev</A>. These channels contains already a significant amount of detailed training material, demo videos, and community call recordings.</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:paragraph --></P> <P>Here are the new Microsoft demo or guidance videos released since the last monthly summary:</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI><A href="#" target="_blank" rel="noopener">Elevate user experiences with Universal Actions on Teams and Outlook</A> -&nbsp;Shiladitya Saha (Microsoft)&nbsp;</LI> <LI><A href="#" target="_blank" rel="noopener">Introduction to Viva Connections mobile extensibility model</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Vinit Kumar Baheti</A> (Microsoft) |&nbsp;@vinitbaheti</LI> <LI><A href="#" target="_blank" rel="noopener">Populate your Excel templates dynamically using Office Scripts and Power Automate</A> -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Nancy Wang</A> (Microsoft) | <LI-USER uid="918701"></LI-USER> &amp;&nbsp;<A href="#" target="_blank" rel="noopener">Damien Bird</A> (DamoBird365) | <LI-USER uid="1035201"></LI-USER></SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">SharePoint Syntex integration and automation options</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Bert Jansen</A> (Microsoft) | @o365bert</LI> <LI><A href="#" target="_blank" rel="noopener">How to build and publish a SharePoint Syntex document understanding model</A> -&nbsp;<A href="#" target="_blank" rel="noopener">James Eccles</A> (Microsoft) | @jimdeccles</LI> <LI><A href="#" target="_blank" rel="noopener">Building virtual tour experience with SharePoint spaces 360° tour web part</A> -&nbsp;<SPAN>Matt Crisler (Microsoft)</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Introduction to Microsoft Teams Developer Portal</A> -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Karthig Balendran</A> (Microsoft) | @KarthigBalendr1</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Inspire, inform and prepare employees transition to the new hybrid Workplace transformation site</A> -&nbsp;<SPAN>Holland Kaviani (Microsoft) &amp;&nbsp;<A href="#" target="_blank" rel="noopener">Matt Wolodarsky</A> (Microsoft) | @mwolodarsky&nbsp;</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">SharePoint Syntex: Product overview and latest feature updates</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Sean Squires</A> (Microsoft) | @iamseansquires,&nbsp;<A href="#" target="_blank" rel="noopener">James Eccles</A> (Microsoft) | @jimdeccles and&nbsp;<A href="#" target="_blank" rel="noopener">Bert Jansen</A> (Microsoft) | @o365bert</LI> <LI><A href="#" target="_blank" rel="noopener">Delegated and application permissions in the Microsoft Identity Platform</A> - <SPAN><A href="#" target="_blank" rel="noopener">Philippe Signoret</A> (Microsoft) | @psignoret</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Get started with Azure Static Web Apps | Tips &amp; Tricks</A> -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Dan Wahlin</A> (Microsoft) | @danwahlin</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Registering and updating printer using Microsoft Graph API</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">Managing print job using Microsoft Graph API</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">Debug Microsoft Teams apps without ngrok | Tips &amp; Tricks</A> -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Bob German</A> (Microsoft) | @Bob1German</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Build the next generation of collaborative apps on the Microsoft Teams platform</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">Lesaffre + Aster + Microsoft</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft Graph Explained</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">Debug Microsoft Teams apps without ngrok | Tips &amp; Tricks</A> -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Bob German</A> (Microsoft) | @Bob1German</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Do you need ngrok to develop Microsoft Teams apps? | Tips &amp; Tricks</A> -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Bob German</A> (Microsoft) | @Bob1German</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Create a chatbot in Microsoft Teams with Power Virtual Agents | Tips &amp; Tricks</A>&nbsp;<SPAN>- <A href="#" target="_blank" rel="noopener">April Dunnam</A> (Microsoft) |&nbsp;@aprildunnam</SPAN></LI> </UL> <P>&nbsp;</P> <P>New playlist -&nbsp;<A href="#" target="_self">Create interactive conversational bots for Microsoft Teams</A></P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_self">Create interactive conversational bots for Microsoft Teams</A></LI> <LI><A href="#" target="_self">Demo - Register and configure a new bot in Microsoft Azure and Azure Active Directory</A></LI> <LI><A href="#" target="_self">Demo - Create a conversational bots for Microsoft Teams</A></LI> <LI><A href="#" target="_self">Bots in Microsoft Teams channels and group chats</A></LI> <LI><A href="#" target="_self">Demo - Bots in Microsoft Teams channels and group chats</A></LI> <LI><A href="#" target="_self">Demo - Respond to messages with Adaptive Cards from bots</A></LI> <LI><A href="#" target="_self">Send proactive messages from bots</A></LI> <LI><A href="#" target="_self">Demo - Send proactive messages from bots</A></LI> </UL> <P>&nbsp;</P> <P>New playlist -&nbsp;<A href="#" target="_self">Create embedded web experiences with tabs for Microsoft Teams</A></P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_self">Create embedded web experiences with tabs for Microsoft Teams overview</A></LI> <LI><A href="#" target="_self">Create a custom Microsoft Teams personal tab</A></LI> <LI><A href="#" target="_self">Demo - Create a custom Microsoft Teams personal tab</A></LI> <LI><A href="#" target="_self">Demo - Customize a Microsoft Teams personal tab</A></LI> <LI><A href="#" target="_self">Demo - Build, deploy and test a Microsoft Teams personal tab</A></LI> <LI><A href="#" target="_self">Demo - Add a channel tab to the project</A></LI> <LI><A href="#" target="_self">Create a custom Microsoft Teams channel or group tab</A></LI> <LI><A href="#" target="_self">Demo - Implement the channel tab</A></LI> <LI><A href="#" target="_self">Implement authentication in a custom tab</A></LI> <LI><A href="#" target="_self">Authentication pop-up page flow</A></LI> <LI><A href="#" target="_self">Demo - Prepare an Azure AD app and Microsoft Teams app for authentication</A></LI> <LI><A href="#" target="_self">Demo - Implement authentication in a custom tab</A></LI> </UL> <P>&nbsp;</P> <P>Community demos as following:</P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_blank" rel="noopener">Using Microsoft Graph Toolkit to easily access files in Sites and in OneDrive</A> -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">André Lage</A> (Datalynx AG) | <LI-USER uid="861803"></LI-USER></SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Getting started on building Microsoft Teams meeting apps</A> -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Rick van Rousselt</A> (Advantive) | @RickVanRousselt </SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Building multilingual Power Apps</A> -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Haniel Croitoru</A> (Protiviti) | @HCroitoru</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Querying and Paging data with PnP Core SDK</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Paolo Pialorsi</A> (PiaSys) | @PaoloPia&nbsp;</LI> <LI><A href="#" target="_blank" rel="noopener">Adding support to add video with text to modern pages with this video banner web part</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Mohamed Derhalli</A> (BDO Canada)| @MohamedDerhalli</LI> <LI><A href="#" target="_blank" rel="noopener">Building a company stories web part for story experience</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Luis Mañez</A> (ClearPeople) | @luismanez</LI> <LI><A href="#" target="_blank" rel="noopener">Building a React groups and teams web part for aggregating detailed information for end users</A> -&nbsp;<SPAN>Alison Collins &amp;&nbsp;<A href="#" target="_blank" rel="noopener">Sam Collins</A> (Coupled Technology) | @samc148&nbsp;</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Using field lookups with list formatting</A> -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Chris Kent</A> (DMI) | @theChrisKent</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Localization check inside SharePoint Framework projects – VS Code extension increases productivity</A> -&nbsp;<SPAN>S<A href="#" target="_blank" rel="noopener">ergei Sergeev</A> (Mastaq) | @sergeev_srg</SPAN></LI> <LI><A href="#" target="_blank" rel="noopener">Transforming your SharePoint Framework web part as a Microsoft Teams personal app</A> -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Albert-Jan Schot</A> (Portiva) | @appieschot</SPAN></LI> </UL> <P>&nbsp;</P> <P><A href="#" target="_blank" rel="noopener">PnP Weekly sessions</A> - Community visitors and latest articles from Microsoft and community on Microsoft 365 topics.</P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 129</A></LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 128</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Katie Swanson</A> (Microsoft) | @kswansondesign</LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 127</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Rick Van Rousselt</A> (Advantive) | @RickVanRousselt</LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 126</A> -&nbsp;<A href="#" target="_blank" rel="noopener">D'arce Hess</A> (TrnDigital)| @DarceHess</LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft 365 PnP Weekly - Episode 125</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Sandy Ussia</A>&nbsp;(Lightning Tools)</LI> </UL> <P>&nbsp;</P> <P><!-- /wp:list --><!-- wp:heading {"level":1} --></P> <H2 id="key-contributors-for-the-september-2015-release">Key contributors to the June 2021 update</H2> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P>Here’s the list of active contributors (in alphabetical order) since last release details in GitHub repositories or community channels. PnP is really about building tooling and knowledge together with the community for the community, so your contributions are highly valued across the Microsoft 365 customers, partners and obviously also at Microsoft.</P> <P>&nbsp;</P> <P><STRONG>Thank you for your assistance and contributions on behalf of the community. You are truly making a difference!</STRONG> If we missed someone, please let us know.</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>Abderahman Moujahid -&nbsp;<A href="#" target="_blank" rel="noopener">Abderahman88</A></LI> <LI>Albert-Jan Schot (Portiva) - <A href="#" target="_blank" rel="noopener">@appieschot</A></LI> <LI>Alex Tabone (EASO)</LI> <LI>Alex Terentiev (SharePointalist) - <A href="#" target="_blank" rel="noopener">@alexaterentiev</A></LI> <LI>Alison Collins (Coupled Technology) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">ReactIntern</A></SPAN></LI> <LI>André Lage (Datalynx AG) -&nbsp;<A href="#" target="_blank" rel="noopener">@aaclage</A></LI> <LI>Andrew Benson (InElec) - <A href="#" target="_blank" rel="noopener">@ViewPorter</A></LI> <LI> <P>Andrew Burns (AmSty) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@SharePointRox</A></SPAN></P> </LI> <LI>Andrew Connell (Voitanos) - <A href="#" target="_blank" rel="noopener">@andrewconnell</A></LI> <LI>Andrew Koltyakov (ARVO Systems) - <A href="#" target="_blank" rel="noopener">@andrewkoltyakov</A></LI> <LI> <P>Andy Boylan (AdEPT Technology Group) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">apboylan</A></SPAN></P> </LI> <LI><SPAN>Andy-Dawson -&nbsp;<A href="#" target="_blank" rel="noopener">Andy-Dawson</A></SPAN></LI> <LI><SPAN>Anoop Tatti (Content+Cloud) -&nbsp;<A href="#" target="_blank" rel="noopener">@anooptells</A></SPAN></LI> <LI>Ari Gunawan (DevStack) -&nbsp;<A href="#" target="_blank" rel="noopener">@arigunawan3023</A></LI> <LI> <P>Ariel Smith (ASM Research)</P> </LI> <LI> <P>Asha Prajapati (T-systems India Pvt Ltd) - <SPAN><A href="#" target="_blank" rel="noopener">Ashaprjpt0707</A></SPAN></P> </LI> <LI>Beau Cameron (Aerie Consulting) - <A href="#" target="_blank" rel="noopener">@Beau__Cameron</A></LI> <LI>Blake Donley (Company) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@Handle</A></SPAN></LI> <LI> <P>Brett Olson</P> </LI> <LI> <P>Brian Kline (North Carolina Housing Finance Agency) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@brian_codediver</A></SPAN></P> </LI> <LI> <P>Bruce Lane -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@batchass</A></SPAN></P> </LI> <LI>Carl Cookson (Avanade) -&nbsp;<A href="#" target="_blank" rel="noopener">@LinkeD365</A></LI> <LI>Cas van Lersel (Rapid Circle) -&nbsp;<A class="Link--primary " href="#" target="_blank" rel="me nofollow noopener">@casvaniersel</A></LI> <LI>Cesar Hoeflich (Impar) -&nbsp;<A class="Link--primary " href="#" target="_blank" rel="me nofollow noopener">@cesarhoeflich</A></LI> <LI>Chandani Prajapati - <A href="#" target="_blank" rel="noopener">@Chandani_SPD</A></LI> <LI>Charles Ndiaye (Netexio) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@manusquall</A></SPAN></LI> <LI>Chris Brown -&nbsp;<A href="#" target="_blank" rel="noopener">Chrisrb05</A></LI> <LI>Chris Kent (DMI) - <A href="#" target="_blank" rel="noopener">@theChrisKent</A></LI> <LI> <P>Chris Revell (Consult 365 IT Solutions) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@consult_365</A></SPAN></P> </LI> <LI>Christian Zuellig (Monday Coffee) – <A href="#" target="_blank" rel="noopener">@ChristianZuell1</A></LI> <LI> <P>Christine Green (EBSCO Information Services) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@cacurtica</A></SPAN></P> </LI> <LI> <P>Christine Zeravica -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">christinemzeravica</A></SPAN></P> </LI> <LI>codepwner -&nbsp;<A href="#" target="_blank" rel="noopener">codepwner</A></LI> <LI> <P>Daniel Westerdale (Westerdale Solutions Ltd) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@westerdaled</A></SPAN></P> </LI> <LI>Damien Bird (Aberdeen City Council) -&nbsp;<A href="#" target="_blank" rel="noopener">@DamoBird365</A></LI> <LI>D'arce Hess (TrnDigital) - <A href="#" target="_blank" rel="noopener">@DarceHess</A></LI> <LI>Dan Toft (<SPAN>Evobis ApS</SPAN>) -&nbsp;<A class="Link--primary " href="#" target="_blank" rel="me nofollow noopener">@tanddant</A></LI> <LI> <P>Darren Lutchner (365 Assist) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@assist_365</A></SPAN></P> </LI> <LI>David Warner II (Catapult) - <A href="#" target="_blank" rel="noopener">@DavidWarnerII</A></LI> <LI> <P>Dinos Konstantinou -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@dinos_kon</A></SPAN></P> </LI> <LI> <P>Dipen Shah -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@Dips_365</A></SPAN></P> </LI> <LI><SPAN>Django Lohn (InSpark) -&nbsp;<A href="#" target="_blank" rel="noopener">@LohnDjango</A></SPAN></LI> <LI><SPAN>Derek Cash-Peterson (Sympraxis Consulting) -&nbsp;<A href="#" target="_blank" rel="noopener">@spdcp</A></SPAN></LI> <LI> <P>Don Kirkham -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@DonKirkham</A></SPAN></P> </LI> <LI>Eduard Paul (everis) -&nbsp;<A href="#" target="_blank" rel="noopener">@eduapauldev</A></LI> <LI>Eli H. Schei (Point Taken AS) -&nbsp;<A href="#" target="_blank" rel="noopener">@acupof_dev</A></LI> <LI>Elio Struyf (Struyf Consulting) - <A href="#" target="_blank" rel="noopener">@eliostruyf</A></LI> <LI>Emily Mancini (Sympraxis Consulting) - <A href="#" target="_blank" rel="noopener">@EEMancini</A></LI> <LI> <P>Eric Legault (Eric Legault Consulting Inc.) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@elegault</A></SPAN></P> </LI> <LI>Eric Overfield (PixelMill) - <A href="#" target="_blank" rel="noopener">@EricOverfield</A></LI> <LI>Erwin van Hunen (Valo Intranet) - <A href="#" target="_blank" rel="noopener">@erwinvanhunen</A></LI> <LI>Fabio Franzini -&nbsp;<A href="#" target="_blank" rel="noopener">@franzinifabio</A></LI> <LI> <P>Fernando Calero -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@Vino_Symposium</A></SPAN></P> </LI> <LI> <P>Foyin Olajide-Bello -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@foyinb</A></SPAN></P> </LI> <LI>Frank Cornu (aequos) - <A href="#" target="_blank" rel="noopener">@FranckCornu</A></LI> <LI>Ganesh Sanap - <A href="#" target="_blank" rel="noopener">@ganeshsanap20</A></LI> <LI>Garry Trinder (CPS) - <A href="#" target="_blank" rel="noopener">@garrytrinder</A></LI> <LI>Gautam Sheth (Valo) - <A href="#" target="_blank" rel="noopener">@gautamdsheth</A></LI> <LI>Geetha Sivasaiam (<SPAN>Artis Consulting</SPAN>) -&nbsp;<A href="#" target="_blank" rel="noopener">@GSiVed</A></LI> <LI>Giacomo Pozzoni (DQC Sverige Ab) - <A href="#" target="_blank" rel="noopener">@PozzoniGiacomo</A></LI> <LI><SPAN>Gurudatt Bhat -&nbsp;<A href="#" target="_blank" rel="noopener">@gurudattnb</A></SPAN></LI> <LI>Haniel Croitoru (Protiviti) - <A href="#" target="_blank" rel="noopener">@HCroitoru</A></LI> <LI>Harold Wolfinger</LI> <LI>Heidi Walstrom (HealthPartners)</LI> <LI> <P>Henrik Yllemo (Ylltec Sweden AB) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@yllemo</A></SPAN></P> </LI> <LI>Hubert Lam (NSW Department of Education) -&nbsp;<A href="#" target="_blank" rel="noopener">@z3019494</A></LI> <LI> <P>James Tallman (Washington State OFM) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@jtallman</A></SPAN></P> </LI> <LI>Jarbas Horst (Valo) - <A href="#" target="_blank" rel="noopener">@devjhorst</A></LI> <LI> <P>Jasey Waegebaert</P> </LI> <LI>Jeroen van der Meer -&nbsp;<A href="#" target="_blank" rel="noopener">jeroenvdmeer</A></LI> <LI><SPAN>Jens Otto Hatlevold (Bouvet) -&nbsp;<A href="#" target="_blank" rel="noopener">jensotto</A></SPAN></LI> <LI>Jeremy Wong -&nbsp;<A href="#" target="_blank" rel="noopener">navhaxs</A></LI> <LI>João Mendes - <A href="#" target="_blank" rel="noopener">@joaojmendes</A></LI> <LI> <P>Joe'l Brenny (Great River Energy) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@jbrenny</A></SPAN></P> </LI> <LI>Joel Rodrigues (Storm Technology) - <A href="#" target="_blank" rel="noopener">@JoelFMRodrigues</A></LI> <LI>John O'Keeffe</LI> <LI>John Ravas</LI> <LI> <P>Julie Peck (Cambridge Consultants)</P> </LI> <LI>Julie Turner (Sympraxis Consulting) - <A href="#" target="_blank" rel="noopener">@jfj1997</A></LI> <LI>Karl-Johan Dahl -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">kjdahldev</A></SPAN></LI> <LI>Kathleen Boilek (Alaka’Ina Foundation) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@kaboilek</A></SPAN></LI> <LI> <P>Keerthivasan Ravikumar (McKesson Europe AG) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@keerthincloud</A></SPAN></P> </LI> <LI> <P>Kent Warner -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@Ozarkkent</A></SPAN></P> </LI> <LI>Kerry Lambert (NI) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@kazoogal23</A></SPAN></LI> <LI>Keval Solanki -&nbsp;<A href="#" target="_blank" rel="noopener">@keval_solanki</A></LI> <LI> <P>Kevin Byrne</P> </LI> <LI> <P>Kevin Gregg</P> </LI> <LI> <P>Kevin McCarron -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@cnective</A></SPAN></P> </LI> <LI> <P>Kirti Baldawa (Albertsons Companies)</P> </LI> <LI><SPAN class="commit-author user-mention">Konrad Kolodziejak</SPAN><SPAN>&nbsp;-&nbsp;<A href="#" target="_blank" rel="noopener">wilecoyotegenius</A></SPAN></LI> <LI> <P>Kris Spencer</P> </LI> <LI><SPAN>Kyle Daley (Gimmal LLC) -&nbsp;<A href="#" target="_blank" rel="noopener">DaleyKD</A></SPAN></LI> <LI> <P>Lance Yoder (Cerner) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@lyoder</A></SPAN></P> </LI> <LI>Laura Kokkarinen (Sulava) - <A href="#" target="_blank" rel="noopener">@LauraKokkarinen</A></LI> <LI> <P>Lindsay Shelton -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@lshelton_tech</A></SPAN></P> </LI> <LI>Luis Mañes (ClearPeople) - <A href="#" target="_blank" rel="noopener">@luismanez</A></LI> <LI>Luise Freese (Luise Freese M365 Princess) - <A href="#" target="_blank" rel="noopener">@LuiseFreese</A></LI> <LI> <P>Manjunath Puttaswamy (Momentive Performance Materials India Private Limited) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@ManjunathPutta3</A></SPAN></P> </LI> <LI>Marc D Anderson (Sympraxis Consulting) - <A href="#" target="_blank" rel="noopener">@sympmarc</A></LI> <LI> <P>Marcus Cadena -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@marcusc83</A></SPAN></P> </LI> <LI><SPAN>Markus Hanisch -&nbsp;<A href="#" target="_blank" rel="noopener">Markus-Hanisch</A></SPAN></LI> <LI>Markus Möller -&nbsp;<A href="#" target="_blank" rel="noopener">@moeller2_0</A></LI> <LI>Matthew Devaney (Hitachi Solutions) -&nbsp;<A href="#" target="_blank" rel="noopener">@mattbdevaney</A></LI> <LI>Melanie Austin</LI> <LI> <P>Melissa Declercq (Savaco NV)</P> </LI> <LI>Michael Appinger</LI> <LI> <P>Michaël Maillot (<SPAN>onepoint</SPAN>) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@michael_maillot</A></SPAN></P> </LI> <LI> <P>Michael Roth -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@MichaelRoth42</A></SPAN></P> </LI> <LI><SPAN>Miguel Angel García Martínez (ClearPeople Ltd) -&nbsp;<A href="#" target="_blank" rel="noopener">magarma</A></SPAN></LI> <LI><SPAN>Mike Adler -&nbsp;<A href="#" target="_blank" rel="noopener">@MichaelAdler</A></SPAN></LI> <LI>Mike Duffy (Boardwalk Pipelines) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@mike_duffy</A></SPAN></LI> <LI>Mohamed Ashiq Faleel (Tata Consultancy Services) -&nbsp;<A href="#" target="_blank" rel="noopener">@ashiqfaleel</A></LI> <LI>Mohamed Derhalli (BDO Canada) - <A href="#" target="_blank" rel="noopener">derhallim</A></LI> <LI> <P>Muralidharan Deenathayalan (Quanticate India Pvt Ltd, Bangalore, India) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@muralidharand</A></SPAN></P> </LI> <LI> <P>Nanddeep Nachan – <A href="#" target="_blank" rel="noopener">@NanddeepNachan</A></P> </LI> <LI> <P>Naresh Kuncham (Sacha solutions) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Nareshkun</A></SPAN></P> </LI> <LI>Nick Brown (Cardiff University) -&nbsp;<A href="#" target="_blank" rel="noopener">@techienickb</A></LI> <LI>Nick Sevens (<SPAN>delaware</SPAN>) -&nbsp;<A href="#" target="_blank" rel="noopener">NickSevens</A></LI> <LI> <P>Nicolas Kheirallah -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@NicolasKheiral2</A></SPAN></P> </LI> <LI> <P>Nikki Chapple (NTT Cloud Communications) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@chapplenikki</A></SPAN></P> </LI> <LI>Nizar Grindi (Avanade) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@nizar_grindi</A></SPAN></LI> <LI>Ole-Martin Heggen (<SPAN>Computas AS</SPAN>) -&nbsp;<A href="#" target="_blank" rel="noopener">Swampen</A></LI> <LI>Omar El-Anis -&nbsp;<A href="#" target="_blank" rel="noopener">omarelanis</A></LI> <LI> <P>Oscar Fuentes -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@oappdev</A></SPAN></P> </LI> <LI> <P>Oz Ortiz -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">ortiox</A></SPAN></P> </LI> <LI>Paolo Pialorsi (PiaSys.com) - <A href="#" target="_blank" rel="noopener">@PaoloPia</A></LI> <LI>Patrik Hellgren (Sherpas Group) - <A href="#" target="_blank" rel="noopener">@patrikhellgren</A></LI> <LI>Patrick Lamber (Expertsinside AG) - <A href="#" target="_blank" rel="noopener">@patricklamber</A></LI> <LI> <P>Patrick Tucker (KiZAN) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@Tuckersnet</A></SPAN></P> </LI> <LI>Paul Bullock (CaPa Creative Ltd) - <A href="#" target="_blank" rel="noopener">@pkbullock</A></LI> <LI>Paul Schaeflein (AddIn365) - <A href="#" target="_blank" rel="noopener">@paulschaeflein</A></LI> <LI> <P>Pete Simpkins (Fluid Interiors) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@simpkinspete</A></SPAN></P> </LI> <LI>Peter Paul Kirschner (cubido business solutions GmbH) -&nbsp;<A class="Link--primary " href="#" target="_blank" rel="me nofollow noopener">@petkir_at</A></LI> <LI> <P>Phil Broadbery (PKF) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@peb71b</A></SPAN></P> </LI> <LI> <P>Prabhjit Singh (HCL)</P> </LI> <LI>P3N -&nbsp;<A href="#" target="_blank" rel="noopener">P3N</A></LI> <LI>Ralph Rivas (Sogeti) -&nbsp;<A href="#" target="_blank" rel="noopener">@bigpix2000</A></LI> <LI> <P>Ravikumar Pasupuleti -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@ravikpasupuleti</A></SPAN></P> </LI> <LI><SPAN>Ravichandran Krishnasamy (Content Formula) -&nbsp;<A href="#" target="_blank" rel="noopener">@spfx_blog</A></SPAN></LI> <LI><SPAN>Remy Blok&nbsp;(Prodware) -&nbsp;<A href="#" target="_blank" rel="noopener">remyblok</A></SPAN></LI> <LI>Rick Van Rousselt (Advantive) | <A href="#" target="_blank" rel="noopener">@RickVanRousselt</A>&nbsp;</LI> <LI> <P>Rocio Holub (DAI)</P> </LI> <LI> <P>Ron Jones (Organogenesis)</P> </LI> <LI> <P>Ross Allan (PKF LittleJohn)</P> </LI> <LI> <P>Russell Fulcher (PCX) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@rdfgoalie</A></SPAN></P> </LI> <LI>Sam Collins (Coupled Technology) -&nbsp;<A href="#" target="_blank" rel="noopener">@samc148</A></LI> <LI><SPAN>Sandy Ussia&nbsp;(Lightning Tools) -&nbsp;<A href="#" target="_blank" rel="noopener">@SandyU</A></SPAN></LI> <LI>Sergei Sergeev (Mastaq) - <A href="#" target="_blank" rel="noopener">@sergeev_srg</A></LI> <LI> <P>Shawn Miller -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@shawnpmiller</A></SPAN></P> </LI> <LI>Shiva Bezwada (JCS Solutions LLC) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@Texaport</A></SPAN></LI> <LI>Siddharth Vaghasia -&nbsp;<A href="#" target="_blank" rel="noopener">@siddh_me</A></LI> <LI>Simon Doy (iThink 365) -&nbsp;&nbsp;<A href="#" target="_blank" rel="noopener">@simondoy</A></LI> <LI>Simon Hudson (Cloud2) -&nbsp;<A href="#" target="_blank" rel="noopener">@simonjhudson</A></LI> <LI> <P>Simon Ågren (Sogeti) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@Agrenpoint</A></SPAN></P> </LI> <LI>Spencer Harbar (Triumph Media Limited) - <A href="#" target="_blank" rel="noopener">@harbars</A></LI> <LI>Stefan Bauer (n8d) - <A href="#" target="_blank" rel="noopener">@StfBauer</A></LI> <LI><SPAN>Stephan Bisser (Solvion) -&nbsp;<A href="#" target="_self">@stephanbisser</A></SPAN></LI> <LI> <P>Steven Babulski (Progressive) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@sbabulski</A></SPAN></P> </LI> <LI>strafe -&nbsp;<A href="#" target="_blank" rel="noopener">strafe</A></LI> <LI> <P>Subash Das -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@subashsps</A></SPAN></P> </LI> <LI> <P>Sudhir B -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@sudhir_bhad</A></SPAN></P> </LI> <LI> <P>Sujith Pasupuleti -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">sujith1907</A></SPAN></P> </LI> <LI>Susan McClements (1st Source Bank) -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@smcclements</A></SPAN></LI> <LI> <P>Tammy Dupuy (CSULB)</P> </LI> <LI>Tetsuya Kawahara - <A href="#" target="_blank" rel="noopener">@techsn_k</A></LI> <LI> <P>Theresa Lubelski -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@SharePointMadam</A></SPAN></P> </LI> <LI>Thomy Gölles (Solvion) | <A href="#" target="_blank" rel="noopener">@thomyg</A></LI> <LI>Todd Baginski (Canviz) - <A href="#" target="_blank" rel="noopener">@toddbaginski</A></LI> <LI>umaknow-william -&nbsp;<A href="#" target="_blank" rel="noopener">umaknow-william</A></LI> <LI>Wictor Wilen (Avanade) - <A href="#" target="_blank" rel="noopener">@wictor</A></LI> <LI>Velin Georgiev (Pramerica) – <A href="#" target="_blank" rel="noopener">@velingeorgiev</A></LI> <LI>Veronique Lengelle (CPS) - <A href="#" target="_blank" rel="noopener">@veronicageek</A></LI> <LI><SPAN>Vipul Kelkar (Rapid Circle) -&nbsp;<A href="#" target="_blank" rel="noopener">@vipulkelkar</A></SPAN></LI> <LI>Yannick Plenevaux (PVX Solutions) - <A href="#" target="_blank" rel="noopener">@yp_code</A></LI> <LI><SPAN>Yuriy Samorodov -&nbsp;<A href="#" target="_blank" rel="noopener">YuriySamorodov</A></SPAN></LI> <LI><SPAN>Yves Habersaat&nbsp;</SPAN>(Sword Group) -&nbsp;<A style="background-color: #ffffff;" href="#" target="_blank" rel="noopener">@yhabersaat</A></LI> </UL> <P>&nbsp;</P> <P><!-- /wp:list --><!-- wp:paragraph --></P> <P><STRONG>Companies:</STRONG>&nbsp;Here's the companies, which provided support the community initiative for this month by allowing their employees working for the benefit of others in the community. There were also people who contributed from other companies during last month, but we did not get their logos and approval to show them in time for these communications. If you still want your logo for this month's release, please let us know and share the logo with us. Thx.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="may-2021-compaies.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/279797i53A9751FE1E53255/image-size/large?v=v2&amp;px=999" role="button" title="may-2021-compaies.png" alt="may-2021-compaies.png" /></span></P> <P><!-- /wp:paragraph --></P> <P>&nbsp;</P> <P><!-- wp:paragraph --></P> <P><STRONG>Microsoft people:</STRONG>&nbsp;Here’s the list of Microsoft people who have been closely involved with the PnP work during last month.</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI><SPAN>Antons Mislevics -&nbsp;<A href="#" target="_blank" rel="noopener">antonsmislevics</A></SPAN></LI> <LI>Allen Snow - <A href="#" target="_blank" rel="noopener">@asnow003</A></LI> <LI><SPAN>Antons Mislevics -&nbsp;<A href="#" target="_blank" rel="noopener">antonsmislevics</A></SPAN></LI> <LI>April Dunnam - <A href="#" target="_blank" rel="noopener">@aprildunnam</A></LI> <LI>Ayca Bas - <A href="#" target="_blank" rel="noopener">@aycabs</A></LI> <LI>Bert Jansen -&nbsp;<A href="#" target="_blank" rel="noopener">@O365Bert</A></LI> <LI>Beth Pan - <A href="#" target="_blank" rel="noopener">@beth_panx</A></LI> <LI>Bob German - <A href="#" target="_blank" rel="noopener">@Bob1German</A></LI> <LI>Charles Sterling - <A href="#" target="_blank" rel="noopener">@chass</A></LI> <LI>Dan Wahlin - <A href="#" target="_blank" rel="noopener">@DanWahlin</A></LI> <LI>David Chesnut - <A href="#" target="_blank" rel="noopener">davidchesnut</A></LI> <LI>Elise Yang - <A href="#" target="_blank" rel="noopener">@elisenyang</A></LI> <LI>Hugo Bernier - <A href="#" target="_blank" rel="noopener">bernierh</A></LI> <LI>James Eccles - <A href="#" target="_blank" rel="noopener">@jimdeccles</A></LI> <LI>Jason Johnston - <A href="#" target="_blank" rel="noopener">jasonjoh</A></LI> <LI>Jeremy Kelley - <A href="#" target="_blank" rel="noopener">@Fizzlenik</A></LI> <LI>Joanne Hendrickson - <A href="#" target="_blank" rel="noopener">JoanneHendrickson</A></LI> <LI>John Nguyen - <A href="#" target="_blank" rel="noopener">johnguy0</A></LI> <LI>Karthig Balendran - <A href="#" target="_blank" rel="noopener">@KarthigBalendr1</A></LI> <LI> <P>Kiran Bellala -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">@kiranbellala</A></SPAN></P> </LI> <LI>Kevin Coughlin - <A href="#" target="_blank" rel="noopener">@kevintcoughlin</A></LI> <LI>Koen Zomers - <A href="#" target="_blank" rel="noopener">@koenzomers</A></LI> <LI><SPAN>Holland Kaviani -&nbsp;<A href="#" target="_blank" rel="noopener">Holland-ODSP</A></SPAN></LI> <LI>Laura Graham - <A href="#" target="_blank" rel="noopener">Lauragra</A></LI> <LI>Linda Lu Cannon - <A href="#" target="_blank" rel="noopener">lindalu-MSFT</A></LI> <LI>Loki Meyburg - <A href="#" target="_blank" rel="noopener">@lokimeyburg</A></LI> <LI>Luca Bandinelli -&nbsp;<A href="#" target="_blank" rel="noopener">lucaband</A></LI> <LI><SPAN>Matt Crisler -&nbsp;<A href="#" target="_blank" rel="noopener">@mccrisler</A></SPAN></LI> <LI>Matt Evans -&nbsp;<A href="#" target="_blank" rel="noopener">MattEEvans</A></LI> <LI>Matt Wolodarsky -&nbsp;<A href="#" target="_blank" rel="noopener">@mwolodarsky</A></LI> <LI>Melissa Torres -&nbsp;<A href="#" target="_blank" rel="noopener">@Meltorac</A></LI> <LI>Mikael Svenson -&nbsp;<A href="#" target="_blank" rel="noopener">@mikaelsvenson</A></LI> <LI>Musale Martin -&nbsp;<A href="#" target="_blank" rel="noopener">musale</A></LI> <LI>Nancy Wang -&nbsp;<A href="#" target="_blank" rel="noopener"><SPAN>@nancyatMSFT</SPAN></A></LI> <LI>Nik Charlebois - <A href="#" target="_blank" rel="noopener">@NikCharlebois</A></LI> <LI>Nicolas Vogt - <A href="#" target="_blank" rel="noopener">vogtn</A></LI> <LI>Nikola Metulev - <A href="#" target="_blank" rel="noopener">@metulev</A></LI> <LI>Pam Green (Microsoft) - <A href="#" target="_blank" rel="noopener">@contextuallib</A></LI> <LI>Pat Miller -&nbsp;<A href="#" target="_blank" rel="noopener">@PatMill_MSFT</A></LI> <LI>Patrick Rodgers -&nbsp;<A href="#" target="_blank" rel="noopener">@mediocrebowler</A></LI> <LI>Philippe Signoret -&nbsp;<A href="#" target="_blank" rel="noopener">@psignoret</A></LI> <LI>Rabia Williams - <A href="#" target="_blank" rel="noopener">@williamsrabia</A></LI> <LI>Shane Weaver -&nbsp;<A href="#" target="_blank" rel="noopener">shweaver-MSFT</A></LI> <LI><SPAN>Shiladitya Saha&nbsp;</SPAN></LI> <LI>Sean Squires - <A href="#" target="_blank" rel="noopener">@iamseansquires</A></LI> <LI>Sébastien Levert - <A href="#" target="_blank" rel="noopener">@sebastienlevert</A></LI> <LI>Steven Jia - <A href="#" target="_blank" rel="noopener">Steven-Jia</A></LI> <LI> <P>Tammie Brown</P> </LI> <LI>Tom Resing -&nbsp;<A href="#" target="_blank" rel="noopener">@resing</A></LI> <LI>Tomomi Imura - <A href="#" target="_blank" rel="noopener">@girlie_mac</A></LI> <LI>Vesa Juvonen -&nbsp;<A href="#" target="_blank" rel="noopener">@vesajuvonen</A></LI> <LI>Waldek Mastykarz - <A href="#" target="_blank" rel="noopener">@waldekm</A></LI> <LI><SPAN>Vincent Biret -&nbsp;<A href="#" target="_blank" rel="noopener">@baywet</A></SPAN></LI> <LI><SPAN>Vinit Kumar Baheti | <A href="#" target="_blank" rel="noopener">@vinitbaheti</A></SPAN></LI> </UL> <P>&nbsp;</P> <P><!-- /wp:list --><!-- wp:heading {"level":1} --></P> <H2>PnP Team</H2> <P><!-- /wp:heading --><!-- wp:paragraph --></P> <P>PnP Team manages the PnP community work in the GitHub and also coordinates different open-source projects around Microsoft 365 topics. PnP Team members have a significant impact on driving adoption of Microsoft 365&nbsp; topics. They have shown their commitment to the open-source and community-driven work by constantly contributing to the benefit of the others in the community.</P> <P>&nbsp;</P> <P>Thank you for all that you do!</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>Albert-Jan Schot (Portiva) - <A href="#" target="_blank" rel="noopener">@appieschot</A></LI> <LI>Alex Terentiev (SharePointalist) - <A href="#" target="_blank" rel="noopener">@alexaterentiev</A></LI> <LI>Andrew Connell (Voitanos)&nbsp;–&nbsp;<A href="#" target="_blank" rel="noopener">@andrewconnell</A></LI> <LI>Andrew Koltyakov (ARVO Systems)&nbsp;–&nbsp;<A href="#" target="_blank" rel="noopener">@andrewkoltyakov</A></LI> <LI>Beau Cameron (Aerie Consulting) -&nbsp;<A href="#" target="_blank" rel="noopener">@Beau__Cameron</A></LI> <LI>Chris Kent (DMI)&nbsp;–&nbsp;<A class="" href="#" target="_blank" rel="noopener">@theChrisKent</A></LI> <LI>David Warner II (Catapult) -&nbsp;<A href="#" target="_blank" rel="noopener">@DavidWarnerII</A></LI> <LI>Elio Struyf (Struyf Consulting)&nbsp;–&nbsp;<A href="#" target="_blank" rel="noopener">@eliostruyf</A></LI> <LI>Emily Mancini (Sympraxis Consulting) - <A href="#" target="_blank" rel="noopener">@EEMancini</A></LI> <LI>Eric Overfield (PixelMill) - <A href="#" target="_blank" rel="noopener">@EricOverfield</A></LI> <LI>Erwin van Hunen (Valo Intranet)&nbsp;–&nbsp;<A href="#" target="_blank" rel="noopener">@erwinvanhunen</A></LI> <LI>Frank Cornu (aequos) - <A href="#" target="_blank" rel="noopener">@FranckCornu</A></LI> <LI>Garry Trinder (CPS Solutions) - <A href="#" target="_blank" rel="noopener">@garrytrinder</A></LI> <LI>Gautam Sheth (Valo Intranet) - <A href="#" target="_blank" rel="noopener">@gautamdsheth</A></LI> <LI>Julie Turner (Sympraxis Consulting) -&nbsp;<A href="#" target="_blank" rel="noopener">@jfj1997</A></LI> <LI>Laura Kokkarinen (Sulava) - <A href="#" target="_blank" rel="noopener">@LauraKokkarinen</A></LI> <LI>Luise Freese - <A href="#" target="_blank" rel="noopener">@LuiseFreese</A></LI> <LI>Marc D Anderson (Sympraxis Consulting) -&nbsp;<A href="#" target="_blank" rel="noopener">@sympmarc</A></LI> <LI>Paolo Pialorsi (Piasys.com)&nbsp;–&nbsp;<A href="#" target="_blank" rel="noopener">@PaoloPia</A></LI> <LI>Patrick Lamber (Expertsinside AG) - <A href="#" target="_blank" rel="noopener">@patricklamber</A></LI> <LI>Paul Bullock (CaPa Creative Ltd) - <A href="#" target="_blank" rel="noopener">@pkbullock</A></LI> <LI>Rabia Williams (Engage Squared) - <A href="#" target="_blank" rel="noopener">@williamsrabia</A></LI> <LI>Stefan Bauer (n8d) –&nbsp;<A href="#" target="_blank" rel="noopener">@StfBauer</A></LI> <LI>Velin Georgiev (Pramerica) –&nbsp;<A href="#" target="_blank" rel="noopener">@velingeorgiev</A></LI> <LI>Veronique Lengelle (CPS) - <A href="#" target="_blank" rel="noopener">@veronicageek</A></LI> <LI>Yannick Plenevaux (PVX Solutions) - <A href="#" target="_blank" rel="noopener">@yp_code</A></LI> </UL> <P>&nbsp;</P> <P><!-- /wp:list --><!-- wp:paragraph --></P> <P>Here are the Microsoft Internal PnP Core team members:</P> <P>&nbsp;</P> <P><!-- /wp:paragraph --><!-- wp:list --></P> <UL> <LI>April Dunnam - <A href="#" target="_blank" rel="noopener">@aprildunnam</A></LI> <LI>Bert Jansen&nbsp;–&nbsp;<A href="#" target="_blank" rel="noopener">@O365Bert</A></LI> <LI>Bob German - <A href="#" target="_blank" rel="noopener">@Bob1German</A></LI> <LI>Hugo Bernier - <A href="#" target="_blank" rel="noopener">@bernierh</A></LI> <LI>Koen Zomers - <A href="#" target="_blank" rel="noopener">@koenzomers</A></LI> <LI>Mikael Svenson –&nbsp;<A href="#" target="_blank" rel="noopener">@mikaelsvenson</A></LI> <LI>Patrick Rodgers&nbsp;–&nbsp;<A href="#" target="_blank" rel="noopener">@mediocrebowler</A></LI> <LI>Rabia Williams - <A href="#" target="_blank" rel="noopener">@williamsrabia</A></LI> <LI>Sébastien Levert - <A href="#" target="_blank" rel="noopener">@sebastienlevert</A></LI> <LI>Vesa Juvonen&nbsp;–&nbsp;<A href="#" target="_blank" rel="noopener">@vesajuvonen</A></LI> <LI>Waldek Mastykarz – <A href="#" target="_blank" rel="noopener">@waldekm</A></LI> <LI>Wictor Wilen (Avanade) - <A href="#" target="_blank" rel="noopener">@wictor</A></LI> </UL> <P><!-- /wp:list --><!-- wp:heading {"level":1} --></P> <H2>Next steps</H2> <P><!-- /wp:heading --><!-- wp:image {"id":3825,"sizeSlug":"large"} --><!-- /wp:image --><!-- wp:list --></P> <P>See all of the available community calls, tools, components and other assets from <A href="#" target="_blank" rel="noopener">https://aka.ms/m365pnp</A>. Get involved!</P> <P>&nbsp;</P> <P>Got ideas or feedback on the topics to cover, additional partnerships, product feature capabilities? - let us know. Your input is important for us, so that we can support your journey in Microsoft 365.</P> <P>&nbsp;</P> <P><!-- /wp:list --><!-- wp:paragraph --></P> <P><EM>“Sharing is caring”</EM></P> <P><!-- /wp:paragraph --></P> <P>&nbsp;</P> <P><!-- wp:separator --></P> <HR /> <P><!-- /wp:separator --><!-- wp:paragraph --></P> <P>Microsoft 365 Community (PnP) – June 7th 2021</P> <DIV id="tinyMceEditorVesa Juvonen_31" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P>&nbsp;</P> Thu, 10 Jun 2021 12:25:40 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-june-2021-update/ba-p/2400494 Vesa Juvonen 2021-06-10T12:25:40Z What kind of apps can you build on Microsoft 365? https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/what-kind-of-apps-can-you-build-on-microsoft-365/ba-p/2434448 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="teams-hero" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/287803iEB592EFE4C1BB4A1/image-size/large?v=v2&amp;px=999" role="button" title="teams-hero" alt="teams-hero" /></span></P> <P>&nbsp;</P> <P>Microsoft 365 is a rich platform for building applications. Here are the types of apps you can build on Microsoft 365.</P> <P>&nbsp;</P> <H2>Why should you build applications on Microsoft 365</H2> <P>Microsoft 365, previously known as Office 365, is Microsoft's productivity cloud, that organizations use for communication and collaboration. 250 million users work with Microsoft 365 creating files, sending emails, meeting, reading information stored in Microsoft 365, and more.</P> <P>Microsoft 365 is also a highly extensible development platform. All the information about its users as well as the content they create is stored in Microsoft 365 and, bearing the necessary permissions, available for you to interact with in your applications.</P> <P>&nbsp;</P> <H2>What kind of apps can you build on Microsoft 365?</H2> <P>Thinking about building apps on Microsoft 365, you can distinguish between two types of apps: standalone apps and apps that extend Microsoft 365.</P> <P>&nbsp;</P> <P><PICTURE> <SOURCE srcset="https://blog.mastykarz.nl/assetshttps://techcommunity.microsoft.com/images/2021/02/microsoft-365-types-apps.webp" type="image/webp"></SOURCE> <IMG src="https://blog.mastykarz.nl/assetshttps://techcommunity.microsoft.com/images/2021/02/microsoft-365-types-apps.png" border="0" alt="Types of apps that you can build on Microsoft 365 grouped into extensions and custom apps" /> </PICTURE></P> <P>&nbsp;</P> <H3>Custom apps: build your experience</H3> <P>First of all, you can build custom apps. These can be mobile apps, web apps, desktop apps, device-native apps, workflow automation, or scheduled processes. You can build these apps using any programming language and run them on any platform you want. You choose how you distribute and operate them. In short: you own the technology stack and the full user experience.</P> <P>Users start their journey in your app. Because your app is connected to Microsoft 365, you can show relevant information from Microsoft 365 along your app's functionality. And because you can present the data in your app seamlessly, users might not even realize that they're looking at data coming from Microsoft 365.</P> <P>&nbsp;</P> <P>To get the most out of integrating your custom app with Microsoft 365, you need to allow users to sign in to your app with their Microsoft 365 account. That way, you will be able to retrieve the relevant information on their behalf from Microsoft 365.</P> <P>&nbsp;</P> <H2>Extend Microsoft 365 experiences</H2> <P>Microsoft 365 offers many extension points to bring your app where your users are. By exposing your app inside Microsoft 365, you make your app a part of people's work. Because your app is available right where they are, they can focus on their work and interact with your app without having to switch the context.</P> <P>&nbsp;</P> <H3>Extend conversations</H3> <P><A href="#" target="_blank" rel="noopener">Microsoft Teams</A> host conversations on Microsoft 365. You can bring your app as a part of a conversation in several ways.</P> <P>&nbsp;</P> <P>First of all, you can <A href="#" target="_blank" rel="noopener">build conversational bots</A>. Bots help people complete tasks through conversations. They're a great way to expose relevant features of your app and guide users through the scenario like a personal assistant.</P> <P><PICTURE> <SOURCE srcset="https://blog.mastykarz.nl/assetshttps://techcommunity.microsoft.com/images/2021/02/microsoft-365-teams-bot.webp" type="image/webp"></SOURCE> <IMG src="https://blog.mastykarz.nl/assetshttps://techcommunity.microsoft.com/images/2021/02/microsoft-365-teams-bot.png" border="0" alt="Custom bot integrated in Microsoft Teams" /> </PICTURE></P> <P>&nbsp;</P> <P>Another way to expose your app in a Teams conversation is through <A href="#" target="_blank" rel="noopener">messaging extensions</A>. Messaging extensions help people complete tasks in a visually-compelling way. They're similar to bots but are more visually oriented and ideal for showing rich data</P> <P><PICTURE> <SOURCE srcset="https://blog.mastykarz.nl/assetshttps://techcommunity.microsoft.com/images/2021/02/microsoft-365-teams-messaging-extension.webp" type="image/webp"></SOURCE> <IMG src="https://blog.mastykarz.nl/assetshttps://techcommunity.microsoft.com/images/2021/02/microsoft-365-teams-messaging-extension.png" border="0" alt="Custom messaging extension integrated in Microsoft Teams" /> </PICTURE></P> <P>&nbsp;</P> <P>Finally, you can <A href="#" target="_blank" rel="noopener">send notifications</A> from your app to conversations via webhooks. By using <A href="#" target="_blank" rel="noopener">adaptive cards</A>, you can show the data in a rich and actionable way.</P> <P>&nbsp;</P> <H3>Extend portals</H3> <P>Many organizations that use Microsoft 365 use <A href="#" target="_blank" rel="noopener">portals</A> to facilitate communication and manage knowledge. Using rich pages, they publish content and build interactive dashboards. These pages consist of reusable building blocks - web parts, that end-users put together.</P> <P><PICTURE> <SOURCE srcset="https://blog.mastykarz.nl/assetshttps://techcommunity.microsoft.com/images/2021/02/full-layout-thelanding.webp" type="image/webp"></SOURCE> <IMG src="https://blog.mastykarz.nl/assetshttps://techcommunity.microsoft.com/images/2021/02/full-layout-thelanding.jpg" border="0" alt="Custom SharePoint portal on Microsoft 365" /> </PICTURE></P> <P>&nbsp;</P> <P>You can extend portals on Microsoft 365 in two ways. First, you can build widgets, called <A href="#" target="_blank" rel="noopener">web parts</A>. Users, who create pages, can put your web parts on pages to enrich the content. Your web parts can show data from Microsoft 365 as well as any other API.</P> <P>&nbsp;</P> <P>Another way to extend portals is by building <A href="#" target="_blank" rel="noopener">extensions</A>. SharePoint Framework extensions allow you to execute a piece of code on every page or change how list fields are rendered. Just like with web parts, you can load data from Microsoft 365 or any other API in your extensions.</P> <P>&nbsp;</P> <H3>Extend documents</H3> <P>When creating documents on Microsoft 365, users can <A href="#" target="_blank" rel="noopener">enrich them with interactive elements</A>, like maps or charts. These elements can be connected to APIs and make documents interactive and present data that is always up-to-date.</P> <P>&nbsp;</P> <P><IMG src="https://blog.mastykarz.nl/assetshttps://techcommunity.microsoft.com/images/2021/02/about-addins-contentaddin.png" border="0" alt="Conceptual image showing a content add-in for Microsoft Office" /></P> <P>&nbsp;</P> <P>You can also build <A href="#" target="_blank" rel="noopener">task pane extensions</A> for Microsoft Office applications that help users work with their documents. A task pane could help people lookup their customer information when writing contracts or order information when creating invoices.</P> <P>&nbsp;</P> <P><IMG src="https://blog.mastykarz.nl/assetshttps://techcommunity.microsoft.com/images/2021/02/about-addins-taskpane.png" border="0" alt="Conceptual image showing a task pane add-in for Microsoft Office" /></P> <P>&nbsp;</P> <H2>Connect your application to Microsoft 365</H2> <P>There are several types of applications that you can build on Microsoft 365. No matter if you want to develop a custom application or extend Microsoft 365, you can connect your app to Microsoft 365. To get information and insights stored in Microsoft 365, you would connect to <A href="#" target="_blank" rel="noopener">Microsoft Graph</A> - the web API for Microsoft 365. To help you communicate with Microsoft Graph, Microsoft offers <A href="#" target="_blank" rel="noopener">SDKs for the most popular platforms</A>.</P> <P>&nbsp;</P> <H2>Over to you</H2> <P>Building apps for Microsoft 365 offers a great opportunity to reach millions of users and help them work more effectively. If you want to have a quick look at what kind of data you can retrieve from Microsoft 365, I'd suggest you look at the interactive <A href="#" target="_blank" rel="noopener">Graph Explorer</A>. If you're considering building a web app, I would also recommend that you take a look at <A href="#" target="_blank" rel="noopener">Microsoft Graph Toolkit</A> - a set of web components that make it very easy to show data from Microsoft 365 in your app. When you're ready to start building your app, sign up for the <A href="#" target="_blank" rel="noopener">Microsoft 365 developer program</A> to get a dev environment.</P> <P>&nbsp;</P> <P>Looking forward to hearing what you're going to build. And don't hesitate to reach out if you have any questions!</P> Thu, 10 Jun 2021 10:42:25 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/what-kind-of-apps-can-you-build-on-microsoft-365/ba-p/2434448 waldek 2021-06-10T10:42:25Z Use PnP Powershell to add a document library webpart to a page (and only show a specific folder) https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/use-pnp-powershell-to-add-a-document-library-webpart-to-a-page/ba-p/2428310 <P>As a non-developer (please read this as a disclaimer) I still try to make my life as easy as possible (yes, I am that lazy). PnP Powershell is a big component of that goal. A customer had the requirement to create a page for each of their 86 folders in a document library so they could add more information on those topics. That meant creating 86 pages, each with a document library webpart on it that showed a specific folder. No chance I was going to do that manually!</P> <P>Creating the page wasn’t really difficult. Showing the document library and just the items in the folder was the hard part that I couldn’t find any examples of. The idea of this blog post is to help future people like me to just copy/paste the code.</P> <P>&nbsp;</P> <P>&nbsp;</P> <H1>The goal</H1> <P>We started with a document library containing 86 folders, each having a few documents. The goal was to create 86 pages, with each page showing a block of text on the left and the document library webpart showing only the files from that folder.</P> <H1>How to do this in the user interface</H1> <P>Using the user interface, following steps were required:</P> <UL> <LI>Create a new page (with the same name as the folder)</LI> <LI>Add a section to the page with 2 columns</LI> <LI>Add a text webpart to the left column</LI> <LI>Add a document library webpart to the right column</LI> <LI>As a subrequirement, only show the files from the necessary folder. This can be set up from the web part properties</LI> </UL> <DIV class="wp-block-image"> <FIGURE class="aligncenter size-large"> <DIV id="tinyMceEditorMarijn Somers_0" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MS-list.png" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/287231iEA8C8F80460DE259/image-size/medium?v=v2&amp;px=400" role="button" title="MS-list.png" alt="MS-list.png" /></span></P> <FIGCAPTION>Document library UI properties</FIGCAPTION> </FIGURE> </DIV> <P>That would definitely be a lot of work to do manually, so I decided that PnP PowerShell needed to come to the rescue.</P> <H1>The code</H1> <P>Lets dig in to the code. I imagine that you have already dabbled with PnP Powershell and I will not explain how to install and configure it to run.</P> <DIV class="wp-block-syntaxhighlighter-code "> <DIV id="highlighter_645158" class="syntaxhighlighter powershell"><LI-CODE lang="powershell">Connect-PnPOnline -Url https://yourtenant.sharepoint.com/sites/thesite/ -UseWebLogin </LI-CODE></DIV> </DIV> <P>First we need to connect to the site. Replace the url with the correct url of your site. I am using -UseWebLogin in this example because I am using 2factor authentication.</P> <H2>Create the page</H2> <P>First thing to do is to create the page, using the<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">Add-PnPClientSidePage<SPAN>&nbsp;</SPAN></A>command. I am using the $name variable here to give it a name.</P> <DIV class="wp-block-syntaxhighlighter-code "> <DIV id="highlighter_199923" class="syntaxhighlighter powershell"><LI-CODE lang="powershell">Add-PnPClientSidePage -Name $name &nbsp;&nbsp;-LayoutType Article &nbsp;&nbsp;-HeaderLayoutType NoImage &nbsp;&nbsp;-CommentsEnabled:$false</LI-CODE></DIV> </DIV> <P>&nbsp;</P> <P>Disabling the comments section on a modern SharePoint Page<BR />I couldn’t figure out how to disable the comments section on the modern client page. I tried setting it to false, or 0, but that didn’t work.</P> <P>The correct way to do is to use:</P> <P>-CommentsEnabled:$false</P> <H2>Adding sections to the page</H2> <P>To add a new section to the page, I am using the<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">Add-PnPClientSidePageSection</A><SPAN>&nbsp;</SPAN>command. I can just add a TwoColumn section on the page.</P> <DIV class="wp-block-syntaxhighlighter-code "> <DIV id="highlighter_139207" class="syntaxhighlighter powershell"><LI-CODE lang="powershell">Add-PnPClientSidePageSection -Page $name -SectionTemplate TwoColumn -Order 1 </LI-CODE></DIV> </DIV> <H2>Adding a text editor webpart</H2> <P>Adding a text editor is super easy, just use the Add-PnPClientSideText command. Don’t forget to add some text or it will fail.</P> <DIV class="wp-block-syntaxhighlighter-code "> <DIV id="highlighter_664808" class="syntaxhighlighter powershell"><LI-CODE lang="powershell">Add-PnPClientSideText -Page $name -Section 1 -Column 1 -Text " " </LI-CODE></DIV> </DIV> <H2>The hard part: adding an existing document library as a webpart to the page</H2> <P>This was the easy bit, in my opinion. Adding a document library to a page is surprisingly hard in PnP Powershell (unless I am missing something big.. in that case please call me out on this!)</P> <P>What you need to do, is to use the<A href="#" target="_blank" rel="noopener"><SPAN>&nbsp;</SPAN>Add-PnPClientSideWebPart command</A>. With this command you can add all kinds of webparts to the page. Document library isn’t one of them.</P> <P>You need to add a List webparttype, and in the WebpartProperties you need to mention that it is a document library AND what the ID is.</P> <DIV class="wp-block-syntaxhighlighter-code "> <DIV id="highlighter_600997" class="syntaxhighlighter powershell"><LI-CODE lang="applescript">Add-PnPClientSideWebPart -Page $name &nbsp;&nbsp;-DefaultWebPartType List -Section 1 -Column 2 &nbsp;&nbsp;-WebPartProperties @{isDocumentLibrary="true"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectedListId="1fa1fb45-e53b-4ea1-9325-ddca7afe986e";}</LI-CODE></DIV> </DIV> <H3>Where can I find the SharePoint document library Id ?</H3> <P>I didn’t have a clue how to get this Id via code, so I resorted to the UI: If you go to the library settings, the document library Id is shown in the url:</P> <DIV class="wp-block-image"> <FIGURE class="aligncenter size-large"> <DIV id="tinyMceEditorMarijn Somers_1" class="mceNonEditable lia-copypaste-placeholder">&nbsp;</DIV> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="documentlibrary-id.png" style="width: 581px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/287222iE3871EB251E50F68/image-size/large?v=v2&amp;px=999" role="button" title="documentlibrary-id.png" alt="documentlibrary-id.png" /></span></P> <P>&nbsp;</P> <FIGCAPTION>SharePoint document library ID in the url of the library settings page</FIGCAPTION> </FIGURE> </DIV> <P>Just cut out the %7B in the front, and the %7D on the back.<BR />In this example, the document library Id is 4683b239-caf6-40a3-96c4-a02dedfa3418.</P> <H2>Bonus: Only show a specific folder from the document library</H2> <P>I couldn’t figure out how to show only documents from a specific folder. Doing this in the UI is supereasy. But there wasn’t any example code out there. So here it is:</P> <P>In the WebPartProperties, add selectedFolderPath=”/yourfoldername”;</P> <DIV class="wp-block-syntaxhighlighter-code "> <DIV id="highlighter_720175" class="syntaxhighlighter powershell"><LI-CODE lang="powershell">Add-PnPClientSideWebPart -Page $name &nbsp;&nbsp;-DefaultWebPartType List -Section 1 -Column 2 &nbsp;&nbsp;-WebPartProperties @{isDocumentLibrary="true"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectedListId="1fa1fb45-e53b-4ea1-9325-ddca7afe986e"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectedFolderPath="/$name";}</LI-CODE></DIV> </DIV> <H2>Bonus 2: hide the command bar on the SharePoint Document Library Webpart</H2> <P>In the UI, there is a way to simply hide the command bar. Because we are showing this information in a nice looking page, there is no need for all that extra fluff of “new”, “upload” and so on.</P> <P>In the same way as showing just files from a specific folder, you can use the hideCommandBar=”false”; in the WebPartProperties:</P> <DIV class="wp-block-syntaxhighlighter-code "> <DIV id="highlighter_988677" class="syntaxhighlighter powershell"><LI-CODE lang="powershell">Add-PnPClientSideWebPart -Page $name &nbsp;&nbsp;-DefaultWebPartType List -Section 1 -Column 2 &nbsp;&nbsp;-WebPartProperties @{isDocumentLibrary="true"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectedListId="1fa1fb45-e53b-4ea1-9325-ddca7afe986e"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectedFolderPath="/$name"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hideCommandBar="false"}</LI-CODE></DIV> </DIV> <H2>Publishing the page</H2> <P>All the parts we need are now on the page. The only thing now is to publish the page so it is visible to all visitors. For that, we need to grab the page again and publish it.</P> <DIV class="wp-block-syntaxhighlighter-code "> <DIV id="highlighter_460127" class="syntaxhighlighter powershell"><LI-CODE lang="powershell">$page = Get-PnPClientSidePage -Identity $name $page.Publish()</LI-CODE></DIV> </DIV> <H1>Looping the code for all folders</H1> <P>The last part of the code was to make this repeatable, for all 86 folders. There is probably a really nice way to , in code, get all folders from the doclib and loop through them, but as stated a gazillion times.. I am not a developer.<img class="lia-deferred-image lia-image-emoji" src="https://techcommunity.microsoft.com/html/@8341BD79091AF36AA2A09063B554B5CDhttps://techcommunity.microsoft.com/images/emoticons/smile_40x40.gif" alt=":smile:" title=":smile:" /><SPAN>&nbsp;</SPAN></P> <P>&nbsp;</P> <P>So I exported the document library to Excel and copied the foldernames. I added some quotes and a comma (in an Excel formula using =CHAR(34) &amp;&nbsp; A2 &amp; CHAR(34) &amp;”,”) and added an array to store these.</P> <P>The full code is:</P> <DIV class="wp-block-syntaxhighlighter-code "> <DIV id="highlighter_239645" class="syntaxhighlighter powershell"><LI-CODE lang="powershell">Connect-PnPOnline -Url https://yourtenant.sharepoint.com/sites/Yoursite/ -UseWebLogin $ray = "folder1", "folder2", "folder3" foreach ($name in $ray) { #create page Add-PnPClientSidePage -Name $name -LayoutType Article -HeaderLayoutType NoImage -CommentsEnabled:$false #add sections Add-PnPClientSidePageSection -Page $name -SectionTemplate TwoColumn -Order 1 #add text webpart Add-PnPClientSideText -Page $name -Section 1 -Column 1 -Text " " #add doclib Add-PnPClientSideWebPart -Page $name -DefaultWebPartType List -Section 1 -Column 2 -WebPartProperties @{isDocumentLibrary="true";selectedListId="1fa1fb45-e53b-4ea1-9325-ddca7afe986e";selectedFolderPath="/$name";hideCommandBar="false"} $page = Get-PnPClientSidePage -Identity $name $page.Publish() }</LI-CODE></DIV> </DIV> Thu, 10 Jun 2021 07:10:27 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/use-pnp-powershell-to-add-a-document-library-webpart-to-a-page/ba-p/2428310 Marijn Somers 2021-06-10T07:10:27Z SharePoint community call - June 8th, 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-community-call-june-8th-2021/ba-p/2427833 <P><SPAN>The SharePoint community monthly call is our general monthly review of the latest SharePoint news&nbsp; (news, tools, extensions, features, capabilities, content and training), engineering priorities and community recognition for Developers, IT Pros and Makers.&nbsp; This monthly community call happens on the second Tuesday of each month. You can download recurrent invite from&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/sp-call</A><SPAN>.</SPAN></P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/Pxfq2i4ys1U" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><SPAN><STRONG>Call Summary:</STRONG></SPAN></P> <P>Summer break and community call schedule updates reviewed. You are invited to join the <A href="#" target="_self">Viva Connections private preview</A>! &nbsp;&nbsp;Don’t miss the <A href="#" target="_blank" rel="noopener">SharePoint samples gallery</A>. &nbsp;&nbsp;Preview the new <A href="#" target="_blank" rel="noopener">Microsoft 365 Extensibility look book gallery</A>. &nbsp;Visit the new <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp/ct-p/Microsoft365PnP" target="_blank" rel="noopener">Microsoft 365 PnP Community hub</A> at Microsoft Tech Communities! &nbsp;&nbsp;Sign up and attend one of a growing list of <A href="#" target="_blank" rel="noopener">Sharing is Caring</A> events this month.&nbsp; &nbsp;Check out our weekly shows – Microsoft 365 PnP Weekly (latest news and announcements from Microsoft and community) and Microsoft 365 Developer Podcast (focusing on Microsoft 365 dev topics).&nbsp; &nbsp;The <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-june-2021-update/ba-p/2332366" target="_blank" rel="noopener">Microsoft 365 Update - Community (PnP) | June 2021</A> is now available. &nbsp;Developer and non-developer entries in UserVoice were reviewed.&nbsp;&nbsp; We are in the process of moving from UserVoice to a 1<SUP>st</SUP> party solution for customer feedback/feature requests. &nbsp;SharePoint roadmap priorities reviewed.</P> <P>&nbsp;</P> <P>A huge thank you to the record number of contributors and organizations actively participating in this PnP Community during May. &nbsp;You make this community stronger.&nbsp; The host of this call was <A href="#" target="_blank" rel="noopener">Vesa Juvonen</A> (Microsoft) @vesajuvonen.&nbsp; Q&amp;A took place in the chat throughout the call.&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="210608-together-mode.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/287316i6FBF5E698D3B8186/image-size/large?v=v2&amp;px=999" role="button" title="210608-together-mode.gif" alt="210608-together-mode.gif" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Featured Topic:&nbsp;&nbsp;</STRONG></P> <P><STRONG>SharePoint Site Templates – the latest features and experiences</STRONG> - walk through new 1<SUP>st</SUP> party site templates’ feature with demo and Q&amp;A.&nbsp; Call participants joined a live technical requirements discussion focused on enabling 3<SUP>rd</SUP> parties to create customer site templates in the future.&nbsp; &nbsp;A standing design criteria for 1<SUP>st</SUP> &amp; 3<SUP>rd</SUP> party templates includes leveraging the Community’s existing investments in modern site scripts and site designs.&nbsp; &nbsp;9 OOB Communications and Teams sites templates to be released in July-August.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Actions:&nbsp;</STRONG></P> <P>&nbsp;</P> <UL> <LI>Join on the Viva Connections private preview! | <A href="#" target="_blank" rel="noopener">aka.ms/viva/connections/preview/register</A></LI> <LI>Register for Sharing is Caring Events: <UL> <LI>First Time Contributor Session –&nbsp;<A href="#" target="_blank" rel="noopener">June 29<SUP>th</SUP></A> (EMEA, APAC &amp; US friendly times available)</LI> <LI>Community Docs Session –&nbsp;<A href="#" target="_blank" rel="noopener">June 23<SUP>rd</SUP> </A>&nbsp;</LI> <LI>PnP – SPFx Developer Workstation Setup – <A href="#" target="_blank" rel="noopener">June 17<SUP>th</SUP></A> &nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">June 24<SUP>th</SUP></A></LI> <LI>AMA (Ask Me Anything) – Microsoft Graph &amp; MGT – <A href="#" target="_blank" rel="noopener">June 8<SUP>th</SUP></A></LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">June 30<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – <A href="#" target="_blank" rel="noopener">June 16<SUP>th</SUP></A></LI> <LI>Maturity Model Practitioners – <A href="#" target="_blank" rel="noopener">June 15<SUP>th</SUP></A></LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> <LI>PnP Buddy System - <A href="#" target="_blank" rel="noopener">Request a Buddy</A></LI> </UL> </LI> <LI>Download the recurrent invite for this call –<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/sp-call</A>.</LI> </UL> <P>&nbsp;</P> <P>You can check the latest updates in the<SPAN>&nbsp;</SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-june-2021-update/ba-p/2332366" target="_blank" rel="noopener" aria-label=" (opens in a new tab)">monthly summary</A><SPAN>&nbsp;</SPAN>and at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">aka.ms/spdev-blog</A>.</P> <P>This call was delivered on Tuesday, June 8, 2021. The call agenda is reflected below with direct links to specific sections.&nbsp; You can jump directly to a specific topic by clicking on the topic's timestamp which will redirect your browser to that topic in the recording published on the<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Community YouTube Channel</A>.</P> <P>&nbsp;</P> <P><STRONG>Call Agenda:</STRONG></P> <P>&nbsp;</P> <UL> <LI>UserVoice status for non-dev focused SharePoint entries –<SPAN>&nbsp;<A href="#" target="_self">12:32</A></SPAN></LI> <LI>UserVoice status for dev focused SharePoint Framework entries –<SPAN>&nbsp;<A href="#" target="_self">13:43</A></SPAN><SPAN>&nbsp;</SPAN></LI> <LI>SharePoint community update with latest news and roadmap –<SPAN>&nbsp;<A href="#" target="_self">14:25</A></SPAN></LI> <LI>Community contributors and companies which have been involved in the past month –<SPAN>&nbsp;<A href="#" target="_self">16:07</A>&nbsp;</SPAN></LI> <LI><STRONG>Topic:&nbsp; SharePoint Site Templates – the latest features and experiences </STRONG>- <A href="#" target="_self">Melissa Torres</A> (Microsoft) | @Meltorac,&nbsp;<A href="#" target="_self">Nicole Woon</A> (Microsoft) | @NovelNicole &amp; Matt Mooty (Microsoft<SPAN>&nbsp;</SPAN><SPAN>– <A href="#" target="_self">19:32</A></SPAN></LI> </UL> <P>&nbsp;</P> <P>The full recording of this session is available from Microsoft 365 &amp; SharePoint Community YouTube channel -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp-videos</A>.</P> <P>&nbsp;</P> <UL> <LI>Presentation slides used in this community call are attached to this post.</LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:&nbsp;</STRONG></P> <P>Additional resources on covered topics and discussions.</P> <P>&nbsp;</P> <UL> <LI> <P>Support - <A href="#" target="_blank" rel="noopener">Apply and customize SharePoint site templates</A>&nbsp;</P> </LI> <LI> <P>Blog Post - <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-sharepoint-blog/use-sharepoint-s-new-site-templates-today/ba-p/2304372" target="_blank" rel="noopener">Use SharePoint's new site templates today!</A>&nbsp;</P> </LI> <LI>Article:&nbsp; <A href="#" target="_blank" rel="noopener">THE INTRAZONE PODCAST EPISODE</A>&nbsp;</LI> <LI>PnP Weekly – Episode 130 with the Software Engineer behind the Microsoft Graph Toolkit,&nbsp;<A href="#" target="_blank" rel="noopener">Nikola Metulev</A>&nbsp;(Microsoft) | @metulev.&nbsp;| <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-130/ba-p/2422722" target="_blank" rel="noopener">video</A> | <A href="#" target="_blank" rel="noopener">podcast</A></LI> <LI> <P><A href="#" target="_self">Register</A> for the Private Preview of Viva Connections</P> </LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp/ct-p/Microsoft365PnP" target="_blank" rel="noopener">Microsoft 365 PnP Community hub</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp/community&nbsp;</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/m365/extensibility</LI> <LI><SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Microsoft 365 Developer Podcast</A>&nbsp;|&nbsp;</SPAN>m365devpodcast.com</LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">SharePoint sample gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/spfx-webparts</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Teams Samples Gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/teams-samples</LI> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A>&nbsp;</LI> </UL> <P>&nbsp;</P> <P><STRONG>Additional Resources:&nbsp;</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Weekly - Videos</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnP Weekly - Podcasts</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">M365 Community Documentation</A><SPAN>&nbsp;</SPAN>- (non-dev)</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Documentation and Guidance</A><SPAN>&nbsp;</SPAN>- (technical)</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Framework v1.11</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Framework v1.11 release notes</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Exploring how to get started on open-source and community work?</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Starter Kit</A></LI> <LI>Recurrent invite to SharePoint Development monthly calls -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/spdev-call</A></LI> <LI>SharePoint Developer documentation -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/spdev-docs</A></LI> <LI>SharePoint Development Issues -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/spdev-issues</A></LI> <LI>SharePoint GitHub organization -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://github.com/SharePoint</A></LI> <LI>SharePoint Development UserVoice - new feature requests -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/spdev-uservoice</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Upcoming calls | Recurrent invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>Office add-in monthly call – </STRONG>June 9<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG>Adaptive Cards monthly call – </STRONG>June 10<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> <LI><STRONG>M365 General Dev call – </STRONG>June 10<SUP>th</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>Microsoft Teams monthly call – </STRONG>June 15<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/microsoftteamscommunitycall</A></LI> <LI><STRONG>Power Apps monthly call – </STRONG>June 16<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A></LI> <LI><STRONG>SharePoint Framework call – </STRONG>June 17<SUP>th</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG style="font-family: inherit;">Microsoft Identity Platform – </STRONG>June 17<SUP>th</SUP> at 9:00 am PDT | <A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A><SPAN style="font-family: inherit;">&nbsp;</SPAN></LI> </UL> <P>&nbsp;</P> <P>"<EM>Too many links, can't remember</EM>" - not a problem...<SPAN>&nbsp;</SPAN><STRONG>just one URL</STRONG><SPAN>&nbsp;</SPAN>is enough for all Microsoft 365 community topics -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp</A>.</P> <P>&nbsp;</P> <P><EM>“Sharing is caring”</EM></P> Wed, 09 Jun 2021 12:06:09 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-community-call-june-8th-2021/ba-p/2427833 Vesa Juvonen 2021-06-09T12:06:09Z Microsoft 365 PnP Weekly - Episode 130 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-130/ba-p/2422722 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Thumb-Ep130.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/287054i6C0E95852FFC5A5C/image-size/large?v=v2&amp;px=999" role="button" title="Thumb-Ep130.png" alt="Thumb-Ep130.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>In this installment of the weekly discussion revolving around the latest news and topics on&nbsp;<SPAN>Microsoft 365</SPAN>, hosts –&nbsp;<A href="#" target="_blank" rel="noopener">Vesa Juvonen</A>&nbsp;(Microsoft) | @vesajuvonen,&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A>&nbsp;(Microsoft) | @waldekm are joined by the Software Engineer in the Windows team behind the Microsoft Graph Toolkit, <A href="#" target="_blank" rel="noopener">Nikola Metulev</A> (Microsoft) | @metulev.&nbsp;&nbsp; Topics discussed in this session include - why Microsoft is committed to working with Community and open source.&nbsp; Nikola’s evangelist roots, his many projects while on one team and key learnings on open source. &nbsp;&nbsp;How Microsoft Graph Toolkit (MGT) came about, how the team prioritizes what to build and what’s coming in the next 6 months.&nbsp; &nbsp;And as the usual practice, each participant covers off on what they are doing this week – did one say:&nbsp; A new Microsoft Teams SSO provider?&nbsp; &nbsp; Covering also 18 new articles from Microsoft and the Community from pat week!&nbsp;&nbsp;</P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true">Please remember to keep on providing us feedback on how we can help on this journey. We always welcome feedback on making the community more inclusive and diverse.</P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true"><LI-VIDEO vid="https://youtu.be/mNluBNkkJUk" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true"><SPAN style="font-family: inherit;">This episode was recorded on Monday, June 7, 2021.</SPAN></P> <P>&nbsp;</P> <UL> <LI>Video at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Community YouTube channel.</A></LI> <LI>Podcast format at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://pnpweekly.podbean.com.</A></LI> </UL> <P>&nbsp;</P> <P data-unlink="true">These videos and podcasts are published each week and are intended to be roughly 45 - 60 minutes in length.&nbsp; Please do give us feedback on this video and podcast series and also do let us know if you have done something cool/useful so that we can cover that in the next weekly summary! The easiest way to let us know is to share your work on Twitter and add the hashtag<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">#PnPWeekly</A>. We are always on the lookout for refreshingly new content. “<EM>Sharing is caring!”</EM>&nbsp;</P> <P>&nbsp;</P> <P>Here are all the links and people mentioned in this recording. Thanks, everyone for your contributions to the community!<BR /><BR /></P> <P>&nbsp;</P> <P><STRONG>Microsoft articles:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-sharepoint-blog/sharepoint-roadmap-pitstop-may-2021/ba-p/2405130?WT.mc_id=m365-30992-wmastyka" target="_blank" rel="noopener">SharePoint Roadmap Pitstop: May 2021</A> - <A href="#" target="_blank" rel="noopener">Mark Kashman</A> (Microsoft) |&nbsp;@mkashman</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-sharepoint-blog/using-360-imagery-in-sharepoint-spaces/ba-p/2376408?WT.mc_id=m365-30992-wmastyka" target="_blank" rel="noopener">Using 360° Imagery in SharePoint Spaces</A> - <A href="#" target="_blank" rel="noopener">Matt Crisler</A> (Microsoft) |&nbsp;@mccrisler</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-sharepoint-blog/migrate-content-from-box-dropbox-and-google-workspace-into/ba-p/2405952?WT.mc_id=m365-30992-wmastyka" target="_blank" rel="noopener">Migrate content from Box, Dropbox, and Google Workspace into Microsoft 365 - release update</A> - <A href="#" target="_blank" rel="noopener">Mark Kashman</A> (Microsoft) |&nbsp;@mkashman</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-viva-blog/deep-dive-on-viva-learning-at-the-learning-transformation/ba-p/2393797?WT.mc_id=m365-30992-wmastyka" target="_blank" rel="noopener">Deep dive on Viva Learning at the Learning Transformation Briefings</A> -&nbsp;John Mighell (Microsoft)</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-blog/maximize-results-with-collaborative-work-management-in-microsoft/ba-p/2393857?WT.mc_id=m365-30992-wmastyka" target="_blank" rel="noopener">Maximize results with collaborative work management in Microsoft 365</A> -&nbsp;Andrea Lum (Microsoft)</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-blog/choose-the-right-microsoft-tool-for-managing-your-work/ba-p/2374115?WT.mc_id=m365-30992-wmastyka" target="_blank" rel="noopener">Choose the right Microsoft tool for managing your work</A> -&nbsp;Shin-Yi Lim (Microsoft)</LI> <LI><A href="#" target="_blank" rel="noopener">Change notifications extended for federated chats</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">Universal Actions in Adaptive Cards on Microsoft Teams</A> -&nbsp;Shiladitya Saha (Microsoft)</LI> </UL> <P>&nbsp;</P> <P><STRONG>Community articles:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/getting-started-with-graph-api-in-spfx-webpart/ba-p/2401064?WT.mc_id=m365-30992-wmastyka" target="_blank" rel="noopener">Getting started with graph API in SPFx web part</A> -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Chandani Prajapati</A><SPAN>&nbsp;|&nbsp;@Chandani_SPD</SPAN></LI> <LI><SPAN><A href="#" target="_self">Announcing new file components, MSAL 2 Provider, and SharePoint Framework library in Microsoft Graph Toolkit</A> - Microsoft</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Sample script: quickly remove pending SharePoint API permission requests</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A> (Microsoft) |&nbsp;@waldekm</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Using sp-core-library with jest</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Marcin Wojciechowski</A> (Valo) |&nbsp;@mgwojciech</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">We shipped version 1.2.0 of the PnP Core SDK</A> - <A href="#" target="_blank" rel="noopener">Bert Jansen</A> (Microsoft) |&nbsp;@O365Bert</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">SPFx SwatchColorPicker Office UI Fabric React Control example</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Bijay Kumar</A> (SPGuides.com) |&nbsp;@fewlines4biju</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Issue with PnP JS sp.site.exists() call when page url contains hashes</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Alexey Sadomov</A> (Valo) |&nbsp;@sadomovalex</SPAN></LI> <LI><SPAN><A href="#" target="_self">#DevHack: Get the shared file info with Microsoft Graph</A> - <A href="#" target="_blank" rel="noopener">Elio Struyf</A> (Squarl) |&nbsp;@eliostruyf</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Dataverse tables relevant to approvals</A> -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Pieter Veenstra</A>&nbsp;(HybrIT Services) |&nbsp;@PieterVeenstra</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Custom Backgrounds For Microsoft Teams Together Mode</A> -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Daniel Glenn</A>&nbsp;(InfoWorks, Inc) | @DanielGlenn,&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Darrell Webster</A>&nbsp;(Modern Workplace Change) | @darrellaas</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Additional resources:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_self">Microsoft Graph Toolkit</A> - aka.ms/mgt</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Sharing is Caring initiative</A><SPAN>&nbsp;</SPAN>- Getting started guidance and training for using GitHub and contributing to the community</LI> <LI>Want to ask a question or in general engage with the community - Add a note in the Microsoft 365 PnP Community hub at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community</A></LI> <LI>Check out all the great community calls, SDKs, and tooling for Microsoft 365 from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp</A></LI> </UL> <P>&nbsp;</P> <P>If you’d like to hear from a specific community member in an upcoming recording and/or have specific questions for Microsoft 365 engineering or visitors – please let us know. We will do our best to address your requests or questions.</P> <P>&nbsp;</P> <P><EM>"Sharing is caring!"</EM></P> Tue, 08 Jun 2021 11:52:57 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-130/ba-p/2422722 Vesa Juvonen 2021-06-08T11:52:57Z SharePoint Framework Community Call – 3rd of June, 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-3rd-of-june-2021/ba-p/2412820 <P>SharePoint Framework Special Interest Group (SIG) bi-weekly community call recording from June 3rd is now available from the Microsoft 365 Community YouTube channel at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp-videos</A>. You can use SharePoint Framework for building solutions for<SPAN>&nbsp;</SPAN><STRONG>Microsoft Teams</STRONG><SPAN>&nbsp;</SPAN>and for<SPAN>&nbsp;</SPAN><STRONG>SharePoint</STRONG><SPAN>&nbsp;</SPAN>Online.</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/65hRvHN5Iqk" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><STRONG>Call summary:</STRONG></P> <P><A href="#" target="_blank" rel="noopener">Register</A> for the Private Preview of Viva Connections (including access to SPFx v.1.13) and while you’re at it, register for June trainings on <A href="#" target="_blank" rel="noopener">Sharing-is-caring</A>.&nbsp; Latest update on SharePoint Framework v1.13.0 – extensibility options with Viva Connections (demoed today), Teams improvements, tooling updates, Store modernization and more. &nbsp;&nbsp;As well <STRONG>CLI for Microsoft 365</STRONG> <STRONG>v3.10.0</STRONG> and <STRONG>PnP Modern Search v4.2.0</STRONG> <STRONG>and v3.20.0 </STRONG>were released. &nbsp;&nbsp;A major topic focus of this call is developing for Microsoft Viva Connections – Overview, authoring a Viva Connections Dashboard and a deep dive on developing a Custom Card Extension using SharePoint Framework.&nbsp;</P> <P>&nbsp;</P> <P>There were three <STRONG>PnP SPFx samples</STRONG> delivered in last 2 weeks.&nbsp; Great work!&nbsp; &nbsp; &nbsp;</P> <P>&nbsp;</P> <P><STRONG>Latest project updates include:&nbsp;</STRONG><SPAN>&nbsp;</SPAN>(<STRONG>Bold<SPAN>&nbsp;</SPAN></STRONG>indicates update from previous report 2 weeks ago)&nbsp;</P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="33.333333333333336%" height="30px"><STRONG>PnP Project</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>Current version</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>Release/Status</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">SharePoint Framework (SPFx)</TD> <TD width="33.333333333333336%" height="30px">v1.12.1&nbsp;</TD> <TD width="33.333333333333336%" height="30px">v1.13.0 Preview in summer</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">PnPjs Client-Side Libraries</TD> <TD width="33.333333333333336%" height="30px">v2.5.0</TD> <TD width="33.333333333333336%" height="30px"><STRONG>Planned release v2.6.0 June 12</STRONG>, v3.0.0 developments underway</TD> </TR> <TR> <TD width="33.333333333333336%" height="57px">CLI for Microsoft 365</TD> <TD width="33.333333333333336%" height="57px"><STRONG>v3.10.0</STRONG></TD> <TD width="33.333333333333336%" height="57px">v3.10.0 preview released</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">Reusable SPFx React Controls</TD> <TD width="33.333333333333336%" height="30px">v2.7.0 (SPFx v1.11), v3.1.0 (SPFx v1.12.1)</TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">Reusable SPFx React Property Controls</TD> <TD width="33.333333333333336%" height="30px">v2.6.0 (SPFx v1.11), v3.1.0 (SPFx v1.12.1)</TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">PnP SPFx Generator</TD> <TD width="33.333333333333336%">v1.16.0</TD> <TD width="33.333333333333336%">Angular 11 support</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">PnP Modern Search</TD> <TD width="33.333333333333336%" height="30px"><STRONG>v4.2.0, v3.20.0</STRONG></TD> <TD width="33.333333333333336%" height="30px">&nbsp;</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>The host of this call is<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Patrick Rodgers</A><SPAN>&nbsp;</SPAN>(Microsoft) @mediocrebowler.&nbsp; Q&amp;A takes place in chat throughout the call.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="210603-together-mode.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/286204i507E16F8084EAC51/image-size/large?v=v2&amp;px=999" role="button" title="210603-together-mode.gif" alt="210603-together-mode.gif" /></span></P> <P>&nbsp;</P> <P>Thanks everybody for being part of the Community and helping making things happen. You are absolutely awesome!</P> <P>&nbsp;</P> <P><STRONG>Actions:</STRONG></P> <UL> <LI>Join on the Viva Connections private preview! | <A href="#" target="_blank" rel="noopener">aka.ms/viva/connections/preview/register</A></LI> <LI>Feedback wanted:&nbsp; Regarding PnP PowerShell – “What if we did not return classic CSOM objects from the cmdlets?”&nbsp; Comments to:&nbsp; @erwinvanhunen.&nbsp;&nbsp;&nbsp;</LI> <LI>Register for Sharing is Caring Events: <UL> <LI>First Time Contributor Session –&nbsp;<A href="#" target="_blank" rel="noopener">June 29<SUP>th</SUP></A> (EMEA, APAC &amp; US friendly times available)</LI> <LI>Community Docs Session –&nbsp;<A href="#" target="_blank" rel="noopener">June 23rd</A></LI> <LI>PnP – SPFx Developer Workstation Setup – <A href="#" target="_blank" rel="noopener">June 17<SUP>th</SUP></A> &nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">June 24<SUP>th</SUP></A></LI> <LI>AMA (Ask Me Anything) – Microsoft Graph &amp; MGT – <A href="#" target="_blank" rel="noopener">June 8<SUP>th</SUP></A></LI> <LI>AMA (Ask Me Anything) – Microsoft Teams Dev - June</LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">June 30<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – <A href="#" target="_blank" rel="noopener">June 16<SUP>th</SUP></A></LI> <LI>Maturity Model Practitioners – <A href="#" target="_blank" rel="noopener">June 15<SUP>th</SUP></A></LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> <LI>PnP Buddy System - <A href="#" target="_blank" rel="noopener">Request a Buddy</A></LI> </UL> </LI> <LI>Download the recurrent invite for this call –&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spdev-spfx-call</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Demo:</STRONG></P> <P class="lia-indent-padding-left-30px"><STRONG>Get started developing mobile experiences for Microsoft Viva Connections - a preview of SharePoint Framework 1.13.&nbsp;&nbsp;</STRONG>&nbsp;Connect is about providing fast and easy access – to insights, tasks, apps and more from a Dashboard (personalized index) visible in Microsoft Teams desktop, web and mobile surfaces as well as in SharePoint Desktop and Modern web pages.&nbsp; The Dashboard is a collection of 1<SUP>st</SUP> party native and 3<SUP>rd</SUP> party custom Cards and Quick Views authored using SPFx and leveraging Adaptive Cards.&nbsp; &nbsp;See how to assemble a Dashboard and develop a custom card using the Dashboard web part and SPFx.</P> <P>&nbsp;</P> <DIV><STRONG>SPFx extension samples:&nbsp; (<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spfx-extensions</A>)&nbsp;</STRONG> <P>&nbsp;</P> </DIV> <UL> <LI> <P>Soon</P> </LI> </UL> <P><STRONG>SPFx web part samples:&nbsp; (<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spfx-webparts</A>)&nbsp;</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG><A href="#" target="_blank" rel="noopener">Data Table</A></STRONG> - <A href="#" target="_blank" rel="noopener">Chandani Prajapati</A>&nbsp;|&nbsp;@Chandani_SPD</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Page Contributors</A></STRONG> - <A href="#" target="_blank" rel="noopener">Ari Gunawan</A>&nbsp;|&nbsp;@arigunawan3023</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">OneDrive Finder</A></STRONG> - <A href="#" target="_blank" rel="noopener">André Lage&nbsp;</A>|&nbsp;<LI-USER uid="861803"></LI-USER><BR /><BR /></LI> </UL> <P>Thank you for your great work.&nbsp; Samples are often showcased in Demos.&nbsp; &nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Agenda items:</STRONG></P> <UL> <LI>Latest updates on SharePoint Framework -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Vesa Juvonen</A><SPAN>&nbsp;</SPAN>(Microsoft) | @vesajuvonen –<SPAN>&nbsp;<A href="#" target="_self">4:38</A></SPAN></LI> <LI>PnPjs Client-Side Libraries -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noreferrer noopener">Julie Turner</A><SPAN>&nbsp;</SPAN>(Sympraxis Consulting) | @jfj1997 –<SPAN>&nbsp;<A href="#" target="_self">6:43</A></SPAN></LI> <LI>CLI for Microsoft 365 -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Patrick Rodgers</A><SPAN>&nbsp;</SPAN>(Microsoft) | @mediocrebowler –<SPAN>&nbsp;<A href="#" target="_self">8:40</A></SPAN></LI> <LI>PnP SPFx Controls -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Patrick Rodgers</A><SPAN>&nbsp;</SPAN>(Microsoft) | @mediocrebowler –<SPAN>&nbsp;<A href="#" target="_self">9:26</A></SPAN></LI> <LI>PnP Modern Search -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Patrick Rodgers</A><SPAN>&nbsp;</SPAN>(Microsoft) | @mediocrebowler&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">10:45</A></SPAN></LI> <LI><SPAN>P</SPAN>nP SPFx Samples -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Hugo Bernier</A><SPAN>&nbsp;</SPAN>(Tahoe Ninjas) | @bernierh&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">11:49</A></SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Demos:</STRONG></P> <UL> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Get started developing mobile experiences for Microsoft Viva Connections, a preview of SharePoint Framework 1.13 - <A href="#" target="_self">Luca Bandinelli</A> (Microsoft) | @BandinelliLuca,&nbsp;<A href="#" target="_self">Pat Miller</A> (Microsoft) | @PatMill_MSFT and John Nguyen (Microsoft)&nbsp;<SPAN style="font-family: inherit;">–&nbsp;</SPAN><A href="#" target="_self">16:00</A></P> <UL> <LI><SPAN style="font-family: inherit;">Viva Connections Extensibility and Dashboard - Overview&nbsp; – <A href="#" target="_self">16:00</A></SPAN></LI> <LI><SPAN style="font-family: inherit;">Demo:&nbsp; Authoring a Viva Connections Dashboard&nbsp; – <A href="#" target="_self">19:11</A></SPAN></LI> <LI><SPAN style="font-family: inherit;">Custom Cards - Overview&nbsp; – <A href="#" target="_self">37:48</A></SPAN></LI> <LI><SPAN style="font-family: inherit;">Demo:&nbsp; Developing a Custom Card using SharePoint Framework v – <A href="#" target="_self">46:00</A></SPAN></LI> </UL> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>Additional resources around the covered topics and links from the slides.</P> <UL> <LI>Register - <A href="#" target="_blank" rel="noopener">Register for Viva Connections developer platform updates and private Beta</A>&nbsp;</LI> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A></LI> <LI>Designer – <A href="#" target="_blank" rel="noopener">Adaptive Cards</A>&nbsp;</LI> <LI>PnP Weekly – Episode 129 <A href="#" target="_blank" rel="noopener">Vesa Juvonen</A>&nbsp;(Microsoft) | @vesajuvonen,&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A>&nbsp;(Microsoft) | @waldekm&nbsp;discuss announcements from Microsoft Build 2021 | <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-129/ba-p/2401546" target="_blank" rel="noopener">video</A> | <A href="#" target="_blank" rel="noopener">podcast</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>General Resources:</STRONG></P> <UL> <LI>Gallery -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>&nbsp;&nbsp;</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Build sessions guide</A><SPAN>&nbsp;</SPAN>(Modern Work Digital Brochure) - aka.ms/modernworkbuildsessions</LI> <LI>SharePoint Framework - v1.12.1 npm install –g<SPAN>&nbsp;</SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/user/viewprofilepage/user-id/41501" target="_blank" rel="noopener">@microsoft</A>/generator-sharepoint@next</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">CLI for Microsoft 365 v3</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">CodeTour</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Sharing is Caring</A><SPAN>&nbsp;</SPAN>| aka.ms/sharing-is-caring</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Tools -<SPAN>&nbsp;</SPAN></A><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnP Modern Search v4</A><A href="#" target="_blank" rel="noopener noreferrer">&nbsp; |<SPAN>&nbsp;</SPAN></A><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/pnp-search</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">M365 PnP site</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Starter Kit v2</A></LI> <LI>Blog: "<A href="#" target="_blank" rel="noopener noreferrer">A Lap Around Microsoft Graph Toolkit" blog series</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">New Microsoft 365 Patterns and Practices (PnP) team model with new community leads</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Community Content</A><SPAN>&nbsp;</SPAN>(non-Dev docs)</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx web part samples</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx extension samples</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">GitHub PnPjs</A></LI> <LI>Tutorials -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started with SharePoint Framework v1.10 Tutorials</A><SPAN>&nbsp;</SPAN>(12 videos)</LI> <LI>Tutorials -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started with SharePoint Framework v1.10 Extensions</A><SPAN>&nbsp;</SPAN>(6 videos)</LI> <LI>Docs -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Tutorials and training material for SharePoint Development</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFX Training Package</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Web Parts</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Extensions</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Library Components</A></LI> <LI>Documentation -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnPjs v2 documentation</A></LI> <LI>Link -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 developer training</A></LI> <LI>Link -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Office 365 Developer Program</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">Latest documentation on SharePoint Framework</A></LI> <LI>Found an issue with SharePoint Dev? - please let us know at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/spdev-issues</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Reusable web part property controls</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Reusable react controls for SharePoint Framework solutions</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">Reusable controls webcast</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener nofollow">Office 365 CLI</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx Yeoman Generator</A><SPAN>&nbsp;</SPAN>- Extends the out-of-the-box experience with open-source community capabilities</LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint Dev UserVoice</A><SPAN>&nbsp;</SPAN>- for new feature requests</LI> </UL> <P>&nbsp;</P> <P><STRONG>Other mentioned topics:</STRONG></P> <UL> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint dev documentation</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint dev issue list</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Upcoming calls | Recurrent invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>SharePoint monthly call – </STRONG>June 8<SUP>th</SUP> at 8:00am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/sp-call</A></LI> <LI><STRONG>Office add-in monthly call – </STRONG>June 9<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG>Adaptive Cards monthly call – </STRONG>June 10<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> <LI><STRONG>M365 General Dev call – </STRONG>June 10<SUP>th</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>Microsoft Teams monthly call – </STRONG>June 15<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/microsoftteamscommunitycall</A></LI> <LI><STRONG>Power Apps monthly call – </STRONG>June 16<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A></LI> <LI><STRONG>SharePoint Framework call – </STRONG>June 17<SUP>th&nbsp;</SUP>at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG>Microsoft Identity Platform – </STRONG>June 17<SUP>th</SUP> at 9:00 am PDT |&nbsp;<A href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A>&nbsp;</LI> <LI><STRONG>Microsoft Graph call – </STRONG>July 6<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/microsoftgraphcall</A></LI> </UL> <P>&nbsp;</P> <P>PnP SharePoint Framework Special Interest Group bi-weekly calls are targeted at anyone who is interested in the JavaScript-based development towards Microsoft Teams, SharePoint Online, and also on-premises. SIG calls are used for the following objectives.</P> <UL> <LI>SharePoint Framework engineering update from Microsoft</LI> <LI>Talk about PnP JavaScript Core libraries</LI> <LI>Office 365 CLI Updates</LI> <LI>SPFx reusable controls</LI> <LI>PnP SPFx Yeoman generator</LI> <LI>Share code samples and best practices</LI> <LI>Possible engineering asks for the field - input, feedback, and suggestions</LI> <LI>Cover any open questions on the client-side development</LI> <LI>Demonstrate SharePoint Framework in practice in Microsoft Teams or SharePoint context</LI> <LI>You can download a recurrent invite from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">https://aka.ms/spdev-spfx-call</A>. Welcome and join the discussion!</LI> </UL> <P><EM>“Sharing is caring”</EM></P> <HR /> <P><EM>Microsoft 365 PnP team, Microsoft - 4th of June 2021</EM></P> Fri, 04 Jun 2021 08:46:28 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-3rd-of-june-2021/ba-p/2412820 Vesa Juvonen 2021-06-04T08:46:28Z Getting started with graph API in SPFx webpart https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/getting-started-with-graph-api-in-spfx-webpart/ba-p/2401064 <H2>What is Graph API?</H2> <P>&nbsp;</P> <P>Microsoft Graph provides a unified programmability model that you can use to build apps for organizations and consumers that interact with the data of millions of users. You can easily access Microsoft Graph also from SharePoint Framework solutions.</P> <P>&nbsp;</P> <P>Microsoft Graph exposes REST APIs and client libraries to access data on the following Microsoft services like&nbsp; Bookings, Calendar, Delve, Excel, Microsoft 365 compliance eDiscovery, Microsoft Search, OneDrive, OneNote, Outlook/Exchange, People (Outlook contacts), Planner, SharePoint, Teams, To Do, Workplace Analytics. for more details refer to <A title="Graph API" href="#" target="_blank" rel="noopener">this</A>.</P> <P>&nbsp;</P> <H2>How to test API in graph explorer?</H2> <P>&nbsp;</P> <P>Before creating an SPFx web part implementation with Graph API we can explore APIs in <A title="Graph Explorer" href="#" target="_blank" rel="noopener">Graph Explorer</A>. At here To access your own data you have to log in with your O365 Credentials.</P> <P>&nbsp;</P> <P>Whenever you sign in it will ask for Permission so you have to Accept it.</P> <P>&nbsp;</P> <P>In the left panel, you can find multiple sample queries by category so you can check them and run them.</P> <P>&nbsp;</P> <P>If you are testing any API and get an <STRONG>error </STRONG>like this:&nbsp;<STRONG>Forbidden - 403 - You need to consent to the permissions on the Modify permissions (Preview) tab.&nbsp;</STRONG>Then follow the&nbsp;below steps,</P> <P>&nbsp;</P> <P>1. Select Permissions</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Select Permssion.png" style="width: 511px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/285114iE1B9609F084EC223/image-size/large?v=v2&amp;px=999" role="button" title="Select Permssion.png" alt="Select Permssion.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>2. Then select the category in which you want to set permission and click on the&nbsp;<STRONG>Consent</STRONG> button.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Permssions.png" style="width: 580px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/285115i17F20B295CAD56EC/image-size/large?v=v2&amp;px=999" role="button" title="Permssions.png" alt="Permssions.png" /></span></P> <P>&nbsp;</P> <P>3 After clicking on the Consent it will open a popup so check the checkbox and Accept it.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AcceptPermsiion.png" style="width: 383px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/285118i266B689B13F653D8/image-size/large?v=v2&amp;px=999" role="button" title="AcceptPermsiion.png" alt="AcceptPermsiion.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;Then click on the run query and it will retrieve the results. that's it :)</img></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Now lets' move to the SPFx implementation.</P> <P>&nbsp;</P> <H2>Implementation</H2> <P>&nbsp;</P> <P>Open a command prompt<BR />Move to the path where you want to create a project<BR />Create a project directory using:</P> <P>&nbsp;</P> <PRE>md GraphAPIDemo</PRE> <P>&nbsp;</P> <P>Move to the above-created directory using:</P> <P>&nbsp;</P> <PRE>cd GraphAPIDemo</PRE> <P>&nbsp;</P> <P>Now execute the below command to create an SPFx solution:</P> <P>&nbsp;</P> <PRE>&nbsp;yo @microsoft/sharepoint</PRE> <P>&nbsp;</P> <P>It will ask some questions, as shown below,</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Project Structure.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/285240i946F59348FEB36AE/image-size/large?v=v2&amp;px=999" role="button" title="Project Structure.png" alt="Project Structure.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>After a successful installation, we can open a project in any source code tool. Here, I am using the VS code, so I will execute the command:</P> <P>&nbsp;</P> <PRE>code .</PRE> <P>&nbsp;</P> <P>Now will create a demo to read messages of a user. for more details refer to <A title="this" href="#" target="_blank" rel="noopener">this</A>.</P> <P>&nbsp;</P> <P>So first of all we have to set permission as per our endpoint in <STRONG>package-solution.json</STRONG>. Now the question is which permission we have to add so there are multiple ways.</P> <P>&nbsp;</P> <P><STRONG>1. In the graph explorer</STRONG></P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px">For eg. we have to use messages endpoint so first, we will test it in graph explorer. so while we running the query there is an <STRONG>permission</STRONG> tab under the <STRONG>run query </STRONG>button so after the response checks the permission tab. It shows all required permissions for the endpoint as below.</P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Modify Permission.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/285517iC8C26E510944C0BD/image-size/large?v=v2&amp;px=999" role="button" title="Modify Permission.png" alt="Modify Permission.png" /></span></P> <P>&nbsp;</P> <P><STRONG>2. Official documentation for endpoint</STRONG></P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px">You can also find all the details in the official document for all the endpoints.&nbsp;</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <H2>Implementation</H2> <P>&nbsp;</P> <P><STRONG>1</STRONG>. In the <STRONG>package-solution.json</STRONG> file we will add permission.</P> <P>&nbsp;</P> <LI-CODE lang="json">"webApiPermissionRequests": [ { "resource": "Microsoft Graph", "scope": "Mail.Read" } ]</LI-CODE> <P>&nbsp;</P> <P>2. Move to the <STRONG>IGraphApiDemoProps.ts </STRONG>and update as below,</P> <P>&nbsp;</P> <LI-CODE lang="javascript">import { MSGraphClient } from "@microsoft/sp-http"; export interface IGraphApiDemoProps { description: string; graphClient: MSGraphClient; } </LI-CODE> <P>&nbsp;</P> <P>3. Create a file&nbsp;IGraphApiDemoState.ts inside <STRONG>src\webparts\graphApiDemo\components</STRONG> and create a state interface as below</P> <P>&nbsp;</P> <LI-CODE lang="javascript">export interface IGraphApiDemoState { messages: [{ subject: string; }] }</LI-CODE> <P>&nbsp;</P> <P>4. Move to the<STRONG>{WebpartName}Webpart.ts</STRONG></P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px">Import MSGraphClient module</P> <P class="lia-indent-padding-left-30px">Create an OnInit() to initialize the Graph Configuration for the current context.</P> <P class="lia-indent-padding-left-30px">In the render() set the&nbsp;graphClient property</P> <P>&nbsp;</P> <LI-CODE lang="javascript">import * as React from 'react'; import * as ReactDom from 'react-dom'; import { Version } from '@microsoft/sp-core-library'; import { IPropertyPaneConfiguration, PropertyPaneTextField } from '@microsoft/sp-property-pane'; import { BaseClientSideWebPart } from '@microsoft/sp-webpart-base'; import * as strings from 'GraphApiDemoWebPartStrings'; import GraphApiDemo from './components/GraphApiDemo'; import { IGraphApiDemoProps } from './components/IGraphApiDemoProps'; import { MSGraphClient } from '@microsoft/sp-http'; export interface IGraphApiDemoWebPartProps { description: string; } export default class GraphApiDemoWebPart extends BaseClientSideWebPart&lt;IGraphApiDemoWebPartProps&gt; { private graphClient: MSGraphClient; public onInit(): Promise&lt;void&gt; { return new Promise&lt;void&gt;((resolve: () =&gt; void, reject: (error: any) =&gt; void): void =&gt; { this.context.msGraphClientFactory .getClient() .then((client: MSGraphClient): void =&gt; { this.graphClient = client; resolve(); }, err =&gt; reject(err)); }); } public render(): void { const element: React.ReactElement&lt;IGraphApiDemoProps&gt; = React.createElement( GraphApiDemo, { description: this.properties.description, graphClient: this.graphClient, } ); ReactDom.render(element, this.domElement); } protected onDispose(): void { ReactDom.unmountComponentAtNode(this.domElement); } protected get dataVersion(): Version { return Version.parse('1.0'); } protected getPropertyPaneConfiguration(): IPropertyPaneConfiguration { return { pages: [ { header: { description: strings.PropertyPaneDescription }, groups: [ { groupName: strings.BasicGroupName, groupFields: [ PropertyPaneTextField('description', { label: strings.DescriptionFieldLabel }) ] } ] } ] }; } } </LI-CODE> <P>&nbsp;</P> <P>5. Move to the&nbsp;<STRONG>GraphApiDemo.tsx</STRONG> and call API here and render the data.</P> <P>&nbsp;</P> <LI-CODE lang="javascript">import * as React from 'react'; import styles from './GraphApiDemo.module.scss'; import { IGraphApiDemoProps } from './IGraphApiDemoProps'; import { IGraphApiDemoState } from './IGraphApiDemoState'; import { escape } from '@microsoft/sp-lodash-subset'; export default class GraphApiDemo extends React.Component&lt;IGraphApiDemoProps, IGraphApiDemoState&gt; { constructor(props: IGraphApiDemoProps) { super(props); this.state = { messages: [{ subject: '' }] } } public getDriveItems() { let getMessages: string = "me/messages"; if (!this.props.graphClient) { return; } this.props.graphClient .api(getMessages) .version("v1.0") .select("subject,sentDateTime,webLink") .top(5) .get((err: any, res: any): void =&gt; { if (err) { console.log("Getting error in retrieving mesages =&gt;", err) } if (res) { console.log("Success"); if (res &amp;&amp; res.value.length) { console.log(res.value); this.setState({ messages: res.value }) } } }); } public componentDidMount() { this.getDriveItems(); } public render(): React.ReactElement&lt;IGraphApiDemoProps&gt; { return ( &lt;div className={styles.graphApiDemo}&gt; { this.state.messages.map(m =&gt; &lt;&gt;&lt;span&gt;{m.subject}&lt;/span&gt;&lt;br /&gt;&lt;/&gt;)} &lt;/div&gt; ); } } </LI-CODE> <P>&nbsp;</P> <P>Now serve the application using the below command,</P> <P>&nbsp;</P> <PRE>gulp serve</PRE> <P>&nbsp;</P> <P>Now test the webpart in SharePoint-SiteURL + /_layouts/15/workbench.aspx.</P> <P>&nbsp;</P> <H2>Output</H2> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Output.png" style="width: 675px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/285520iD83B85C50B7D02F7/image-size/large?v=v2&amp;px=999" role="button" title="Output.png" alt="Output.png" /></span></P> <P>&nbsp;</P> <P>Find the full source code <A href="#" target="_self">here</A>.</P> <P>&nbsp;</P> <H2>Summary</H2> <P>&nbsp;</P> <P>In this article, we have seen how to use graph API in SPFx web part and graph explorer.</P> <P>&nbsp;</P> <P>I hope this helps.</P> <P>&nbsp;</P> <P>Sharing is caring!!</P> <P>&nbsp;</P> Thu, 03 Jun 2021 10:59:51 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/getting-started-with-graph-api-in-spfx-webpart/ba-p/2401064 ChandaniPrajapati 2021-06-03T10:59:51Z Microsoft Graph community call – June 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-graph-community-call-june-2021/ba-p/2405781 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Microsoft Graph THumbnail - June 2021.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/285511i65B8ACEEF6F49B52/image-size/large?v=v2&amp;px=999" role="button" title="Microsoft Graph THumbnail - June 2021.png" alt="Microsoft Graph THumbnail - June 2021.png" /></span></P> <P>&nbsp;</P> <P><SPAN>This month's community call features presentations on </SPAN>Assignment Graph API (v1.0 will be released to Microsoft Teams EDU tenants within days), Dev Tips and Tricks with Microsoft Graph (save coding time with 2 VS Code Extensions), and Microsoft Graph Data Connect (extracting information at scale from Microsoft Graph).&nbsp; Q&amp;A throughout call in chat.&nbsp; Microsoft Graph session recordings from Microsoft Build Conference are now available on demand.&nbsp; The call was<SPAN> hosted by </SPAN><A href="#" target="_blank" rel="noopener">Brian T. Jackett</A> (Microsoft) | <LI-USER uid="4556"></LI-USER>. <SPAN>&nbsp;Microsoft Presenters were <A href="#" target="_blank" rel="noopener">Leif Brenne</A>, Mei Tan and <A href="#" target="_blank" rel="noopener">Nik Charlebois</A>. Guest presenter <A href="#" target="_blank" rel="noopener">Elio Struyf</A> (</SPAN>Squarl)<SPAN>.&nbsp;&nbsp; This session was recorded on </SPAN>June 1, 2021<SPAN>.</SPAN></P> <P>&nbsp;</P> <P><STRONG>Topics:</STRONG></P> <P><STRONG>Assignments API – </STRONG>specifically the Assignment Graph API v1.0 will be released in Microsoft Teams EDU tenants within days.&nbsp; The APIs align to an instructor’s workflows around assignments – create, append resources, track submissions, grade and post results back to students.&nbsp; &nbsp;Try out the APIs in the Graph Explorer tool. &nbsp;&nbsp;Think of a Team as a Class, and assignments are the class activities/coursework.&nbsp; &nbsp; &nbsp;</P> <P>&nbsp;</P> <P><STRONG>Dev Tips and Tricks with Microsoft Graph - </STRONG>Save time with 2 VS Code Extensions 1) MS Graph Completion (autocompletion for Microsoft Graph URLs) &nbsp;and 2) Microsoft Graph Essentials (Preview) (CSS Completion and HTML web component attributes, if using MGT) inside Visual Studio Code.&nbsp; Extensions created by presenter are available in Marketplace. &nbsp;Microsoft Graph Essentials extension comes with snippets, code completion for CSS variables, and an extension pack.&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Microsoft Graph D</STRONG><STRONG>ata Connect</STRONG> - is about extracting information at scale from Microsoft Graph. &nbsp;Starting with an architecture overview – learn about creating an Azure Data Factory, Azure storage account, and establishing the data pipeline connection between the Microsoft 365 dataset and storage account. &nbsp;Once the pipeline is setup, define source and sink, trigger the sync and use Power BI to display data insights.&nbsp; &nbsp; &nbsp;&nbsp;</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/JePYam-hyUU" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Actions:</STRONG></P> <UL> <LI>Interested in Presenting during this call?&nbsp;&nbsp; Contact<SPAN>&nbsp;</SPAN><A href="https://gorovian.000webhostapp.com/?exam=mailto:Brian.Jackett@microsoft.com" target="_blank" rel="noopener nofollow noreferrer">Brian.Jackett@microsoft.com</A><SPAN>&nbsp;</SPAN>or<SPAN>&nbsp;</SPAN><A href="https://gorovian.000webhostapp.com/?exam=mailto:Jeremy.Thake@microsoft.com" target="_blank" rel="noopener nofollow noreferrer">Jeremy.Thake@microsoft.com</A></LI> <LI>Mark your calendar – next Microsoft Graph community call is on July 6th at 08:00am PDT -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/microsoftgraphcall</A>&nbsp;</LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>From demos:</P> <UL> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Create educationAssignment</A>&nbsp;</P> </LI> <LI> <P>Documentation – <A href="#" target="_blank" rel="noopener">educationAssignment API</A>&nbsp;</P> </LI> <LI> <P>VSCode Extension - <A href="#" target="_blank" rel="noopener">MS Graph Completion</A>&nbsp;</P> </LI> <LI> <P>VSCode Extension – <A href="#" target="_blank" rel="noopener">Microsoft Graph Essentials</A>&nbsp;</P> </LI> <LI> <P>Web - <A href="#" target="_blank" rel="noopener">Microsoft Graph Data Connect</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Overview of Microsoft Graph Data Connect</A>&nbsp;</P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Agenda:</STRONG></P> <UL> <LI>Assignments API&nbsp; -&nbsp;<SPAN><A href="#" target="_self">Leif Brenne</A> (Microsoft) | @secondleif and&nbsp;</SPAN><SPAN>Mei Tan (Microsoft)&nbsp;– <A href="#" target="_self">1:10</A></SPAN></LI> <LI>Dev Tips and Tricks with Microsoft Graph -&nbsp;<A href="#" target="_self">Elio Struyf</A> (Squarl) | @eliostruyf&nbsp;<SPAN>– <A href="#" target="_self">22:44</A></SPAN></LI> <LI>Microsoft Graph Data Connect -&nbsp;<SPAN><A href="#" target="_self">Nik Charlebois</A> (Microsoft) | @NikCharlebois&nbsp;– <A href="#" target="_self">33:20</A></SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Microsoft Build 2021 - Microsoft Graph session recordings</STRONG></P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="50%" height="30px"><STRONG>Breakouts</STRONG></TD> <TD width="50%" height="30px">&nbsp;</TD> </TR> <TR> <TD width="50%" height="57px"> <P>BRK215</P> <P>&nbsp;</P> </TD> <TD width="50%" height="57px"><U><A href="#" target="_blank" rel="noopener">Empowering developers with powerful tooling and enabling frictionless app adoption</A></U></TD> </TR> <TR> <TD width="50%" height="57px"> <P>BRK234</P> <P>&nbsp;</P> </TD> <TD width="50%" height="57px"><U><A href="#" target="_blank" rel="noopener">Build Zero Trust ready applications starting with the Microsoft identity platform</A></U></TD> </TR> <TR> <TD width="50%" height="57px"> <P>BRK243</P> <P>&nbsp;</P> </TD> <TD width="50%" height="57px"><U><A href="#" target="_blank" rel="noopener">Build great discovery &amp; collaboration apps for Microsoft 365 with new Microsoft Graph connector &amp; Adaptive Card capabilities</A></U></TD> </TR> <TR> <TD width="50%" height="57px"> <P>BRK244</P> <P>&nbsp;</P> </TD> <TD width="50%" height="57px"><U><A href="#" target="_blank" rel="noopener">Three new ways to enrich your productivity apps with Microsoft Graph tools and data</A></U></TD> </TR> <TR> <TD width="50%" height="30px"><STRONG>On Demand</STRONG></TD> <TD width="50%" height="30px">&nbsp;</TD> </TR> <TR> <TD width="50%" height="57px">OD483</TD> <TD width="50%" height="57px"> <P>&nbsp;</P> <P><U><A href="#" target="_blank" rel="noopener">Getting started with Microsoft Graph Data Connect</A></U></P> </TD> </TR> <TR> <TD width="50%" height="30px">OD500</TD> <TD width="50%" height="30px"><U><A href="#" target="_blank" rel="noopener">Build secure B2C applications​ with Azure AD External Identities</A></U></TD> </TR> <TR> <TD width="50%" height="30px">OD531</TD> <TD width="50%" height="30px"><U><A href="#" target="_blank" rel="noopener">Enlighten your Windows app with Microsoft Graph</A></U></TD> </TR> <TR> <TD width="50%" height="30px">OD534</TD> <TD width="50%" height="30px"><U><A href="#" target="_blank" rel="noopener">Integrate with Microsoft Teams data using Microsoft Graph</A></U></TD> </TR> <TR> <TD height="30px"><STRONG>Other</STRONG></TD> <TD height="30px">&nbsp;</TD> </TR> <TR> <TD height="30px">STUDIO10</TD> <TD height="30px"><U><A href="#" target="_blank" rel="noopener">Build, integrate and accelerate Multi-cloud Compliance</A></U></TD> </TR> <TR> <TD height="30px">CON061</TD> <TD height="30px"><U><A href="#" target="_blank" rel="noopener">Develop apps with the Microsoft Graph Toolkit</A></U></TD> </TR> <TR> <TD height="30px">CON059</TD> <TD height="30px"> <P>&nbsp;</P> <P><U><A href="#" target="_blank" rel="noopener">Application Authentication in the Microsoft Identity platform</A></U></P> </TD> </TR> <TR> <TD height="30px">CON066</TD> <TD height="30px"><U><A href="#" target="_blank" rel="noopener">Integrate your app with Microsoft Teams using webhooks and connectors</A></U></TD> </TR> <TR> <TD height="30px"><STRONG>Round Tables</STRONG></TD> <TD height="30px">&nbsp;</TD> </TR> <TR> <TD height="30px">CON-PRT148</TD> <TD height="30px"> <P>&nbsp;</P> <P><U><A href="#" target="_blank" rel="noopener">Microsoft Graph Connectors</A></U></P> </TD> </TR> <TR> <TD height="30px">CON-PRT149</TD> <TD height="30px"><U><A href="#" target="_blank" rel="noopener">Microsoft Graph Toolkit</A></U></TD> </TR> <TR> <TD height="30px">CON-PRT150</TD> <TD height="30px"><U><A href="#" target="_blank" rel="noopener">Microsoft Search for Developers</A></U></TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P><STRONG>General Resources:&nbsp;</STRONG></P> <UL> <LI>Suggestions –<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/M365Dev-Suggestions</A><SPAN>&nbsp;</SPAN>&nbsp;&nbsp;</LI> <LI>Graph TAP Program -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/GraphTAPForm</A><STRONG>&nbsp;</STRONG></LI> <LI>Microsoft 365 Developer Podcast<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">http://www.m365devpodcast.com/</A></LI> <LI>Microsoft Graph Mailbag -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/MSGraphMailbag</A></LI> <LI>Microsoft Q &amp; A – Graph -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/askgraph/</A></LI> <LI>Learn Module -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Get started with Microsoft Graph Toolkit</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/mgt-learn</A></LI> <LI>Repo -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Graph Toolkit v2.1</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/mgt</A>&nbsp;&nbsp;</LI> <LI>Documentation –<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Graph Toolkit Overview</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/mgt-docs</A></LI> <LI>Playground –<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Microsoft Graph Toolkit Playground</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://mgt.dev</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Stay Connected:</STRONG></P> <UL> <LI>See the full blog post for this call at -&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community/blog</A></LI> <LI><SPAN>Twitter -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://twitter.com/microsoft365dev</A>&nbsp;<SPAN>@Microsoft365Dev​</SPAN></LI> <LI><SPAN>YouTube -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/M365DevYouTube</A><SPAN>​</SPAN></LI> <LI><SPAN>Recurrent Invite to this community call -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/microsoftgraphcall</A>&nbsp;</LI> <LI>All Microsoft 365 developer community calls –<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/M365DevCalls</A></LI> </UL> <P>&nbsp;</P> Wed, 02 Jun 2021 07:29:19 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-graph-community-call-june-2021/ba-p/2405781 BrianTJackett 2021-06-02T07:29:19Z Microsoft 365 PnP Weekly - Episode 129 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-129/ba-p/2401546 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="pnp-weekly-129.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/285304i3D055A64D69640D3/image-size/large?v=v2&amp;px=999" role="button" title="pnp-weekly-129.png" alt="pnp-weekly-129.png" /></span></P> <P>&nbsp;</P> <P>In this instalment of the weekly discussion revolving around the latest news and topics on&nbsp;<SPAN>Microsoft 365</SPAN>, hosts –&nbsp;<A href="#" target="_blank" rel="noopener">Vesa Juvonen</A>&nbsp;(Microsoft) | @vesajuvonen,&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A>&nbsp;(Microsoft) | @waldekm discuss the announcements from Build 2021 and the latest articles published by the Microsoft 365 community.&nbsp;&nbsp;</P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true">Please remember to keep on providing us feedback on how we can help on this journey. We always welcome feedback on making the community more inclusive and diverse.</P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true"><LI-VIDEO vid="https://youtu.be/KR93Oc7s8iw" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true"><SPAN style="font-family: inherit;">This episode was recorded on Monday, May 31, 2021.</SPAN></P> <P>&nbsp;</P> <UL> <LI>Video at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Community YouTube channel.</A></LI> <LI>Podcast format at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://pnpweekly.podbean.com.</A></LI> </UL> <P>&nbsp;</P> <P data-unlink="true">These videos and podcasts are published each week and are intended to be roughly 45 - 60 minutes in length.&nbsp; Please do give us feedback on this video and podcast series and also do let us know if you have done something cool/useful so that we can cover that in the next weekly summary! The easiest way to let us know is to share your work on Twitter and add the hashtag<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">#PnPWeekly</A>. We are always on the lookout for refreshingly new content. “<EM>Sharing is caring!”</EM>&nbsp;</P> <P>&nbsp;</P> <P>Here are all the links and people mentioned in this recording. Thanks, everyone for your contributions to the community!<BR /><BR /></P> <P><STRONG>Events:</STRONG></P> <P>&nbsp;</P> <UL> <LI>June 1-2, 2021 -&nbsp;<A href="#" target="_blank" rel="noopener">European SharePoint Conference 2021 - Online</A></LI> <LI>August 9-11, 2021 -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">North American Collaboration Summit</A> <UL> <LI>Register with coupon code "PnP" for 25% off from the prize at<SPAN>&nbsp;</SPAN><A title="https://nacs.ticketspice.com/nacs2021" href="#" target="_blank" rel="noreferrer noopener nofollow">https://nacs.ticketspice.com/nacs2021</A></LI> </UL> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Microsoft articles:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_blank" rel="noopener">Build the next generation of collaborative apps for hybrid work</A> - <A href="#" target="_blank" rel="noopener">Nicole Herskowitz</A> (Microsoft) |&nbsp;@nicolelamb</LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft Build - Book of News</A> - Microsoft</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-teams-blog/microsoft-teams-announces-new-developer-features-build-2021/ba-p/2352558?WT.mc_id=m365-30273-wmastyka" target="_blank" rel="noopener">Microsoft Teams announces new developer features | Build 2021</A> - Microsoft</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-teams-blog/build-apps-faster-with-the-latest-microsoft-teams-toolkit/ba-p/2384611?WT.mc_id=m365-30273-wmastyka" target="_blank" rel="noopener">Build apps faster with the latest Microsoft Teams Toolkit</A> - Microsoft</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-teams-blog/what-s-new-in-microsoft-teams-may-2021/ba-p/2391927?WT.mc_id=m365-30273-wmastyka" target="_blank" rel="noopener">What’s New in Microsoft Teams | May 2021</A> - Microsoft</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-blog/visualize-and-contextualize-people-and-teams-with-a-new/ba-p/2384435?WT.mc_id=m365-30273-wmastyka" target="_blank" rel="noopener">Visualize and contextualize people and teams with a new organization browser in Outlook</A> - <A href="#" target="_blank" rel="noopener">Bill Baer</A> (Microsoft) |&nbsp;@williambaer</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-blog/what-s-new-for-admins-in-microsoft-365-apps-for-enterprise-april/ba-p/2382111?WT.mc_id=m365-30273-wmastyka" target="_blank" rel="noopener">What's new for admins in Microsoft 365 Apps for enterprise - April and May 2021</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">What’s New for the Microsoft 365 Developer | Build 2021</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">Four new features to build richer apps for Microsoft Teams meetings</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">What’s new in Office Platform at Build 2021</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft Graph @ Build 2021</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft Teams App Development Challenge Winners!</A> - Microsoft</LI> </UL> <P>&nbsp;</P> <P><STRONG>Community articles:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-spotlight-hugo-bernier/ba-p/2377738?WT.mc_id=m365-30273-wmastyka" target="_blank" rel="noopener">Microsoft 365 PnP Community Spotlight: Hugo Bernier</A> - <A href="#" target="_blank" rel="noopener">Hugo Bernier</A> (Microsoft) |&nbsp;@bernierh &amp; <A href="#" target="_blank" rel="noopener">Luise Freese</A>&nbsp;|&nbsp;@LuiseFreese</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-invite-external-users-to-a-sharepoint-site-or-microsoft/ba-p/2385603?WT.mc_id=m365-30273-wmastyka" target="_blank" rel="noopener">How to invite external users to a SharePoint site or Microsoft Team using Power Automate &amp; Graph API</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Mohamed Ashiq Faleel</A> (Tata Consultancy Services) |&nbsp;@ashiqfaleel</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/spfx-webpart-form-validation-using-react-formik/ba-p/2386945?WT.mc_id=m365-30273-wmastyka" target="_blank" rel="noopener">SPFx webpart form validation using React Formik</A> - <A href="#" target="_blank" rel="noopener">Chandani Prajapati</A> |&nbsp;@Chandani_SPD</LI> <LI><A href="#" target="_blank" rel="noopener">Cache data when using the Microsoft Graph JavaScript SDK</A>&nbsp;<SPAN>- <A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A> (Microsoft) |&nbsp;@waldekm</SPAN></LI> <LI><SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/cli-for-microsoft-365-v3-10/ba-p/2400105?WT.mc_id=m365-30246-wmastyka?WT.mc_id=m365-30273-wmastyka" target="_blank" rel="noopener">CLI for Microsoft 365 v3.10</A> -&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">Garry Trinder</A> (CPS) |&nbsp;<LI-USER uid="716447"></LI-USER></LI> <LI><A href="#" target="_blank" rel="noopener">New features in hTWOo UI version 0.2.0</A> - <A href="#" target="_blank" rel="noopener">Stefan Bauer</A> (N8D) |&nbsp;@StfBauer</LI> <LI><A href="#" target="_blank" rel="noopener">How to use hTWOo with a SPFx ReactJS web part</A> - <A href="#" target="_blank" rel="noopener">Stefan Bauer</A> (N8D) |&nbsp;@StfBauer</LI> <LI><A href="#" target="_blank" rel="noopener">Custom Icon Buttons in Power Apps with Hover Color</A> - <A href="#" target="_blank" rel="noopener">Chris Kent</A> (DMI) |&nbsp;@theChrisKent</LI> <LI><A href="#" target="_blank" rel="noopener">Environment Variables in Power Apps</A> -&nbsp;<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener">Pieter Veenstra</A><SPAN>&nbsp;(HybrIT Services) |&nbsp;@PieterVeenstra</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Showing the Intranet’s Link in the App Bar’s Global Navigation</A> - <A href="#" target="_blank" rel="noopener">Marc D Anderson</A> (Sympraxis Consulting) |&nbsp;@sympmarc</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Simplify secret keys management for M365 applications with Azure Key Vault and Azure Managed Identity</A> - <A href="#" target="_blank" rel="noopener">Sergei Sergeev</A> (Mastaq) |&nbsp;@sergeev_srg</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Microsoft 365 Fiscal Year Retention | Event-Based Library default</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Joanne C Klein</A> |&nbsp;@JoanneCKlein</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Power Platform News Rewind May 2021</A> -&nbsp;&nbsp;<A href="#" target="_blank" rel="noopener">April Dunnam</A> (Microsoft) |&nbsp;@aprildunnam</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Episode #156 - Microsoft Graph Toolkit To Do Component</A> -&nbsp;</SPAN><SPAN><A href="#" target="_blank" rel="noopener">Paolo Pialorsi</A> (PiaSys) |&nbsp;@PaoloPia</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Power Apps can now display images from Microsoft Lists</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Daniel Glenn</A>&nbsp;(InfoWorks, Inc) | @DanielGlenn,&nbsp;<A href="#" target="_blank" rel="noopener">Darrell Webster</A>&nbsp;(Modern Workplace Change) | @darrellaas</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Additional resources:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_self" rel="noopener noreferrer">Power Platform Sample Gallery</A><SPAN>&nbsp;</SPAN>- for finding easily samples from the GitHub - contributions from the community are welcome!</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Sharing is Caring initiative</A><SPAN>&nbsp;</SPAN>- Getting started guidance and training for using GitHub and contributing to the community</LI> <LI>Want to ask a question or in general engage with the community - Add a note in the Microsoft 365 PnP Community hub at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community</A></LI> <LI>Check out all the great community calls, SDKs, and tooling for Microsoft 365 from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp</A></LI> </UL> <P>&nbsp;</P> <P>If you’d like to hear from a specific community member in an upcoming recording and/or have specific questions for Microsoft 365 engineering or visitors – please let us know. We will do our best to address your requests or questions.</P> <P>&nbsp;</P> <P><EM>"Sharing is caring!"</EM></P> Tue, 01 Jun 2021 13:46:07 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-129/ba-p/2401546 Vesa Juvonen 2021-06-01T13:46:07Z CLI for Microsoft 365 v3.10 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/cli-for-microsoft-365-v3-10/ba-p/2400105 <H2><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="banner-cli-m365.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/285044iF5BB440A28D2027F/image-size/large?v=v2&amp;px=999" role="button" title="banner-cli-m365.png" alt="CLI for Microsoft 365" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">CLI for Microsoft 365</span></span></SPAN></H2> <H2 id="toc-hId--496485426"><SPAN>Manage Microsoft 365 and SharePoint Framework projects on any platform</SPAN></H2> <DIV><SPAN>CLI for Microsoft 365 is a cross-platform CLI that allows you to manage various configuration settings of Microsoft 365 and SharePoint Framework projects no matter which operating system or shell you use.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV><SPAN>While building solutions for Microsoft 365 expands beyond the Windows operating system, managing many of the platform settings is possible only through PowerShell on Windows. As more and more users work on non-Windows machines, it’s inconvenient for them to have to use a Windows virtual machine to configure their tenants. With the CLI for Microsoft 365, you can configure your tenant no matter which operating system you use. Additionally, using CLI for Microsoft 365, you can manage your SharePoint Framework projects.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV><SPAN style="color: inherit; font-size: 24px;">New version of CLI for Microsoft 365 – v3.10</SPAN></DIV> <DIV> <DIV><SPAN>Following our monthly release cadence, we’ve released a new version of the CLI for Microsoft 365 with some new capabilities. Here are a few of the most noteworthy additions.</SPAN></DIV> <DIV> <P>&nbsp;</P> <H2 id="toc-hId-183572944"><SPAN>Changes</SPAN></H2> <DIV><SPAN>We’ve continued improving CLI building upon the changes we’ve introduced in the previous version.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV> <DIV><STRONG>Added support for printing errors as JSON in JSON output</STRONG></DIV> <DIV>When scripting using the CLI, it is common to use the JSON output from commands which makes it easier to work with command responses. In the example below that uses PowerShell we can convert the JSON response into a PowerShell object using the <EM>ConvertFrom-Json</EM> cmdlet.</DIV> <DIV>&nbsp;</DIV> <DIV><LI-CODE lang="bash">$lists = m365 todo list list -o json | ConvertFrom-Json</LI-CODE></DIV> <DIV>&nbsp;</DIV> <DIV>However if an error was thrown, the CLI would return the error as a plain text string and this can be inconvenient as your script is expecting a JSON response.</DIV> <DIV>&nbsp;</DIV> <DIV>To help with error handling when using this approach, we have added support for changing the default error output type to JSON. To set the default output type for errors, execute:</DIV> <DIV>&nbsp;</DIV> <DIV><LI-CODE lang="bash">m365 cli config set --key printErrorsAsPlainText --value false</LI-CODE></DIV> <DIV>&nbsp;</DIV> </DIV> <DIV> <DIV><STRONG>Enhanced&nbsp;spo site apppermission commands</STRONG></DIV> <DIV>When working with site app permissions using the CLI we previously did not return information about the app roles which can be defined, therefore we have added returning the app roles when using the <EM>spo site apppermission get</EM> and <EM>spo site apppermission list</EM> commands in the response.</DIV> <DIV>&nbsp;</DIV> <DIV> <H2 id="toc-hId-1543689684"><SPAN>New Commands</SPAN></H2> <P><STRONG>Gets Azure AD app registration roles</STRONG></P> <P>When creating applications that use Azure AD authentication we can define custom <SPAN>roles that we can assign permissions to users or apps. The application defines and publishes the app roles and interprets them as permissions during authorization.</SPAN>&nbsp;</P> <P>&nbsp;</P> <P><SPAN>To return the roles published by an Azure AD application registration by its name</SPAN>, execute:</P> <P>&nbsp;</P> <LI-CODE lang="bash">m365 aad app role list --appName "My app"</LI-CODE> <P>&nbsp;</P> <P><STRONG>Get the value of a CLI for Microsoft 365 configuration option</STRONG></P> <P>We recently announced that we added support for configuring the CLI to your own preferences using the <EM>cli config set</EM> command, this enables you to change some of the default settings such as changing all command outputs to be JSON rather than text.</P> <P>&nbsp;</P> <P>To return the current value of a CLI configuration option, execute:</P> <P>&nbsp;</P> <LI-CODE lang="bash">m365 cli config get --key output</LI-CODE> <P>&nbsp;</P> <P><STRONG><SPAN>Upload files using Microsoft Graph</SPAN></STRONG></P> <P>The ability to upload files has been possible in the CLI for some time using the&nbsp;<EM>spo file add&nbsp;</EM>command, this command however uses SharePoint-based APIs to perform the upload and does not support new authorisation features such as the ability to control app access to specific site collections using the <EM>Sites.Selected</EM> permission scope.</P> <P>&nbsp;</P> <P>To add support for the new permission scope, we have added a new command that uses the Microsoft Graph in its implementation, the existing&nbsp;<EM>spo file add</EM> command will remain to provide backwards compatibility.</P> <P>&nbsp;</P> <P>To add a file to a specific site, execute:</P> <P>&nbsp;</P> <LI-CODE lang="bash">m365 file add --filePath file.pdf --folderUrl "https://contoso.sharepoint.com/Shared Documents"</LI-CODE> <P>&nbsp;</P> <P><STRONG><SPAN>Remove a specified Power App</SPAN></STRONG></P> <P>Microsoft Power Apps is a popular no/low code business application development platform in Microsoft 365 and managing apps created by business users is an important maintenance tasks for administrators. We have extended our support for Power Apps by introducing a command to remove Power Apps from an environment.</P> <P>&nbsp;</P> <P>To remove a specified Microsoft Power App, execute:&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="bash">m365 pa app remove --name 3989cb59-ce1a-4a5c-bb78-257c5c39381d</LI-CODE> <P>&nbsp;</P> <P><STRONG><SPAN>Updates a specific application permission for a site</SPAN></STRONG></P> <P>The Microsoft Graph gives us the ability to create site permissions on SharePoint Online or OneDrive sites, which has been possible in the CLI using the <EM>spo site apppermission add</EM> command, however it was not possible to update these registrations so we have added a new command to add that support.</P> <P>&nbsp;</P> <P>To update a&nbsp;specific application permission by its name on a given site collection, execute:</P> <P>&nbsp;</P> <LI-CODE lang="bash">m365 spo site apppermission set --siteUrl https://contoso.sharepoint.com/sites/project-x --appDisplayName Foo --permission read</LI-CODE> <H2>&nbsp;</H2> <H2 id="toc-hId--2071219242"><SPAN>New script samples</SPAN></H2> <P>&nbsp;</P> <DIV><SPAN>CLI for Microsoft 365 is a great tool both for quick adjustments to the configuration of your Microsoft 365 tenant as well as automating more complex tasks. Because CLI for Microsoft 365 is cross-platform you can use it on any OS and in any shell. To help you get started using the CLI for Microsoft 365 for automation scenarios, we started gathering some </SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer"><SPAN>sample scripts</SPAN></A><SPAN>.</SPAN></DIV> <P>&nbsp;</P> <DIV><SPAN>If you have any scripts that you use frequently, please </SPAN><A href="#" target="_self" rel="noopener noreferrer"><SPAN>share</SPAN></A><SPAN>&nbsp;them with us so that we can learn more about the common automation scenarios.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV> <DIV><STRONG>Replace user in Microsoft 365 Group or Microsoft Team with another user</STRONG></DIV> <DIV>When an employee leaves an organisation you may want to find and replace the employee account with another account.</DIV> <DIV>&nbsp;</DIV> <DIV><SPAN>This script&nbsp;helps <A href="#" target="_self">update the membership</A> by accepting the old user to be replaced, the new user that will be added and a CSV file&nbsp;containing the groups or teams to be iterated over.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV><STRONG>Monitor site collection storage usage</STRONG></DIV> <DIV>As a SharePoint Administrator one of your tasks is to ensure that the storage being used in your Microsoft 365 tenant does not exceed the allowance of your tenant so this does not negatively impact daily usage.</DIV> <DIV>&nbsp;</DIV> <DIV>This <A href="#" target="_self">script</A> helps by iterating over all SharePoint Online sites in your Microsoft 365 tenant, listing any sites that are over a defined storage threshold and emails the results to a specific email address.</DIV> <DIV>&nbsp;</DIV> <DIV><STRONG><SPAN>Add multiple folders in libraries using a CSV file</SPAN></STRONG></DIV> <DIV>When adding files into SharePoint Online, a common task is to create a defined folder structure in target document libraries within a target SharePoint Online site before adding the files.</DIV> <DIV>&nbsp;</DIV> <DIV>This <A href="#" target="_self">script</A> helps by showing how to create folder structures in different document libraries using a CSV file as an input.</DIV> <DIV>&nbsp;</DIV> <DIV><STRONG><SPAN>Replace SharePoint Online Site Collection Administrator with another user</SPAN></STRONG></DIV> <DIV>When an employee leaves an organisation you may want to find and replace the employee account with another account.</DIV> <DIV>&nbsp;</DIV> <DIV>The <A href="#" target="_self">script</A> helps by removing a user from a given SharePoint Online site collection and adds a new user as a Site Collection Administrator.</DIV> <DIV>&nbsp;</DIV> <DIV><STRONG><SPAN>Search Power Automate Flows for specific connections</SPAN></STRONG></DIV> <DIV>Microsoft Power Automate is a very powerful workflow tool in Microsoft 365 which use connectors to integrate with different platforms, a common connector that is used is the SharePoint Online connector which help simplify requests made to SharePoint Online, however it can be difficult to get a view of which Power Automate Flows are connected to specific SharePoint Online sites.</DIV> <DIV>&nbsp;</DIV> <DIV>This <A href="#" target="_self">script</A> helps by iterating over all Power Automate Flows in your Microsoft 365 tenant, searches the exported Flows for a given Site Collection URL and returns the results.</DIV> <DIV>&nbsp;</DIV> <DIV> <H2 id="toc-hId-962667237"><SPAN>Contributors</SPAN></H2> <P>&nbsp;</P> <DIV><SPAN>This release wouldn’t be possible without the help of (in alphabetical order) </SPAN></DIV> <P>&nbsp;</P> <UL> <LI><SPAN><A href="#" target="_self">Cas van Iersel</A></SPAN></LI> <LI><A href="#" target="_self"><SPAN>Vipul Kelkar</SPAN></A></LI> <LI><A href="#" target="_self" rel="noopener noreferrer"><SPAN>Patrick Lamber</SPAN></A></LI> <LI><A href="#" target="_self" rel="noopener noreferrer"><SPAN>Veronique Lengelle</SPAN></A></LI> <LI><SPAN><A href="#" target="_self" rel="noopener noreferrer">Waldek Mastykarz</A></SPAN></LI> <LI><A href="#" target="_self"><SPAN>Abderahman Moujahid</SPAN></A></LI> <LI><A href="#" target="_self" rel="noopener noreferrer"><SPAN>Nanddeep Nachan</SPAN></A></LI> <LI><SPAN><A href="#" target="_self" rel="noopener noreferrer">Albert Jan-Schot</A></SPAN></LI> <LI><SPAN><A href="#" target="_self" rel="noopener noreferrer">Garry Trinder</A></SPAN></LI> </UL> <P>&nbsp;</P> <DIV><SPAN>Thank you all for the time you chose to spend on the CLI for Microsoft 365 and your help to advance it!</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV> <H2 id="toc-hId--844787226"><SPAN>Work in progress</SPAN></H2> <P>&nbsp;</P> <DIV><SPAN>Here are some things that we’re currently working on.</SPAN></DIV> <P>&nbsp;</P> <H3 id="toc-hId-1771808326"><SPAN>More commands, what else</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>Microsoft 365 is evolving and new capabilities are being released every day. With CLI for Microsoft 365, we aim to help you manage your tenant on any platform in a consistent way, no matter which part of Microsoft 365 you interact with. While we keep adding new commands to CLI for Microsoft 365 each release, we still barely scratched the surface with what’s possible in Microsoft 365. In the upcoming versions of the CLI for Microsoft, you can expect us to add more commands across the different workloads in Microsoft 365.</SPAN></DIV> <DIV>&nbsp;</DIV> <H3 id="toc-hId--1843100600"><SPAN>Updating Azure AD apps</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>Recently, we introduced a command to easily create Azure AD app registrations. Because they're backbone of every app you'd build on Microsoft 365, we think you should be able to create them as easily as possible. So with CLI for Microsoft 365, you can create a fully configured Azure AD app for the most common scenarios with just one line of code.</SPAN></DIV> <DIV>&nbsp;</DIV> <DIV><SPAN>We're currently working on adding support for updating Azure AD app registration which will be helpful for example when building apps for Microsoft Teams. Stay tuned!</SPAN></DIV> <DIV>&nbsp;</DIV> <H3 id="toc-hId-644412233"><SPAN>Script examples</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>In every release of the CLI for Microsoft 365, we introduce new commands for managing Microsoft 365. With over 350 commands across the different Microsoft 365 services, the CLI for Microsoft 365 has become a powerful tool, not just for managing your tenant but also for automating your daily work.</SPAN></DIV> <P>&nbsp;</P> <DIV><SPAN>We’d love to show you how you can use the CLI for Microsoft 365 to build automation scripts in PowerShell Core and Bash. If you have any scripts using SPO or PnP PowerShell that you use frequently, please share them with us so that we can learn more about the common automation scenarios.</SPAN></DIV> <DIV>&nbsp;</DIV> <H3 id="toc-hId--1163042230"><SPAN>'ensure' commands</SPAN></H3> <P>&nbsp;</P> <DIV><SPAN>Recently, we shipped our first ensure command - an <A href="#" target="_self">easy way to help you that a site with specific settings exists</A>. If it doesn't, CLI creates it for you, if it does, CLI ensures it has the right properties. All in one line of code. We'd love to hear from you how you like it and if it's something you'd like us to implement for other commands as well.</SPAN></DIV> <P>&nbsp;</P> <H2 id="toc-hId-1195387884"><SPAN>Try it today</SPAN></H2> <P>&nbsp;</P> <DIV><SPAN>Get the latest release of the CLI for Microsoft 365 from npm by executing:</SPAN></DIV> <P>&nbsp;</P> <DIV><LI-CODE lang="bash">npm i -g @pnp/cli-microsoft365</LI-CODE></DIV> <P>&nbsp;</P> <DIV><SPAN>Alternatively, you can get the latest release from Docker by executing:</SPAN></DIV> <P>&nbsp;</P> <DIV><LI-CODE lang="bash">docker run --rm -it m365pnp/cli-microsoft365:latest</LI-CODE></DIV> <P>&nbsp;</P> <DIV><SPAN>If you need more help getting started or want more details about the commands, the architecture or the project, go to </SPAN><A href="#" target="_self" rel="noopener noreferrer"><SPAN>aka.ms/cli-m365</SPAN></A><SPAN>. </SPAN></DIV> <P>&nbsp;</P> <DIV><SPAN>If you see any room for improvement, please, don’t hesitate to reach out to us either on </SPAN><A href="#" target="_self" rel="noopener noreferrer"><SPAN>GitHub</SPAN></A><SPAN>&nbsp;or </SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer"><SPAN>twitter</SPAN></A><SPAN>.</SPAN></DIV> </DIV> </DIV> </DIV> </DIV> </DIV> </DIV> </DIV> Mon, 31 May 2021 06:31:38 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/cli-for-microsoft-365-v3-10/ba-p/2400105 garrytrinder 2021-05-31T06:31:38Z Microsoft 365 PnP Community Spotlight: Hugo Bernier https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-spotlight-hugo-bernier/ba-p/2377738 <P><STRONG><SPAN data-contrast="auto"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hugobernier.jpg" style="width: 359px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/284663i9EE089AA7E4D52DB/image-size/large?v=v2&amp;px=999" role="button" title="hugobernier.jpg" alt="hugobernier.jpg" /></span></SPAN></STRONG></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Which community project do you maintain?</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN><SPAN>Web Part Samples, Extension Samples, Sharing is Caring (w/ David Warner, Emili Mancini, April Dunnam and Luise Freese)</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">How does it help people?&nbsp;</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>The sample repositories are there to help people find useful code samples to get started on their new SPFx development tasks and learn new concepts. For those learning to use the PnP reusable controls and libraries (such as PnPjs), they can find real-world code samples to help.&nbsp;<BR />&nbsp;<BR />All samples are contributed by the community, and we make sure to celebrate the hard work of contributors and give them the opportunity to provide a demo of their samples on the PnP community calls.&nbsp;<BR />&nbsp;<BR />Sharing is Caring asks: "What prevents people from starting to use the M365 resources available and/or prevents them from contributing back to the community?" and addresses each barrier to adoption with hands-on sessions conducted with small groups or, in some cases, one-on-one.&nbsp;<BR />&nbsp;<BR />For example, we found that one of the biggest reasons why people don't contribute to open-source repositories is because they find GitHub intimidating; so, we created a 1-hour workshop where we should people how to use GitHub by walking them through their first contribution to a real PnP repository. The first pull request to the Sharing is Caring repository counts as a valid contribution and the session attendees are listed on the list of contributors on the PnP monthly calls.&nbsp;<BR />&nbsp;<BR />Many of our Sharing is Caring first-time contributors go on to become frequent contributors after attending just one session!&nbsp;<BR />&nbsp;<BR />Sharing is Caring also provides individual guidance with Office Hours and the Buddy System.&nbsp;<BR />&nbsp;<BR />Office Hours allows people to book 15-30 minutes with a PnP member so they can get help with whatever may be preventing them from succeeding in their projects.&nbsp;&nbsp;<BR />&nbsp;<BR />Buddy System pairs first-time presenters with an experienced presenter to help prepare their presentations, rehearse, and -- if necessary -- co-present their community demos. It helps those who are afraid of public speaking to remove the fear and deliver great presentations.</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">What have you been working on lately?</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>Lately, I've been working on building a set of new sample repositories for Power Platform samples, including Power Apps, Power Automate, Power Fx, and Power Virtual Agents.&nbsp;<BR />&nbsp;<BR />I've also been working on a "unified" sample browser, which will help people find samples for any Microsoft 365 technology in one place.&nbsp;<BR />&nbsp;<BR />Finally, I've been working with the rest of the Sharing is Caring team to build new workshops covering how to use other PnP resources (such as the CLI for Microsoft 365, PnPjs, etc.), expanding our coverage (with future sessions covering the Power Platform), and helping new community contributors (with a "First Time Presenter" session, advanced GitHub topics, etc.)</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">What do you do at work?</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>I'm an independent consultant and I help organizations that have tried to implement Microsoft 365 solutions and failed multiple times. I help with solution architecture, training team members and stakeholders, conducting workshops, and helping out with coding/implementing solutions.&nbsp;<BR />&nbsp;<BR />A big part of what I do is educating teams about what to do, what not to do, and -- most often -- how to get started in the right direction. How to tackle big projects by breaking them down into small iterations, adopting a delivery mindset, and prioritizing by risk and high business importance.</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Why are you a part of the M365 community?</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>I love how the M365 community is welcoming, inclusive, and friendly. Even though we've all been stuck at home for over a year, the M365 community members have become some of my closest friends; they're my new extended family.&nbsp;<BR />&nbsp;<BR />The M365 is not about stroking people's egos; it is about helping each other and celebrating other people's successes while being there when people are struggling.</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">What was you first community contribution?</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>My first community contribution was to present a student budget web part which I had built over a weekend. I was a C#/.NET developer and I had never used SPFx, Typescript, React, GitHub, or Visual Studio Code before this.&nbsp; The web part integrated cool concepts like an editable grid, dashboard-like charts, and using mobx to facilitate data changes and write back to SharePoint lists.&nbsp;<BR />&nbsp;<BR />I wanted to show the web part because I wanted people who -- like me -- came from a legacy SharePoint/C# world and had no experience with the SPFx ecosystem that it was easy to get started.&nbsp;<BR />&nbsp;<BR />I eventually separated the components of the demo into smaller components and added some of them to the PnP re-usable controls. I thought the folks who managed the repo would dismiss me and/or mock me, but they accepted my pull request and welcomed me to continue contributing... and I haven't stopped since!</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">One tip for someone who’d like to start contributing</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>It is absolutely your place to contribute! If you see that something is missing and no one else has contributed it, you don't need to wait for someone else to do it! You are welcome to help!&nbsp;<BR />&nbsp;<BR />If you don't know where to get started, look for issues in the PnP repositories that are tagged as "Help Wanted" or "Good First Issue" and add a comment to tell the maintainer that you want to help.&nbsp;<BR />&nbsp;<BR />And if you don't know how to use GitHub, sign up for our Sharing is Caring First-Time Contributor session; we'll get you started!</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> Fri, 28 May 2021 16:38:38 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-spotlight-hugo-bernier/ba-p/2377738 Luise Freese 2021-05-28T16:38:38Z Microsoft 365 Developer Community Call recording – 27th of May, 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-community-call-recording-27th-of-may/ba-p/2392027 <P>Recording of the Microsoft 365 – General M365 development Special Interest Group (SIG) community call from May 27, 2021.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sig-27th-may-recording.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/284499i1B8A4C37178FE4F3/image-size/large?v=v2&amp;px=999" role="button" title="sig-27th-may-recording.png" alt="sig-27th-may-recording.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Call Summary</STRONG></P> <P>Latest news from Microsoft 365 engineering and updates on open-source projects: PnP .NET libraries, PnP PowerShell, modernization tooling, on yo Teams, on Microsoft Graph Toolkit, and on Microsoft Teams Samples.</P> <P>&nbsp;</P> <P>Join on the <A href="#" target="_blank" rel="noopener">Viva Connections private preview</A>!&nbsp; The <A href="#" target="_blank" rel="noopener">Microsoft Teams Toolkit v2</A> is now available!&nbsp; Looking to get started with Microsoft Teams development? Don’t miss out our <A href="#" target="_blank" rel="noopener">Teams samples gallery</A>!&nbsp; Check out the <A href="#" target="_blank" rel="noopener">Microsoft 365 Extensibility look book gallery</A>, and register now for June trainings on <A href="#" target="_blank" rel="noopener">Sharing-is-caring</A>.&nbsp; &nbsp;Recent PnP project releases include - <STRONG>yo Teams</STRONG> <STRONG><EM>generator-teams</EM></STRONG> (apps generator) v3.1.0 GA, v3.2.0 Preview, <STRONG><EM>yo teams-build-core</EM></STRONG> (gulp tasks) v1.2.0 Preview, and <STRONG>Microsoft Graph Toolkit</STRONG> v2.2.0 GA along with insights into MGT vNext.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Open-source project status:</STRONG></P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="33.333333333333336%"><STRONG>Project</STRONG></TD> <TD width="33.333333333333336%"><STRONG>Current Version</STRONG></TD> <TD width="33.333333333333336%"><STRONG>Release/Status</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%">PnP .NET Libraries - PnP Framework</TD> <TD width="33.333333333333336%">v1.4.0</TD> <TD width="33.333333333333336%"><STRONG>Prepping for v1.5.0 release week of May 31</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%">PnP .NET Libraries - PnP Core SDK</TD> <TD width="33.333333333333336%">v1.1.0</TD> <TD width="33.333333333333336%"><STRONG>Prepping for v1.2.0 release week of May 31</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%">PnP PowerShell</TD> <TD width="33.333333333333336%">v1.5.0 (just added Cmdlets for Viva Connections and Syntex)</TD> <TD width="33.333333333333336%">Prepping for v1.6.0 (June)</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - generator-teams</TD> <TD width="33.333333333333336%"><STRONG>Released v3.1.0 GA, v3.2.0 Preview</STRONG></TD> <TD width="33.333333333333336%">Preview with Viva Connections support</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - yoteams-build-core</TD> <TD width="33.333333333333336%">v1.1.0,&nbsp;<STRONG>v1.2.0 Preview</STRONG></TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Yo teams - msteams-react-base-component</TD> <TD width="33.333333333333336%">v3.1.0</TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> <TR> <TD width="33.333333333333336%">Microsoft Graph Toolkit (MGT)</TD> <TD width="33.333333333333336%"><STRONG>v2.2.0 GA </STRONG></TD> <TD width="33.333333333333336%">&nbsp;</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>Additionally, 2 new Teams samples were delivered in the last 2 weeks.&nbsp; The host of this call was&nbsp;<SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">David Warner II</A>&nbsp;(Catapult Systems) | @DavidWarnerII.&nbsp;</SPAN>&nbsp; Q&amp;A takes place in chat throughout the call.</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/y0diQu23g88" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Actions:&nbsp;&nbsp;</STRONG></P> <P>&nbsp;</P> <UL> <LI>Join on the Viva Connections private preview! | <A href="#" target="_blank" rel="noopener">aka.ms/viva/connections/preview/register</A></LI> <LI><STRONG>Feedback wanted:&nbsp; Regarding PnP PowerShell</STRONG> – “What if we did not return classic CSOM objects from the cmdlets?” &nbsp;Comments to:&nbsp; @erwinvanhunen.&nbsp; &nbsp;&nbsp;</LI> <LI><STRONG>Register for Sharing is Caring Events</STRONG>: <UL> <LI>First Time Contributor Session –&nbsp;<A href="#" target="_blank" rel="noopener">June 29<SUP>th</SUP></A> (EMEA, APAC &amp; US friendly times available)</LI> <LI>Community Docs Session –&nbsp;<A href="#" target="_blank" rel="noopener">May</A></LI> <LI>PnP – SPFx Developer Workstation Setup – <A href="#" target="_blank" rel="noopener">June 17<SUP>th</SUP></A> &nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">June 24<SUP>th</SUP></A></LI> <LI>AMA (Ask Me Anything) – Microsoft Graph &amp; MGT – <A href="#" target="_blank" rel="noopener">June 8<SUP>th</SUP></A></LI> <LI>AMA (Ask Me Anything) – Microsoft Teams Dev - June</LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">June 30<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – <A href="#" target="_blank" rel="noopener">May 27<SUP>th</SUP></A>, <A href="#" target="_blank" rel="noopener">June 16<SUP>th</SUP></A></LI> <LI>Maturity Model Practitioners – <A href="#" target="_blank" rel="noopener">June 15<SUP>th</SUP></A></LI> </UL> </LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> <LI>PnP Buddy System - <A href="#" target="_blank" rel="noopener">Request a Buddy</A></LI> <LI>Download the recurrent invite for this call –&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365-dev-sig</A></LI> <LI><SPAN>Call attention to your great work by using the&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">#PnPWeekly</A><SPAN>&nbsp;on Twitter.</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Microsoft Teams Development Samples:&nbsp;<SPAN>&nbsp;</SPAN></STRONG>(<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/TeamsSampleBrowser</A>)</P> <UL> <LI> <P><STRONG><A href="#" target="_blank" rel="noopener">Action Preview</A> - </STRONG><A href="#" target="_blank" rel="noopener">Markus Moeller</A> |@Moeller2_0</P> </LI> <LI> <P><A href="#" target="_blank" rel="noopener"><STRONG>Teams Context Viewer tab</STRONG></A><STRONG> - </STRONG><A href="#" target="_blank" rel="noopener">Sébastien Levert</A> | <LI-USER uid="926766"></LI-USER></P> </LI> </UL> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="PnPCall-May27th-ReducedResolution.gif" style="width: 750px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/284502iC49EE73AF5EAD2B4/image-size/large?v=v2&amp;px=999" role="button" title="PnPCall-May27th-ReducedResolution.gif" alt="PnPCall-May27th-ReducedResolution.gif" /></span></P> <P>&nbsp;</P> <P>Hello!&nbsp; it’s always great to see everyone on the call today.&nbsp; Thanks for participating.&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Demos</STRONG><SPAN>&nbsp;</SPAN>delivered in this session</P> <UL> <LI> <P><STRONG>Getting started with HTWOO UI – Fluent Design in HTML and CSS</STRONG> – an open-source community driven Fluent UI driven framework that’s just HTML, CSS and a bit of JS. &nbsp;&nbsp;Simple to use in the Microsoft 365 ecosystem, same branding as Fluent UI. &nbsp;&nbsp;Complete component library - tables, typography, avatars, icons, dialogs and more. &nbsp;Steps through HTWOO install – a npm package and 2 theme aware SPFx web parts.&nbsp; &nbsp;Complete documentation and samples.</P> </LI> <LI> <P><STRONG>Gain your users attention with the Microsoft Teams Activity Feed API</STRONG> – send activity notifications from both apps that live outside Teams and others (like static tabs) inside Teams, to Teams tabs, bots, chat.&nbsp; &nbsp;Uses the activity feed notification APIs in Microsoft Graph.&nbsp; Presenter review types of metadata on messages, requirements for sending defined activity type notifications, app registration, consent, manifest, notifications settings in Teams, etc.&nbsp; Then steps through the code for simple and advanced notifications.&nbsp;</P> </LI> <LI> <P><STRONG>Deep linking from List Formatting to Power Automate solution</STRONG>&nbsp;– Integrate lists, list formatting and Power Apps.&nbsp; Achieve similar look and feel using same SVG icons in lists and Power App.&nbsp; Call for list data from a Power App.&nbsp; Launch a Power App and send mail from within a list. &nbsp;Color SVG icons using fill properties in Inkscape SVG Editor.&nbsp; Showed using code from 2 samples in this demo.&nbsp; &nbsp; &nbsp;&nbsp;</P> <P>&nbsp;</P> </LI> </UL> <P>Thank you for your work. Samples are often showcased in Demos.</P> <P>&nbsp;</P> <P><STRONG>Topics</STRONG><SPAN>&nbsp;</SPAN>covered in this call</P> <UL> <LI>PnP .NET library updates -&nbsp;<A href="#" target="_self">Bert Jansen</A> (Microsoft) @O365bert -<SPAN>&nbsp;<A href="#" target="_self">5:50</A></SPAN></LI> <LI>PnP PowerShell updates -<SPAN><A href="#" target="_self">&nbsp;Erwin van Hunen</A> (Valo Intranet) @erwinvanhunen</SPAN>&nbsp;-<SPAN>&nbsp;<A href="#" target="_self">8:21</A></SPAN></LI> <LI>yo Teams updates -&nbsp;<A href="#" target="_self">David Warner II</A> (Catapult Systems) @DavidWarnerII<SPAN>&nbsp;</SPAN><SPAN>- <A href="#" target="_self">10:00</A></SPAN></LI> <LI>Microsoft Graph Toolkit updates -<SPAN>&nbsp;<A href="#" target="_self">Nikola Metulev</A> (Microsoft) | @metulev</SPAN><SPAN>&nbsp;</SPAN>-<SPAN>&nbsp;<A href="#" target="_self">10:31</A></SPAN></LI> <LI>Microsoft Teams Samples -&nbsp;<A href="#" target="_self">David Warner II</A> (Catapult Systems) @DavidWarnerII<SPAN>&nbsp;</SPAN><SPAN>- <A href="#" target="_self">13:38</A></SPAN></LI> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Getting started with HTWOO UI – Fluent Design in HTML and CSS – <A href="#" target="_blank" rel="noopener">Stefan Bauer</A> (N8D) | @StfBauer - <A href="#" target="_self">15:31</A></P> </LI> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Gain your users attention with the Microsoft Teams Activity Feed API – <A href="#" target="_blank" rel="noopener">Thomas Gölles</A> (Solvion) | @thomyg - <A href="#" target="_self">29:54</A></P> </LI> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Deep linking from List Formatting to Power Automate solution&nbsp;– <A href="#" target="_blank" rel="noopener">Chris Kent</A> (DMI) | @theChrisKent -<SPAN style="font-family: inherit;">&nbsp;<A href="#" target="_self">44:55</A></SPAN><SPAN style="font-family: inherit;">&nbsp;</SPAN></P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>Additional resources around the covered topics and links from the slides.</P> <UL> <LI> <P>Blog Post - <A href="#" target="_blank" rel="noopener">HTWOO UI launched – Fluent Design in HTML and CSS</A>&nbsp;</P> </LI> <LI> <P>Documentation: <A href="#" target="_blank" rel="noopener">ABOUT HTWOO UI</A>&nbsp;</P> </LI> <LI> <P>Repo: <A href="#" target="_blank" rel="noopener">HTWOO UI framework</A>&nbsp;</P> </LI> <LI> <P>Samples: <A href="#" target="_blank" rel="noopener">htwoo-samples</A>&nbsp;</P> </LI> <LI> <P><SPAN style="font-family: inherit;">Documentation - </SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">Send activity feed notifications to users in Microsoft Teams</A><SPAN style="font-family: inherit;">&nbsp;</SPAN></P> </LI> <LI> <P><SPAN style="font-family: inherit;">Video - </SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">Microsoft Teams – Use the teamwork Microsoft Graph endpoint</A><SPAN style="font-family: inherit;">&nbsp;</SPAN></P> </LI> <LI> <P><SPAN style="font-family: inherit;">Documentation - </SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">Create deep links</A><SPAN style="font-family: inherit;">&nbsp;</SPAN></P> </LI> <LI> <P><SPAN style="font-family: inherit;">Graphics - </SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">Fluent UI Icon Search</A><SPAN style="font-family: inherit;">&nbsp;</SPAN></P> </LI> <LI> <P><SPAN style="font-family: inherit;">Sample - </SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">Person Mail To Link</A><SPAN style="font-family: inherit;">&nbsp;</SPAN></P> </LI> <LI> <P><SPAN style="font-family: inherit;">Sample - </SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">Launch Power App Button</A><SPAN style="font-family: inherit;">&nbsp;</SPAN></P> </LI> <LI> <P><SPAN style="font-family: inherit;"><SPAN style="font-family: inherit;">Blog post - </SPAN><A style="font-family: inherit; background-color: #ffffff;" href="#" target="_blank" rel="noopener">Custom Icon Buttons in Power Apps with Hover Color</A><SPAN style="font-family: inherit;">&nbsp;</SPAN></SPAN></P> </LI> <LI> <P>Editor - <A href="#" target="_blank" rel="noopener">Inkscape</A> - <A href="#" target="_blank" rel="noopener">https://inkscape.org</A></P> </LI> <LI>PnP Weekly – Episode 128 with guest <A href="#" target="_blank" rel="noopener">Katie Swanson</A>&nbsp;(Microsoft) | @kswansondesign | <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-128/ba-p/2381362" target="_blank" rel="noopener">video</A> | <A href="#" target="_blank" rel="noopener">podcast</A></LI> <LI>Microsoft Teams Toolkit v2.2 | <A href="#" target="_blank" rel="noopener">https://aka.ms/teams-toolkit</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/m365/extensibility</LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Microsoft Teams Samples Gallery</A><SPAN>&nbsp;</SPAN>| aka.ms/teams-samples</LI> </UL> <P>&nbsp;</P> <P><STRONG>General resources</STRONG>:</P> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp/ct-p/Microsoft365PnP" target="_blank" rel="noopener">Microsoft 365 PnP Community hub</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp/community&nbsp;</LI> <LI>Microsoft Graph Toolkit in Microsoft Learn |<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/learn-mgt</A></LI> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint look book</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Yo Teams video training package</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">.NET Standard 2.0 version of SharePoint Online CSOM API</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 community (PnP) videos</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp-videos</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft Teams Toolkit for Visual Studio Code</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">yo Teams</A><SPAN>&nbsp;</SPAN>| aka.ms/yoteams</LI> <LI>Video -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started using yo Teams</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Wictor Wilén</A><SPAN>&nbsp;</SPAN>(Avanade)| @wictor</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-sharepoint-blog/build-a-crisis-management-site-to-connect-people-and-information/ba-p/1216791?WT.mc_id=m365-24198-cxa" target="_blank" rel="noopener">Build a crisis management site to connect people and information</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Developer documentation</A><SPAN>&nbsp;</SPAN>|<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spdev-docs</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Power Shell</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Modernization Partner Guidance</A><SPAN>&nbsp;</SPAN>- Feedback welcome</LI> <LI>Solution -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Building a modern search experiences with SharePoint Framework web parts</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Page transformation guidance</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Page transformation videos</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Modernization scanner</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 developer program site</A><SPAN>&nbsp;</SPAN>- Need to become a Tenant Admin to test look book capabilities? Get a Microsoft 365 E5 developer subscription (free tenant for 90 days)</LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">SharePoint Provisioning Service<SPAN>&nbsp;</SPAN></A>- Easily provision look book designs to any tenant in the world</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Provisioning templates on Github</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Provisioning Tenant Templates documentation</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Page Transformation webcast series</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Power Shell</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Modernization Tools</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Upcoming Calls | Recurrent Invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>Microsoft Graph call – </STRONG>June 1<SUP>st</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/microsoftgraphcall</A></LI> <LI><STRONG>SharePoint Framework call – </STRONG>June 3<SUP>rd</SUP>at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG>SharePoint monthly call – </STRONG>June 8<SUP>th</SUP> at 8:00am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/sp-call</A></LI> <LI><STRONG>Office add-in monthly call – </STRONG>June 9<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG>Adaptive Cards monthly call – </STRONG>June 10<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> <LI><STRONG>M365 General Dev call – </STRONG>June 10<SUP>th</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>Microsoft Teams monthly call – </STRONG>June 15<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/microsoftteamscommunitycall</A></LI> <LI><STRONG>Power Apps monthly call – </STRONG>June 16<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A></LI> <LI><STRONG>Microsoft Identity Platform – </STRONG>June 17th at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A>&nbsp;</LI> </UL> <P>&nbsp;</P> <P>General Microsoft 365 Dev Special Interest Group bi-weekly calls are targeted at anyone who's interested in the general Microsoft 365 development topics. This includes Microsoft Teams, Bots, Microsoft Graph, CSOM, REST, site provisioning, PnP PowerShell, PnP Sites Core, Site Designs, Microsoft Flow, PowerApps, Column Formatting, list formatting, etc. topics. More details on the Microsoft 365 community from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/m365pnp</A>. We also welcome community demos, if you are interested in doing a live demo in these calls!</P> <P>&nbsp;</P> <P>You can download recurrent invite from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/m365-dev-sig</A>. Welcome and join in the discussion. If you have any questions, comments, or feedback, feel free to provide your input as comments to this post as well. More details on the Microsoft 365 community and options to get involved are available from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp</A>.</P> <P>&nbsp;</P> <P><EM>“Sharing is caring”</EM></P> <HR /> <P><EM>Microsoft 365 PnP team, Microsoft - 28th of May 2021</EM></P> Fri, 28 May 2021 07:20:50 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-developer-community-call-recording-27th-of-may/ba-p/2392027 Vesa Juvonen 2021-05-28T07:20:50Z How to invite external users to a SharePoint site or Microsoft Team using Power Automate & Graph API https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-invite-external-users-to-a-sharepoint-site-or-microsoft/ba-p/2385603 <P>SharePoint and Microsoft teams services in Microsoft 365 makes it easier to share content and collaborate with external users who is outside your organization. A guest or external user is someone who do not have a school or work account with your organization, they can be your partner, vendor, customer etc. In this article let us see how to build a self-registration experience for external users with the help of Microsoft Forms &amp; Power Automate to onboard them to a</P> <UL> <LI>SharePoint online site</LI> <LI>Microsoft Team</LI> </UL> <H2>Microsoft Form to collect details from External User:</H2> <P>To start building this experience, create a Microsoft form with the setting <STRONG>Anyone can respond</STRONG> and with fields (Name, Email address etc) to collect information from the external user to send invitation.</P> <H2><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MSForm-ExternalUserdetails.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283744i5EE743018235BE28/image-size/large?v=v2&amp;px=999" role="button" title="MSForm-ExternalUserdetails.png" alt="MSForm-ExternalUserdetails.png" /></span></H2> <H2>Azure Active Directory Application registration:</H2> <P>The next step after creating the form is to register an <SPAN><A href="#" target="_blank" rel="noopener">application in Azure AD</A></SPAN> with Microsoft graph API permission to send invitation to external user. After the app is registered obtain the client id, client secret &amp; tenant id to be used in the Power Automate flow further down this article to generate the JSON webtoken to access Microsoft Graph API for sending invitation. Find below screenshot with the permission User.Invite.All added to the app. Keep in mind the permission requires Admin consent.</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AdApp-GraphPermissiontoInviteGuestUser.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283747iBFCAE7000FA85663/image-size/large?v=v2&amp;px=999" role="button" title="AdApp-GraphPermissiontoInviteGuestUser.png" alt="AdApp-GraphPermissiontoInviteGuestUser.png" /></span></P> <P>There is also delegated permission available for User.Invite.All.</P> <H1>Onboard External users to a SharePoint online site:</H1> <P>Once the Microsoft form is ready, we can start building the Power Automate flow which can send the email invitation to the external user and for granting access to the SharePoint site. The <SPAN><A href="#" target="_blank" rel="noopener">external sharing</A></SPAN> features of SharePoint Online enables users in your organization share content with people outside the organization. There is no limit to the number of guests you can invite to SharePoint sites as per this <SPAN><A href="#" target="_blank" rel="noopener">SharePoint online limits</A></SPAN> documentation. Find below steps to create the Power Automate flow with a custom approval on a Microsoft Team</P> <H2>Power Automate Flow:</H2> <P>Create an Automated flow with the trigger <STRONG>When a new response is submitted</STRONG> with the above form name selected on the dropdown and then add the action <STRONG>Get response details</STRONG> with the <STRONG>Response Id</STRONG> selected from the dynamic content for the trigger to get the form details submitted in the Microsoft form by the external user. Find screenshot below</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MSFormTrigger-ExternalUser.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283749iE72C51E732F69B83/image-size/large?v=v2&amp;px=999" role="button" title="MSFormTrigger-ExternalUser.png" alt="MSFormTrigger-ExternalUser.png" /></span></P> <H2>Adaptive card for Teams Approval:</H2> <P>For the Approval in Microsoft Teams, I have used a custom card created from the <SPAN><A href="#" target="_blank" rel="noopener">Adaptive card designer</A></SPAN> with elements <STRONG>ColumnSet, TextBlock</STRONG> to display information submitted in the form &amp; <STRONG>action button</STRONG> Approve and Reject to take further action by a Microsoft teams user to proceed with Invitation for the Guest account creation. Find screenshot below from the adaptive card designer</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AdaptiveCard-DesignforApproval.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283751i05981D49C0025718/image-size/large?v=v2&amp;px=999" role="button" title="AdaptiveCard-DesignforApproval.png" alt="AdaptiveCard-DesignforApproval.png" /></span></P> <P>&nbsp;</P> <OL> <LI>After the card is designed, copy the card payload from the designer and go to the flow and then add the action <STRONG>Post adaptive card and wait for a response</STRONG> and make appropriate selection on the available fields as shown below <UL class="lia-list-style-type-disc"> <LI><STRONG>Post as</STRONG>: Flow bot</LI> <LI><STRONG>Post in</STRONG>: Channel</LI> <LI><STRONG>Message</STRONG>: Payload copied from designer. Replace the fields for usrName &amp; userEmail selected from the dynamic content from the outputs of the action <STRONG>Get response details</STRONG>. The created on textBlock element has the flow expression formatDateTime(utcNow(),'g') to display the current datetime information on the card.</LI> </UL> </LI> </OL> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AdaptiveCard-PAFlow-POSTAdatptivecardandwaitforresponse1.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283832iE97C226E1847A51C/image-size/large?v=v2&amp;px=999" role="button" title="AdaptiveCard-PAFlow-POSTAdatptivecardandwaitforresponse1.png" alt="AdaptiveCard-PAFlow-POSTAdatptivecardandwaitforresponse1.png" /></span></P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AdaptiveCard-PAFlow-POSTAdatptivecardandwaitforresponse2.png" style="width: 601px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283834i108906E5F5F321C1/image-size/large?v=v2&amp;px=999" role="button" title="AdaptiveCard-PAFlow-POSTAdatptivecardandwaitforresponse2.png" alt="AdaptiveCard-PAFlow-POSTAdatptivecardandwaitforresponse2.png" /></span></P> <UL> <LI><STRONG>Update Message</STRONG>: Custom message which appear after an action taken in Microsoft Teams</LI> <LI><STRONG>Team</STRONG>: Select the Team where you would like to post the card</LI> <LI><STRONG>Channel</STRONG>: Select the channel from the Microsoft Team where you would like to have the approval adaptive card posted</LI> </UL> <P>Card payload:</P> <P>&nbsp;</P> <LI-CODE lang="applescript">{ "type": "AdaptiveCard", "body": [ { "type": "TextBlock", "weight": "Bolder", "text": "Approval for adding the External User", "wrap": true }, { "type": "TextBlock", "spacing": "None", "text": "Created Add flow expression to get current date", "isSubtle": true, "wrap": true }, { "type": "ColumnSet", "columns": [ { "type": "Column", "items": [ { "type": "TextBlock", "text": "Name:", "wrap": true, "size": "Medium", "weight": "Bolder" }, { "type": "TextBlock", "text": "Email:", "wrap": true, "weight": "Bolder", "size": "Medium" } ], "width": "stretch" }, { "type": "Column", "width": "stretch", "items": [ { "type": "TextBlock", "text": "usrName-Replace it from Microsoft Form", "wrap": true }, { "type": "TextBlock", "text": "userEmail-Replace it from Microsoft Form ", "wrap": true } ] } ] } ], "actions": [ { "type": "Action.Submit", "title": "Approve", "id": "btnApprove" }, { "type": "Action.Submit", "title": "Reject", "id": "btnReject" } ], "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "version": "1.0" } </LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <OL start="2"> <LI>The above adaptive card is used to get approval from the Organization teams user based on the information submitted by the external user in the Microsoft form to proceed with the next steps for sending the guest account invite. Now we will have to identify if the user has clicked the button Approve or Reject. This information can be easily obtained from the Outputs of the action.</LI> </OL> <P><STRONG>Note</STRONG>: Adaptive card can also be sent using a Microsoft Graph API with the card payload in Attachments field</P> <P><A href="#" target="_blank" rel="noopener">https://docs.microsoft.com/en-us/graph/api/channel-post-messages?view=graph-rest-beta&amp;tabs=http</A></P> <H3>Adaptive card for Teams - Dynamic content Missing:</H3> <P>As of the time I am writing this article there is an issue in getting the output as dynamic content for the <STRONG>Post adaptive card and wait for a response</STRONG> action if there is dynamic content added on the JSON Payload (Name, Email from Forms). The fix is to run the flow till the post adaptive card action and take an action on Microsoft teams by clicking either Approve or Reject and then go to the Flow run from the history as shown below</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AdaptiveCard-PAFlow-POSTAdatptivecardandwaitforresponseRunHistory.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283841i0F0F0D886B748997/image-size/large?v=v2&amp;px=999" role="button" title="AdaptiveCard-PAFlow-POSTAdatptivecardandwaitforresponseRunHistory.png" alt="AdaptiveCard-PAFlow-POSTAdatptivecardandwaitforresponseRunHistory.png" /></span></P> <P>From the above screenshot, we can see if the user has clicked the Approve or Reject button from the field <STRONG>submitActionId</STRONG>. To get this value in Flow, use the expression</P> <P>&nbsp;</P> <LI-CODE lang="applescript">outputs('Post_adaptive_card_and_wait_for_a_response').body.submitActionId</LI-CODE> <P>&nbsp;</P> <P>or</P> <P>&nbsp;</P> <LI-CODE lang="applescript">@outputs('Post_adaptive_card_and_wait_for_a_response')?['body/submitActionId']</LI-CODE> <P>&nbsp;</P> <P>Spaces in the name of the action is replaced with underscore.</P> <P>To get the userPrincipalName, the expression is</P> <P>&nbsp;</P> <LI-CODE lang="applescript">outputs('Post_adaptive_card_and_wait_for_a_response').body.responder.userPrincipalName</LI-CODE> <P>&nbsp;</P> <P>or</P> <P>&nbsp;</P> <LI-CODE lang="applescript">@outputs('Post_adaptive_card_and_wait_for_a_response')?['body/responder/userPrincipalName']</LI-CODE> <P>&nbsp;</P> <P>To get the submitActionId, enter the expression outputs('Post_adaptive_card_and_wait_for_a_response').body.submitActionId in the compose action, then add a condition control to decide action based on users approval</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AdaptiveCard-cardactionoutput.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283843iEA966FE976A43528/image-size/large?v=v2&amp;px=999" role="button" title="AdaptiveCard-cardactionoutput.png" alt="AdaptiveCard-cardactionoutput.png" /></span></P> <P>I have observed this issue occurs in other team’s adaptive card actions as well, the above fix should work. Now we can implement the logic to send the Guest Invitation using Microsoft Graph API. To send the invite,&nbsp;we will use the Azure AD application registered above.</P> <H2>Generate JSON Web token to Access Graph API:</H2> <P>Be ready with the ClientId, Client Secret and Tenant Id collected from the AD app registration you have done initially. The only authentication flow to generate a access token for application permissions is <SPAN><A href="#" target="_blank" rel="noopener">Client credentials</A></SPAN>.</P> <P>To generate a token</P> <OL> <LI>Store the Client Secret on a String variable or a compose action</LI> <LI>Make a HTTP request using the HTTP connector with the following details. Make sure to replace the string for tenantId, azureAdAppclientId and azureAdAppclientSecret</LI> </OL> <P>Add a HTTP connector action to the flow for making a POST request per the following information</P> <P><STRONG>HTTP Method</STRONG>: POST</P> <P><STRONG>URI</STRONG>: <SPAN><A href="#" target="_blank" rel="noopener">https://login.microsoftonline.com/yourtenantId/oauth2/v2.0/token</A></SPAN></P> <P><STRONG>Headers</STRONG>:</P> <P><U><EM>Key</EM></U>: Content-Type</P> <P><U><EM>Value</EM></U>: application/x-www-form-urlencoded</P> <P><STRONG>Body</STRONG>:</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="applescript">tenant=yourtenantId&amp;client_id=azureAdAppclientId&amp;client_secret=@{decodeUriComponent(variables('azureAdAppclientSecret'))}&amp;grant_type=client_credentials&amp;scope=https://graph.microsoft.com/.default</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>For the client secret make sure to URL encode using the expression encodeUriComponent(variables(‘clientSecret’)) else the request will fail due to the presence of special characters.</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MSGraph-GenerateJSONWebToken.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283871i7259E97855CDF538/image-size/large?v=v2&amp;px=999" role="button" title="MSGraph-GenerateJSONWebToken.png" alt="MSGraph-GenerateJSONWebToken.png" /></span></P> <P>In the above screen, I have added a compose action to store the SharePoint site address to be used for granting the external user access to. To extract the token from the above request, add the parse JSON action with Content from the <STRONG>HTTP request body</STRONG> and the following schema</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="applescript">{ "type": "object", "properties": { "token_type": { "type": "string" }, "scope": { "type": "string" }, "expires_in": { "type": "integer" }, "ext_expires_in": { "type": "integer" }, "access_token": { "type": "string" }, "refresh_token": { "type": "string" } } } </LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MSGraph-ParseJSONWebToken.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283872i0847D6A0FE6B53E1/image-size/large?v=v2&amp;px=999" role="button" title="MSGraph-ParseJSONWebToken.png" alt="MSGraph-ParseJSONWebToken.png" /></span></P> <P>Include the access token when calling the Microsoft Graph API on the Headers section or raw as shown in the next section.</P> <H2>Send Invitation using Microsoft Graph API:</H2> <P>Before sending the invitation, validate if the user already exists in your organization AD tenant by using the email address of the external user with the help of the action <STRONG>Search for users</STRONG> as shown below</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SearchforexternalUser.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283873i5D856C72A794F8F8/image-size/large?v=v2&amp;px=999" role="button" title="SearchforexternalUser.png" alt="SearchforexternalUser.png" /></span></P> <P>&nbsp;</P> <P>If there is null response for the action <STRONG>Search for users</STRONG>, then the user does not exist. This can be calculated using the expression length and by passing the value as a parameter, if it is equals zero then the external user does not exist. If the user already exists, we can directly proceed to granting the external user access to SharePoint.</P> <P>Graph API to check if a guest user already exists:</P> <P><A href="#"Guest'&amp;$filter=mail eq exteruseremailaddress@domain.com'" target="_self">https://graph.microsoft.com/v1.0/users?$filter=UserType eq 'Guest'&amp;$filter=mail eq exteruseremailaddress@domain.com'</A>&nbsp;</P> <P>or</P> <P><A href="#"fejom29487@troikos.com')" target="_blank" rel="noopener">https://graph.microsoft.com/v1.0/users?$filter=startswith(mail,'<U>exteruseremailaddress@domain.com</U>')</A></P> <P>Find below the Graph API endpoint http request details to <SPAN><A href="#" target="_blank" rel="noopener">invite the external user</A></SPAN></P> <P><STRONG>Method</STRONG>: POST</P> <P><STRONG>URL</STRONG>: <SPAN><A href="#" target="_blank" rel="noopener">https://graph.microsoft.com/v1.0/invitations</A></SPAN></P> <P><STRONG>Request Body</STRONG>:</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="applescript">{ "invitedUserDisplayName": "External User Name", "invitedUserEmailAddress": "External User Email Address", "sendInvitationMessage": true, "inviteRedirectUrl": "SharePoint site URL or any URL", "invitedUserMessageInfo": { "messageLanguage": "en-US", "customizedMessageBody": "Welcome to the M365PAL SharePoint site! Click the link below and sign in." } } </LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MSGraph-SendInvitationforExternaluser.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283874iB97155249F988658/image-size/large?v=v2&amp;px=999" role="button" title="MSGraph-SendInvitationforExternaluser.png" alt="MSGraph-SendInvitationforExternaluser.png" /></span></P> <P>In HTTP request body, use the dynamic content of the form to populate the fields invitedUserDisplayName &amp; Emailaddress. The invite redirectUri is the output of the compose action which has the SharePoint site url. I have added a delay of one minute before granting access to SharePoint site for the external user, this step is to make sure there is an entry in Azure AD for the external user/guest account.</P> <P>Custom connector can be used for calling the Graph API for sending invitations instead of using HTTP connector, you can refer to the post <A href="#" target="_blank" rel="noopener">Call Microsoft Graph API in Power Apps and Power Automate using a Custom connector</A> for detailed instructions.</P> <H2>Grant Access to SharePoint site for the external user:</H2> <P>As soon as the guest account invite is sent from the above Microsoft graph API request HTTP action, it is time to grant access to the SharePoint site for the external user. There is a SharePoint REST API endpoint to add a user to a SharePoint group (Owners, Member, Visitors), find below the request details</P> <P><STRONG>Request URL</STRONG>:&nbsp;<A href="#" target="_self">https://tenantname.sharepoint.com/sites/siteName/ _api/web/sitegroups/GetById(groupId)/users</A></P> <P>For the groupId to the corresponding SharePoint group, refer to the following table</P> <TABLE border="2"> <TBODY> <TR> <TD width="302"> <P><STRONG>SharePoint Group</STRONG></P> </TD> <TD width="302"> <P><STRONG>GroupId</STRONG></P> </TD> </TR> <TR> <TD width="302"> <P>Owners</P> </TD> <TD width="302"> <P>3</P> </TD> </TR> <TR> <TD width="302"> <P>Members</P> </TD> <TD width="302"> <P>5</P> </TD> </TR> <TR> <TD width="302"> <P>Visitors</P> </TD> <TD width="302"> <P>4</P> </TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P><STRONG>Headers</STRONG>:</P> <P><U><EM>Key</EM></U>: accept <U><EM>value</EM></U>: applicationhttps://techcommunity.microsoft.com/json;odata.metadata=none</P> <P><U><EM>Key</EM></U>: content-type <U><EM>value</EM></U>: applicationhttps://techcommunity.microsoft.com/json</P> <P><STRONG>Body</STRONG>:</P> <P>&nbsp;</P> <LI-CODE lang="applescript">{'LoginName':'i:0#.f|membership|userPrinipalNameorEmailaddressofExternalUser'}</LI-CODE> <P>&nbsp;</P> <P>For the external user, the email address used to send the invite works.</P> <P>Go back to the flow and add the action <STRONG>Send an HTTP request to SharePoint</STRONG> to call the above REST api. Find below the screenshot of the action</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AddUsertoSharePointGroup.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283876i3A58AC17FEAE1E79/image-size/large?v=v2&amp;px=999" role="button" title="AddUsertoSharePointGroup.png" alt="AddUsertoSharePointGroup.png" /></span></P> <P>The above action uses delegated permission, the user of the connection should have access to the SharePoint site. As of now, there is no Graph API for adding the user to a SharePoint group but you can register an app in Active directory and add permission for SharePoint to call the above REST API. Refer to the documentation <A href="#" target="_blank" rel="noopener">Granting access via Azure AD App-Only</A> for calling the REST API using the registered AD app.</P> <H2>Testing the flow:</H2> <P>The whole flow can now be tested by submitting the form which sends the adaptive card on Teams first as shown below</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AdaptiveCard-InTeamsChannel.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283877i2CAE3F5DAFF07A49/image-size/large?v=v2&amp;px=999" role="button" title="AdaptiveCard-InTeamsChannel.png" alt="AdaptiveCard-InTeamsChannel.png" /></span></P> <P>After the card is approved, the invite is sent to the external user. After the external user accepts the invite, the user should be automatically redirected to the SharePoint site with the appropriate access. The access to the SharePoint site for the external user can be validated by the checking the membership of the SharePoint group in the site even before the user accepts the invitation. The site members can also be validated by accessing the URL for All users list:</P> <P><A href="#" target="_blank" rel="noopener">https://tenantName.sharepoint.com/sites/siteName/_layouts/15/people.aspx?MembershipGroupId=0</A></P> <P>This approach of granting access to SharePoint site for external user can be applied to internal users by <A href="#" target="_blank" rel="noopener">turning off the access requests</A>.</P> <H2>Limit External Sharing by domain:</H2> <P>The external sharing on SharePoint can be restricted based on domain of the external user. To enable the setting login into the SharePoint admin center &gt; Policies &gt; Sharing &gt; Enable the checkbox Limit external sharing by domain &gt; Add domain</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ExternalSharing-RestrictDomain.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283878i2BCE04FF59AD8213/image-size/large?v=v2&amp;px=999" role="button" title="ExternalSharing-RestrictDomain.png" alt="ExternalSharing-RestrictDomain.png" /></span></P> <H1>Onboard External users to a Microsoft Team:</H1> <P>To onboard the external user to a Microsoft Team, the only change to the above flow is, instead of adding the user to the SharePoint group the user must be added as a Member to the Microsoft 365 group connected to the Microsoft Teams. The graph API to <A href="#" target="_blank" rel="noopener">add a member</A> to a Microsoft Team is</P> <P><STRONG>Request Type</STRONG>: POST</P> <P><STRONG>Request URL</STRONG>: <A href="#" target="_blank" rel="noopener">https://graph.microsoft.com/v1.0/teams/{team-id}/members</A></P> <P>The team-id is the Microsoft 365 group object Id, as there is always a Microsoft 365 group connected to a Microsoft Team.</P> <P><STRONG>Body</STRONG>:</P> <P>&nbsp;</P> <LI-CODE lang="applescript">{ "@odata.type": "#microsoft.graph.aadUserConversationMember", "roles": ["owner"], "user@odata.bind": "https://graph.microsoft.com/v1.0/users(userObjectIdofGuest')" } </LI-CODE> <P>&nbsp;</P> <P>The expression to get the user object Id of the external user as per the below screenshot is</P> <P>&nbsp;</P> <LI-CODE lang="applescript">outputs('HTTP-SendGuestInvitation').body.invitedUser.Id</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>The expression can be used in a compose action to get the Object Id of the external user which can be used in the Graph API request to add the member to a Team.&nbsp;<STRONG>HTTP-SendGuestInvitation</STRONG> is the name of the HTTP Action.</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="externalUserObjectId.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283882i30DB43DB52F61917/image-size/large?v=v2&amp;px=999" role="button" title="externalUserObjectId.png" alt="externalUserObjectId.png" /></span></P> <H2>Permission for the Azure AD App to add a member to a Microsoft Team:</H2> <P>The application permission Group.ReadWrite.All has to be added on the Azure AD app, if you are going to be using the same JSON webtoken generated above. There is delegated permission as well for adding members.</P> <P><A href="#" target="_blank" rel="noopener">https://graph.microsoft.com/Group.ReadWrite.All</A></P> <P>I recommend you read the following documentation from Microsoft for External sharing</P> <P><A href="#" target="_blank" rel="noopener">https://docs.microsoft.com/en-us/microsoftteams/manage-external-access</A></P> <P><A href="#" target="_blank" rel="noopener">https://docs.microsoft.com/en-us/microsoftteams/guest-access</A></P> <P><A href="#" target="_blank" rel="noopener">https://docs.microsoft.com/en-us/microsoftteams/communicate-with-users-from-other-organizations</A></P> <H2><STRONG>Summary:</STRONG></H2> <P>With this, the Power Automate flow should send the invitation as shown below to the external user.</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="externalUserInvitationEmail.png" style="width: 605px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283883i12B00828DE4DB125/image-size/large?v=v2&amp;px=999" role="button" title="externalUserInvitationEmail.png" alt="externalUserInvitationEmail.png" /></span></P> <P>If it is for a Microsoft Team, the external user should be licensed for teams service to open it on their teams client. The same flow can be also configured for Microsoft 365 group.</P> <P>This post was originally published in <A href="#" target="_self">ashiqf.com</A></P> <P>&nbsp;</P> Wed, 26 May 2021 15:25:16 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/how-to-invite-external-users-to-a-sharepoint-site-or-microsoft/ba-p/2385603 AshiqFaleel 2021-05-26T15:25:16Z SPFx webpart form validation using React Formik https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/spfx-webpart-form-validation-using-react-formik/ba-p/2386945 <H2>Introduction</H2> <P>&nbsp;</P> <P>Formik is the world's most popular open-source form library for React and React Native. We can also use this library in our SPFx web part as well to manage form validations. Using this library we don't have to write custom validations. so let's start step-by-step implementation.</P> <P>&nbsp;</P> <H3>What is formik?</H3> <P>&nbsp;</P> <P>Formik is a small library that helps us with the these parts: Getting values in and out of form state. Validation and error messages. Handling form submission.</P> <P>Formik is designed to manage forms with complex validation with ease.</P> <P>Formik supports synchronous and asynchronous form-level and field-level validation.</P> <P>Furthermore, it comes with baked-in support for schema-based form-level validation through Yup.</P> <P>For more details about Fromik refer to the below articles,</P> <P>&nbsp;</P> <P><STRONG><A title="Formik official documentation" href="#" target="_self">Formik official documentation</A>&nbsp;</STRONG></P> <P><STRONG><A title="Manage Forms In React With Formik" href="#" target="_self">Manage Forms In React With Formik</A>&nbsp;</STRONG></P> <P><STRONG><A title="Formik validation Schema" href="#" target="_self">Formik validation Schema</A>&nbsp;</STRONG></P> <H2>&nbsp;</H2> <H2>SharePoint List Structure</H2> <P>&nbsp;</P> <P>Create a list called&nbsp;<STRONG>Tasks&nbsp;</STRONG>with below fields,</P> <P>&nbsp;</P> <TABLE style="width: 100%;" border="1" width="100%"> <TBODY> <TR> <TD width="50%" height="27px"><STRONG>Field Name(Internal name)</STRONG></TD> <TD width="50%" height="27px"><STRONG>Field Type</STRONG></TD> </TR> <TR> <TD width="50%" height="27px">Title (default)</TD> <TD width="50%" height="27px">Single line of text</TD> </TR> <TR> <TD width="50%" height="27px">StartDate</TD> <TD width="50%" height="27px"> <P>Date and Time (Date only)</P> </TD> </TR> <TR> <TD width="50%" height="27px">EndDate</TD> <TD width="50%" height="27px">Date and Time (Date only)</TD> </TR> <TR> <TD width="50%" height="27px">ProjectName</TD> <TD width="50%" height="27px">Single line of text</TD> </TR> <TR> <TD width="50%" height="27px">TaskDetails</TD> <TD width="50%" height="27px">Multiple lines of text</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>After the creation of the list, we will start to create the SPFx web part.</P> <P>&nbsp;</P> <H2>Formik implementation with SPFx</H2> <P>&nbsp;</P> <P>Open a command prompt<BR />Move to the path where you want to create a project<BR />Create a project directory using:</P> <P>&nbsp;</P> <PRE>md react-formik</PRE> <P>&nbsp;</P> <P>Move to the above-created directory using:</P> <P>&nbsp;</P> <PRE>cd react-formik</PRE> <P>&nbsp;</P> <P>Now execute the below command to create an SPFx solution:</P> <P>&nbsp;</P> <PRE>&nbsp;yo @microsoft/sharepoint </PRE> <P>&nbsp;</P> <P>It will ask some questions, as shown below,</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Project Setup.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283850iDC7320A79F49D015/image-size/large?v=v2&amp;px=999" role="button" title="Project Setup.png" alt="Project Setup.png" /></span></P> <P>&nbsp;</P> <P>After a successful installation, we can open a project in any source code tool. Here, I am using the VS code, so I will execute the command:</P> <P>&nbsp;</P> <PRE>code .</PRE> <P>&nbsp;</P> <P>Now we will install the following packages:</P> <P>&nbsp;</P> <PRE>npm i formik<BR />npm i yup<BR />npm i @pnp/spfx-controls-react<BR />npm i @microsoft/sp-dialog</PRE> <P>&nbsp;</P> <P>In the end, our output will be like this,</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Output.png" style="width: 844px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283854iF3FA39A2B052AAF5/image-size/large?v=v2&amp;px=999" role="button" title="Output.png" alt="Output.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>After the successful installation, we will start our form implementation.</P> <P>&nbsp;</P> <P><STRONG>1. Create below files</STRONG></P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px"><EM>I{webpartname}State.ts</EM> inside <STRONG>src/webparts/reactFormik/components</STRONG></P> <P class="lia-indent-padding-left-30px"><EM>SPService.ts</EM> file inside <STRONG>src/webparts/shared/service</STRONG></P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-indent-padding-left-30px">In the end, our structure will be looks like this,</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Project Structure.png" style="width: 347px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283851i147B68545317BE61/image-size/large?v=v2&amp;px=999" role="button" title="Project Structure.png" alt="Project Structure.png" /></span></P> <P>&nbsp;</P> <P>2. Create a state interface as below inside&nbsp;<STRONG>IReactFormikState.ts.</STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="javascript">export interface IReactFormikState { projectName?: string; startDate?: any; endDate?: any; } </LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P>3. Create a method to create a task inside <STRONG>SPService.ts.</STRONG></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="javascript">import "@pnp/sp/webs"; import "@pnp/sp/lists"; import "@pnp/sp/items"; import "@pnp/sp/webs"; import "@pnp/sp/site-users/web"; import { Web } from "@pnp/sp/webs"; export class SPService { private web; constructor(url: string) { this.web = Web(url); } public async createTask(listName: string, body: any) { try { let createdItem = await this.web.lists .getByTitle(listName) .items .add(body); return createdItem; } catch (err) { Promise.reject(err); } } }</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>4. Move to the&nbsp;<STRONG>ReactFormikWebPart.ts</STRONG>. In this, we will pass the current SP context and read site URL from user.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="javascript">import * as React from 'react'; import * as ReactDom from 'react-dom'; import { Version } from '@microsoft/sp-core-library'; import { IPropertyPaneConfiguration, PropertyPaneTextField } from '@microsoft/sp-property-pane'; import { BaseClientSideWebPart } from '@microsoft/sp-webpart-base'; import * as strings from 'ReactFormikWebPartStrings'; import ReactFormik from './components/ReactFormik'; import { IReactFormikProps } from './components/IReactFormikProps'; import { sp } from "@pnp/sp/presets/all"; export interface IReactFormikWebPartProps { description: string; siteUrl: string; } export default class ReactFormikWebPart extends BaseClientSideWebPart&lt;IReactFormikWebPartProps&gt; { protected onInit(): Promise&lt;void&gt; { return super.onInit().then(_ =&gt; { sp.setup({ spfxContext: this.context }); }); } public render(): void { const element: React.ReactElement&lt;IReactFormikProps&gt; = React.createElement( ReactFormik, { description: this.properties.description, context: this.context, siteUrl: this.properties.siteUrl ? this.properties.siteUrl : this.context.pageContext.web.absoluteUrl } ); ReactDom.render(element, this.domElement); } protected onDispose(): void { ReactDom.unmountComponentAtNode(this.domElement); } protected get dataVersion(): Version { return Version.parse('1.0'); } protected getPropertyPaneConfiguration(): IPropertyPaneConfiguration { return { pages: [ { header: { description: strings.PropertyPaneDescription }, groups: [ { groupName: strings.BasicGroupName, groupFields: [ PropertyPaneTextField('description', { label: strings.DescriptionFieldLabel }), PropertyPaneTextField('siteUrl', { label: strings.SiteUrlFieldLabel }) ] } ] } ] }; } } </LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>5. Move to the&nbsp;<STRONG>ReactFormik.tsx</STRONG> file to render form and validations</P> <P>&nbsp;</P> <P class="lia-align-justify lia-indent-padding-left-30px"><STRONG>yup syntaxs:</STRONG></P> <P class="lia-align-justify lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-align-justify lia-indent-padding-left-30px">1. For string:&nbsp;yup.string().required('Required')</P> <P class="lia-align-justify lia-indent-padding-left-30px">2. For date:&nbsp;yup.date().required('Required').nullable()</P> <P class="lia-align-justify lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-align-justify lia-indent-padding-left-30px"><STRONG>Related to Formik</STRONG></P> <P class="lia-align-justify lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-align-justify lia-indent-padding-left-30px">1. Fromik has its own handleReset and handleSubmit method so we don not have to manage manually</P> <P class="lia-align-justify lia-indent-padding-left-30px">2. We have to set state value and error message from control so for that I have created a common method</P> <P class="lia-indent-padding-left-30px">&nbsp;</P> <P class="lia-align-justify lia-indent-padding-left-30px">1. In&nbsp;the constructor, we will set the current SP context, bind the service and required methods and initialize the states.</P> <P class="lia-align-justify lia-indent-padding-left-30px">2. Create&nbsp;createRecord() to create task list item using SPService.</P> <P class="lia-align-justify lia-indent-padding-left-30px">3. In the render(), first we will add all the controls like date picker, text field, people picker, and dropdown, etc inside <STRONG>&lt;Formik&gt;</STRONG>.</P> <P class="lia-align-justify lia-indent-padding-left-30px">&nbsp; &nbsp; then We will set properties as below,</P> <P class="lia-align-justify lia-indent-padding-left-30px">&nbsp; &nbsp;&nbsp;<STRONG>initialValues</STRONG> - This is one type o state at here we will set empty or null or undefined as an initial level.</P> <P class="lia-align-justify lia-indent-padding-left-30px">&nbsp; &nbsp;&nbsp;<STRONG>validationSchema</STRONG> - At here we will do validations using <STRONG>yup</STRONG>. so for this, I am creating one const and wills et this constant in this prop.</P> <P class="lia-align-justify lia-indent-padding-left-30px">&nbsp; &nbsp; <STRONG>onSubmit</STRONG> - At here we will call the method to create a record in the SharePoint list</P> <P class="lia-align-justify lia-indent-padding-left-30px">&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="javascript">import * as React from 'react'; import styles from './ReactFormik.module.scss'; import { IReactFormikProps } from './IReactFormikProps'; import { IReactFormikState } from './IReactFormikState'; import { SPService } from '../../shared/service/SPService'; import { TextField } from '@fluentui/react/lib/TextField'; import { Stack, } from '@fluentui/react/lib/Stack'; import { Formik, FormikProps } from 'formik'; import { Label } from 'office-ui-fabric-react/lib/Label'; import * as yup from 'yup'; import { PeoplePicker, PrincipalType } from "@pnp/spfx-controls-react/lib/PeoplePicker"; import { DatePicker, Dropdown, mergeStyleSets, PrimaryButton, IIconProps } from 'office-ui-fabric-react'; import { sp } from '@pnp/sp'; import { Dialog } from '@microsoft/sp-dialog'; const controlClass = mergeStyleSets({ control: { margin: '0 0 15px 0', maxWidth: '300px', }, }); export default class ReactFormik extends React.Component&lt;IReactFormikProps, IReactFormikState&gt; { private cancelIcon: IIconProps = { iconName: 'Cancel' }; private saveIcon: IIconProps = { iconName: 'Save' }; private _services: SPService = null; constructor(props: Readonly&lt;IReactFormikProps&gt;) { super(props); this.state = { startDate: null, endDate: null } sp.setup({ spfxContext: this.props.context }); this._services = new SPService(this.props.siteUrl); this.createRecord = this.createRecord.bind(this); } /** set field value and error message for all the fields */ private getFieldProps = (formik: FormikProps&lt;any&gt;, field: string) =&gt; { return { ...formik.getFieldProps(field), errorMessage: formik.errors[field] as string } } /** create record in sharepoint list */ public async createRecord(record: any) { let item = await this._services.createTask("Tasks", { Title: record.name, TaskDetails: record.details, StartDate: record.startDate, EndDate: new Date(record.endDate), ProjectName: record.projectName, }).then((data) =&gt; { Dialog.alert("Record inseterd successfully !!!"); return data; }).catch((err) =&gt; { console.error(err); throw err; }); } public render(): React.ReactElement&lt;IReactFormikProps&gt; { /** validations */ const validate = yup.object().shape({ name: yup.string().required('Task name is required'), details: yup.string() .min('15', 'Minimum required 15 characters') .required('Task detail is required'), projectName: yup.string().required('Please select a project'), startDate: yup.date().required('Please select a start date').nullable(), endDate: yup.date().required('Please select a end date').nullable() }) return ( &lt;Formik initialValues={{ name: '', details: '', projectName: '', startDate: null, endDate: null }} validationSchema={validate} onSubmit={(values, helpers) =&gt; { console.log('SUCCESS!! :-)\n\n' + JSON.stringify(values, null, 4)); this.createRecord(values).then(response =&gt; { helpers.resetForm() }); }}&gt; { formik =&gt; ( &lt;div className={styles.reactFormik}&gt; &lt;Stack&gt; &lt;Label className={styles.lblForm}&gt;Current User&lt;/Label&gt; &lt;PeoplePicker context={this.props.context as any} personSelectionLimit={1} showtooltip={true} showHiddenInUI={false} principalTypes={[PrincipalType.User]} ensureUser={true} disabled={true} defaultSelectedUsers={[this.props.context.pageContext.user.email as any]} /&gt; &lt;Label className={styles.lblForm}&gt;Task Name&lt;/Label&gt; &lt;TextField {...this.getFieldProps(formik, 'name')} /&gt; &lt;Label className={styles.lblForm}&gt;Project Name&lt;/Label&gt; &lt;Dropdown options={ [ { key: 'Project1', text: 'Project1' }, { key: 'Project2', text: 'Project2' }, { key: 'Project3', text: 'Project3' }, ] } {...this.getFieldProps(formik, 'projectName')} onChange={(event, option) =&gt; { formik.setFieldValue('projectName', option.key.toString()) }} /&gt; &lt;Label className={styles.lblForm}&gt;Start Date&lt;/Label&gt; &lt;DatePicker className={controlClass.control} id="startDate" value={formik.values.startDate} textField={{ ...this.getFieldProps(formik, 'startDate') }} onSelectDate={(date) =&gt; formik.setFieldValue('startDate', date)} /&gt; &lt;Label className={styles.lblForm}&gt;End Date&lt;/Label&gt; &lt;DatePicker className={controlClass.control} id="endDate" value={formik.values.endDate} textField={{ ...this.getFieldProps(formik, 'endDate') }} onSelectDate={(date) =&gt; formik.setFieldValue('endDate', date)} /&gt; &lt;Label className={styles.lblForm}&gt;Task Details&lt;/Label&gt; &lt;TextField multiline rows={6} {...this.getFieldProps(formik, 'details')} /&gt; &lt;/Stack&gt; &lt;PrimaryButton type="submit" text="Save" iconProps={this.saveIcon} className={styles.btnsForm} onClick={formik.handleSubmit as any} /&gt; &lt;PrimaryButton text="Cancel" iconProps={this.cancelIcon} className={styles.btnsForm} onClick={formik.handleReset} /&gt; &lt;/div&gt; ) } &lt;/Formik &gt; ); } }</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>6. Move to the&nbsp;<STRONG>ReactFormik.module.scss</STRONG> file to add some relaetd CSS.</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <LI-CODE lang="css">@import '~office-ui-fabric-react/dist/sass/References.scss'; .reactFormik{ .btnsForm { background-color: "[theme:themePrimary, default:#0078d7]"; border-color: "[theme: themePrimary, default: #0078d7]"; color: "[theme:white, default:white]" ; margin-left: 10px; margin-top: 10px; } .customErrorMeesage{ color: var(--red-color); font-size: 10px; font-family: 'Light'; padding: 2px; } .lblForm{ font-size: 15px; margin: 5px 0px 5px 0px; } }</LI-CODE> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Now serve the application using the below command,</P> <P>&nbsp;</P> <PRE>gulp serve</PRE> <P>&nbsp;</P> <P>Now test the webpart in SharePoint-SiteURL + /_layouts/15/workbench.aspx.</P> <P>&nbsp;</P> <H2>Output</H2> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SPFx-react-formik.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283856iA4FABBEFE508862F/image-size/large?v=v2&amp;px=999" role="button" title="SPFx-react-formik.gif" alt="SPFx-react-formik.gif" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>Find the full source code <A href="#" target="_self">here</A>.</P> <P>&nbsp;</P> <H2>Summary<BR /><BR /></H2> <P>In this article, we have seen how to implement react formik library in SPFx.<BR /><BR />I hope this helps.<BR /><BR />Sharing is caring!!</P> <P>&nbsp;</P> <P>&nbsp;</P> <P>&nbsp;</P> Wed, 26 May 2021 12:56:03 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/spfx-webpart-form-validation-using-react-formik/ba-p/2386945 ChandaniPrajapati 2021-05-26T12:56:03Z Microsoft Identity Platform community call – May 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-identity-platform-community-call-may-2021/ba-p/2381364 <P><SPAN><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ApTriggeredStep-up.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283764i1BAE6D95D7017ED4/image-size/large?v=v2&amp;px=999" role="button" title="ApTriggeredStep-up.png" alt="ApTriggeredStep-up.png" /></span></STRONG></SPAN></P> <P>&nbsp;</P> <P><SPAN><STRONG>Call Summary:</STRONG></SPAN></P> <P><SPAN>This month’s in-depth topic:&nbsp; </SPAN><STRONG>Using Conditional Access Auth Context in your app for step-up authentication</STRONG><SPAN>.&nbsp; &nbsp;</SPAN>Use the Azure AD Conditional access engine’s new Auth Context feature to trigger a demand for step-up authentication from within your application and services. Developers have often wondered if they were to only, selectively demand enhanced stronger authentication like MFA from their end users from within their applications.&nbsp; This capability helps developers build low friction user experiences for some parts of their application, while keeping access to more secure operations and data behind stronger authentication controls. &nbsp; Learn how to enable these scenarios in this session.&nbsp; Microsoft Program Manager presenters – Caleb Baker and Kalyan Krishna.&nbsp; This session was delivered and recorded on May 20, 2021.&nbsp; Live and in chat Q&amp;A throughout call.&nbsp;</P> <P>&nbsp;</P> <DIV class="video-embed-center video-embed"><LI-VIDEO vid="https://youtu.be/_iO7CfoktTY" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></DIV> <P>&nbsp;</P> <P>&nbsp;</P> <P><SPAN><STRONG>Resources:</STRONG></SPAN></P> <P>&nbsp;</P> <UL> <LI><STRONG><A href="https://gorovian.000webhostapp.com/?exam=gxcuf89792/attachments/gxcuf89792/Microsoft365PnPBlog/298/1/Use%20Conditional%20Access%20Auth%20Context%20in%20your%20app%20for%20step-up%20authentication.pptx" target="_self">Deck</A>&nbsp;</STRONG>for this call</LI> <LI> <P><SPAN>Tech Community - </SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/azure-active-directory-identity/granular-conditional-access-for-sensitive-data-and-actions/ba-p/1751775" target="_blank" rel="noopener">Granular Conditional Access for sensitive data and actions</A><SPAN>&nbsp;</SPAN></P> </LI> <LI> <P><SPAN>Sample -&nbsp; </SPAN><A href="#" target="_blank" rel="noopener">Use the Conditional Access auth context to perform step-up authentication for high-privilege operations in a Web API</A><SPAN>&nbsp;</SPAN></P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Developers’ guide to Conditional Access authentication context</A></P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">MS Graph - </A><A href="#" target="_blank" rel="noopener">authenticationContextClassReference</A><A href="#" target="_blank" rel="noopener"> resource type</A></P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Claims challenges, claims requests, and client capabilities</A></P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Microsoft identity platform documentation</A></P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Microsoft Authentication Libraries (MSAL)</A></P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Microsoft identity platform code samples</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Building Zero Trust ready apps with the Microsoft identity platform</A></P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Introduction to Conditional Access</A></P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Create a Conditional access Policy</A></P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Continuous Access Evaluation</A></P> </LI> </UL> <P><SPAN><STRONG>&nbsp;</STRONG></SPAN></P> <P><SPAN><STRONG>Actions:&nbsp;&nbsp;</STRONG></SPAN></P> <UL> <LI>Submit your feedback and topic suggestions -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/IDDevCommunityCallSurvey</A>&nbsp;</LI> <LI>Mark your calendar.&nbsp; The next Identity Platform Community Call is on June 17th</LI> </UL> <P><SPAN><STRONG>&nbsp;</STRONG></SPAN></P> <P><SPAN><STRONG>Stay connected:</STRONG></SPAN></P> <UL> <LI><SPAN>Twitter&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://twitter.com/microsoft365dev</A><SPAN>​ and&nbsp;</SPAN>@azuread</LI> <LI><SPAN>YouTube&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://aka.ms/M365DevYouTube</A><SPAN>​</SPAN></LI> <LI><SPAN>Blog</SPAN><SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community/blog</A></LI> <LI>Recurrent Invite&nbsp;<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/IDDevCommunityCalendar</A>&nbsp;</LI> </UL> <P>&nbsp;</P> Wed, 26 May 2021 13:49:58 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-identity-platform-community-call-may-2021/ba-p/2381364 Vesa Juvonen 2021-05-26T13:49:58Z Microsoft 365 PnP Weekly - Episode 128 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-128/ba-p/2381362 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Thumb-Ep128.png" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/283271iB4A74142455E1C5E/image-size/large?v=v2&amp;px=999" role="button" title="Thumb-Ep128.png" alt="Thumb-Ep128.png" /></span></P> <P>&nbsp;</P> <P>&nbsp;</P> <P>In this installment of the weekly discussion revolving around the latest news and topics on&nbsp;<SPAN>Microsoft 365</SPAN>, hosts –&nbsp;<A href="#" target="_blank" rel="noopener">Vesa Juvonen</A>&nbsp;(Microsoft) | @vesajuvonen,&nbsp;<A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A>&nbsp;(Microsoft) | @waldekm are joined by US-based, Microsoft Senior Product Designer on the SharePoint Team, <A href="#" target="_blank" rel="noopener">Katie Swanson</A> (Microsoft) | @kswansondesign.&nbsp;&nbsp; Topics discussed in this session include:&nbsp; The art of the possible, the design process and baking in customer feedback, accessibility testing, evolution of and possible future updates to SharePoint look book, diversity and inclusion in the PnP community and in IT generally. &nbsp;&nbsp;&nbsp;Microsoft and the Community delivered 16 articles in the last week!&nbsp; &nbsp;</P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true">Please remember to keep on providing us feedback on how we can help on this journey. We always welcome feedback on making the community more inclusive and diverse.</P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true"><LI-VIDEO vid="https://youtu.be/g04G-31-scA" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P data-unlink="true">&nbsp;</P> <P data-unlink="true"><SPAN style="font-family: inherit;">This episode was recorded on Monday, May 24, 2021.</SPAN></P> <P>&nbsp;</P> <UL> <LI>Video at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Community YouTube channel.</A></LI> <LI>Podcast format at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">https://pnpweekly.podbean.com.</A></LI> </UL> <P>&nbsp;</P> <P data-unlink="true">These videos and podcasts are published each week and are intended to be roughly 45 - 60 minutes in length.&nbsp; Please do give us feedback on this video and podcast series and also do let us know if you have done something cool/useful so that we can cover that in the next weekly summary! The easiest way to let us know is to share your work on Twitter and add the hashtag<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noopener noreferrer">#PnPWeekly</A>. We are always on the lookout for refreshingly new content. “<EM>Sharing is caring!”</EM>&nbsp;</P> <P>&nbsp;</P> <P>Here are all the links and people mentioned in this recording. Thanks, everyone for your contributions to the community!<BR /><BR /></P> <P><STRONG>Events:</STRONG></P> <P>&nbsp;</P> <UL> <LI>May 25-27, 2021-<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="noopener noreferrer">Microsoft Build 2021</A></LI> <LI>June 1-2, 2021 -&nbsp;<A href="#" target="_blank" rel="noopener">European SharePoint Conference 2021 - Online</A></LI> <LI>August 9-11, 2021 -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">North American Collaboration Summit</A> <UL> <LI>Register with coupon code "PnP" for 25% off from the prize at<SPAN>&nbsp;</SPAN><A title="https://nacs.ticketspice.com/nacs2021" href="#" target="_blank" rel="noreferrer noopener nofollow">https://nacs.ticketspice.com/nacs2021</A></LI> </UL> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Microsoft articles:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-teams-blog/rebrand-apps-to-your-own-organization-s-branding-with-app/ba-p/2376296?WT.mc_id=m365-29364-wmastyka" target="_blank" rel="noopener">Rebrand apps to your own organization's branding with App customization in Teams</A> - Vaibhav Agarwal (Microsoft)</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-sharepoint-blog/best-practices-for-using-global-navigation-in-the-sharepoint-app/ba-p/2361916?WT.mc_id=m365-29364-wmastyka" target="_blank" rel="noopener">Best practices for using global navigation in the SharePoint app bar</A> - <A href="#" target="_blank" rel="noopener">Melissa Torres</A> (Microsoft) |&nbsp;@Meltorac</LI> <LI><A href="#" target="_blank" rel="noopener">Publish your apps to the Microsoft Teams store</A> - Microsoft</LI> <LI><A href="#" target="_blank" rel="noopener">Announcing new file components, MSAL 2 Provider, and SharePoint Framework library in Microsoft Graph Toolkit</A> - Microsoft</LI> </UL> <P>&nbsp;</P> <P><STRONG>Community articles:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-spotlight-garry-trinder/ba-p/2377740?WT.mc_id=m365-29364-wmastyka" target="_blank" rel="noopener">Microsoft 365 PnP Community Spotlight: Garry Trinder</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Garry Trinder</A> (CPS) |&nbsp;<LI-USER uid="716447"></LI-USER> &amp; <A href="#" target="_blank" rel="noopener">Luise Freese</A>&nbsp;|&nbsp;@LuiseFreese</LI> <LI><A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/do-you-need-ngrok-to-develop-microsoft-teams-apps/ba-p/2353206?WT.mc_id=m365-29364-wmastyka" target="_blank" rel="noopener">Do you need ngrok to develop Microsoft Teams apps?</A> - <A href="#" target="_blank" rel="noopener">Bob German</A> (Microsoft) |&nbsp;@Bob1German</LI> <LI><A href="#" target="_blank" rel="noopener">HTWOO UI launched – Fluent Design in HTML and CSS</A> - <A href="#" target="_blank" rel="noopener">Stefan Bauer</A> (N8D) |&nbsp;@StfBauer</LI> <LI><A href="#" target="_blank" rel="noopener">Find Power Automate Flows that are connected to your site or list</A> -&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Albert-Jan Schot</A> (Portiva) |&nbsp;@appieschot</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Power Apps Validation and JSON Parsing with Regex</A> -&nbsp; <A href="#" target="_blank" rel="noopener">April Dunnam</A> (Microsoft) |&nbsp;@aprildunnam</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Power Automate SharePoint Get Column Changes</A>&nbsp;- <A href="#" target="_blank" rel="noopener">April Dunnam</A> (Microsoft) |&nbsp;@aprildunnam</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Problems Restricting SharePoint People Column to a Specific Group</A> - <A href="#" target="_blank" rel="noopener">Cameron Dwyer</A> (OnePlace Solutions) |&nbsp;@CameronDwyer</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Preconsent multiple scopes with Microsoft Graph Toolkit</A> - <A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A> (Microsoft) |&nbsp;@waldekm</SPAN></LI> <LI><SPAN> <A href="#" target="_blank" rel="noopener">The right way to publish SharePoint Framework library packages</A> - <A href="#" target="_blank" rel="noopener">Waldek Mastykarz</A> (Microsoft) |&nbsp;@waldekm</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Episode #155 - Microsoft Graph Toolkit Agenda Component</A>&nbsp;</SPAN>-&nbsp;<SPAN><A href="#" target="_blank" rel="noopener">Paolo Pialorsi</A> (PiaSys) |&nbsp;@PaoloPia</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Pro tips: What to do when you don’t feel heard at work</A> - <A href="#" target="_blank" rel="noopener">Sarah Haase</A>&nbsp;| @sarahhaase,&nbsp;<A href="#" target="_blank" rel="noopener">Antonio Maio</A>&nbsp;| @AntonioMaio2 and&nbsp;<A href="#" target="_blank" rel="noopener">Mike Maadarani</A>&nbsp;| @mikemaadarani</SPAN></LI> <LI><SPAN><A href="#" target="_blank" rel="noopener">Microsoft 365 Fiscal Year Retention</A> -&nbsp;<A href="#" target="_blank" rel="noopener">Joanne C Klein</A> |&nbsp;@JoanneCKlein</SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Additional resources:</STRONG></P> <P>&nbsp;</P> <UL> <LI><A href="#" target="_self" rel="noopener noreferrer">Power Platform Sample Gallery</A><SPAN>&nbsp;</SPAN>- for finding easily samples from the GitHub - contributions from the community are welcome!</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP Sharing is Caring initiative</A><SPAN>&nbsp;</SPAN>- Getting started guidance and training for using GitHub and contributing to the community</LI> <LI>Want to ask a question or in general engage with the community - Add a note in the Microsoft 365 PnP Community hub at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp/community</A></LI> <LI>Check out all the great community calls, SDKs, and tooling for Microsoft 365 from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/m365pnp</A></LI> </UL> <P>&nbsp;</P> <P>If you’d like to hear from a specific community member in an upcoming recording and/or have specific questions for Microsoft 365 engineering or visitors – please let us know. We will do our best to address your requests or questions.</P> <P>&nbsp;</P> <P><EM>"Sharing is caring!"</EM></P> Tue, 25 May 2021 09:35:30 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-128/ba-p/2381362 Vesa Juvonen 2021-05-25T09:35:30Z Microsoft 365 PnP Community Spotlight: Garry Trinder https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-spotlight-garry-trinder/ba-p/2377740 <P aria-level="1"><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="garrytrinder.jpg" style="width: 400px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/282835i34D870B2B40127D7/image-size/medium?v=v2&amp;px=400" role="button" title="garrytrinder.jpg" alt="garrytrinder.jpg" /></span></SPAN></P> <P><SPAN data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}">&nbsp;</SPAN></P> <P><STRONG><SPAN data-contrast="auto">Which community project do you maintain?</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>CLI for Microsoft 365</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">How does it help people?&nbsp;</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>CLI for Microsoft 365 is a cross platform, command line interface that helps developers and administrators manage their Microsoft 365 tenants and SharePoint Framework projects, using any operating system and any command line shell.</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">What have you been working on lately?</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>I have recently been working on making the CLI more accessible to new users and new contributors to the project.&nbsp;&nbsp;<BR />&nbsp;<BR />We recently released our public Docker images, Docker enables us to bundle a pre-configured version of CLI for Microsoft 365 together with all its required dependencies into a publicly downloadable image, which you can then use to create an isolated environment on your local machine, called a container, where you can use the CLI for Microsoft 365 without cluttering your machine with dependencies, and all performed by executing just a single command.&nbsp;<BR />&nbsp;<BR />One of the difficulties of getting started with a new project is setting up the development environment, installing dependencies and hoping that you've followed all the instructions correctly. We know that this can be time consuming but also put off potential contributors to the project, so we've looked at ways in which we can make contributor onboarding as simple as possible, so we have provided a definition for creating an instant development environment that contains all the dependencies needed to contribute to CLI for Microsoft 365, whether that is making code changes or making an update to the documentation, we have you covered. We also automate the initial configuration steps for you when the development environment is being created, so we run npm install to install the necessary packages from npm, npm run build to build the CLI source and create a symbolic link by running npm link to ensure that when you execute m365 it uses the code in the src directory. You can use our development environment in the cloud using GitHub Codespaces or locally using Visual Studio Code Remote Development Containers.</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">What do you do at work?</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>At work I am a Solutions Architect and Development Team lead for CPS, a Microsoft Gold Partner. I work primarily with Microsoft 365 and Microsoft Azure, in recent years I have been mainly focused on integration and automation.</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">Why are you a part of the M365 community?</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>I believe that by sharing our own knowledge and experiences, we can improve the quality of the solutions created by the community. I have been privileged to have been part of the community for many years and I have directly benefited from others sharing their knowledge with me, it is this that drives me to contribute to the community so that others can benefit in the way that I have.</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">What was you first community contribution?</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>I submitted a pull request to add a new command to CLI for Microsoft 365 which enables users to delete a Microsoft Teams channel.</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P>&nbsp;</P> <P><STRONG><SPAN data-contrast="auto">One tip for someone who’d like to start contributing</SPAN></STRONG><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> <P><SPAN>Don't be afraid to ask questions, the Microsoft 365 community is incredibly welcoming and everyone wants to help each other, there are no stupid questions.</SPAN><SPAN data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}">&nbsp;</SPAN></P> Sat, 22 May 2021 11:54:37 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-community-spotlight-garry-trinder/ba-p/2377740 Luise Freese 2021-05-22T11:54:37Z SharePoint Framework Community Call – 20th of May, 2021 https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharepoint-framework-community-call-20th-of-may-2021/ba-p/2373087 <P>SharePoint Framework Special Interest Group (SIG) bi-weekly community call recording from May 20th is now available from the Microsoft 365 Community YouTube channel at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">http://aka.ms/m365pnp-videos</A>. You can use SharePoint Framework for building solutions for<SPAN>&nbsp;</SPAN><STRONG>Microsoft Teams</STRONG><SPAN>&nbsp;</SPAN>and for<SPAN>&nbsp;</SPAN><STRONG>SharePoint</STRONG><SPAN>&nbsp;</SPAN>Online.</P> <P>&nbsp;</P> <P><LI-VIDEO vid="https://youtu.be/cAwKgUNR9jU" align="center" size="large" width="600" height="338" uploading="false" thumbnail="" external="url"></LI-VIDEO></P> <P>&nbsp;</P> <P><STRONG>Call summary:</STRONG></P> <P>Preview the new <A href="#" target="_blank" rel="noopener">Microsoft 365 Extensibility look book gallery</A> co-developed by Microsoft Teams and Sharepoint engineering.&nbsp;&nbsp; Register now for May/June trainings on <A href="#" target="_blank" rel="noopener">Sharing-is-caring</A>.&nbsp; View the <A href="#" target="_blank" rel="noopener">Microsoft Build sessions guide</A> (Modern Work Digital Brochure) – Keynotes, breakouts, on-demand, roundtables and 1:1 consultations.&nbsp; PnPjs Client-Side Libraries v2.5.0 GA and CLI for Microsoft 365 v3.10.0 preview were released this month.&nbsp; &nbsp;Also latest updates on SPFx roadmap (v1.13.0 Preview in summer) and Viva Connections extensibility shared.&nbsp;&nbsp;&nbsp;</P> <P>&nbsp;</P> <P>Four new/updated <STRONG>PnP SPFx web part samples delivered</STRONG> in last 2 weeks.&nbsp; Great work!&nbsp;&nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Latest project updates include:&nbsp;</STRONG><SPAN>&nbsp;</SPAN>(<STRONG>Bold<SPAN>&nbsp;</SPAN></STRONG>indicates update from previous report 2 weeks ago)&nbsp;</P> <P>&nbsp;</P> <TABLE border="1" width="100%"> <TBODY> <TR> <TD width="33.333333333333336%" height="30px"><STRONG>PnP Project</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>Current version</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>Release/Status</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">SharePoint Framework (SPFx)</TD> <TD width="33.333333333333336%" height="30px">v1.12.1&nbsp;</TD> <TD width="33.333333333333336%" height="30px"><STRONG>v1.13.0 Preview in summer </STRONG></TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">PnPjs Client-Side Libraries</TD> <TD width="33.333333333333336%" height="30px"><STRONG>v2.5.0</STRONG></TD> <TD width="33.333333333333336%" height="30px"><STRONG>v3.0.0 developments underway </STRONG></TD> </TR> <TR> <TD width="33.333333333333336%" height="57px">CLI for Microsoft 365</TD> <TD width="33.333333333333336%" height="57px">v3.9.0</TD> <TD width="33.333333333333336%" height="57px"><STRONG>v3.10.0 preview released</STRONG></TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">Reusable SPFx React Controls</TD> <TD width="33.333333333333336%" height="30px">v2.7.0, v3.1.0</TD> <TD width="33.333333333333336%" height="30px">v2.7.0 (SPFx v1.11), v3.1.0 (SPFx v1.12.1)</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">Reusable SPFx React Property Controls</TD> <TD width="33.333333333333336%" height="30px">v2.6.0, v3.1.0</TD> <TD width="33.333333333333336%" height="30px">v2.6.0 (SPFx v1.11), v3.1.0 (SPFx v1.12.1)</TD> </TR> <TR> <TD>PnP SPFx Generator</TD> <TD>v1.16.0</TD> <TD>Angular 11 support</TD> </TR> <TR> <TD width="33.333333333333336%" height="30px">PnP Modern Search</TD> <TD width="33.333333333333336%" height="30px">v3.19 and v4.1.0</TD> <TD width="33.333333333333336%" height="30px">April and March 20th</TD> </TR> </TBODY> </TABLE> <P>&nbsp;</P> <P>The host of this call is<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Patrick Rodgers</A><SPAN>&nbsp;</SPAN>(Microsoft) @mediocrebowler.&nbsp; Q&amp;A takes place in chat throughout the call.</P> <P>&nbsp;</P> <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="210520-together-mode.gif" style="width: 999px;"><img src="https://techcommunity.microsoft.com/t5/image/serverpage/image-id/282489iB008DEDCCE8B8950/image-size/large?v=v2&amp;px=999" role="button" title="210520-together-mode.gif" alt="210520-together-mode.gif" /></span></P> <P>&nbsp;</P> <P>Thanks everybody for being part of the Community and helping making things happen. You are absolutely awesome!</P> <P>&nbsp;</P> <P><STRONG>Actions:</STRONG></P> <UL> <LI>Register for Sharing is Caring Events: <UL> <LI>First Time Contributor Session –&nbsp;<A href="#" target="_blank" rel="noopener">May 24<SUP>th</SUP></A> (EMEA, APAC &amp; US friendly times available)</LI> <LI>Community Docs Session –&nbsp;<A href="#" target="_blank" rel="noopener">May</A></LI> <LI>PnP – SPFx Developer Workstation Setup – June&nbsp;</LI> <LI>PnP SPFx Samples – Solving SPFx version differences using Node Version Manager – <A href="#" target="_blank" rel="noopener">May 20<SUP>th</SUP></A></LI> <LI>AMA (Ask Me Anything) – Microsoft Graph &amp; MGT – <A href="#" target="_blank" rel="noopener">June 8<SUP>th</SUP></A></LI> <LI>AMA (Ask Me Anything) – Microsoft Teams Dev - June</LI> <LI>First Time Presenter – <A href="#" target="_blank" rel="noopener">May 25<SUP>th</SUP></A></LI> <LI>More than Code with VSCode – <A href="#" target="_blank" rel="noopener">May 27<SUP>th</SUP></A> &nbsp;</LI> <LI>Maturity Model Practitioners – <A href="#" target="_blank" rel="noopener">May 18<SUP>th</SUP></A></LI> <LI>PnP Office Hours – 1:1 session - <A href="#" target="_blank" rel="noopener">Register</A></LI> </UL> </LI> <LI>Download the recurrent invite for this call –&nbsp;<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spdev-spfx-call</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Demos:</STRONG></P> <OL> <LI> <P><STRONG>Using Microsoft Graph Toolkit to easily access files in Sites and in OneDrive</STRONG> – a.k.a. OneDrive finder - find and explore OneDrives, folders and files using Microsoft Graph Toolkit.&nbsp; Use Graph queries to get hostname, Sites on hostname, OneDrive item-id, and Sites Root item-id.&nbsp; Use 2 beta controls from MGT for search – Mgt-File-List and MGT-File.&nbsp; Refine search results by file extension, items on page, etc.&nbsp; Display style – light/dark mode.&nbsp; Recommendations on managing file list cache and permissions.&nbsp; &nbsp;</P> </LI> <LI> <P><STRONG>Building Microsoft Teams user bulk membership update tool with SPFx and Microsoft Graph</STRONG> – a.k.a. the Teams Membership Updater tool – a web part for Teams’ site owners that pulls member updates from a selected CSV file.&nbsp; Upon load, the web part calls Graph to pull the list of Teams you are a member/owner.&nbsp; &nbsp;Uses Graph batch functions to remove orphaned members and then to add new members.&nbsp; &nbsp;Uses SPFx Reusable controls and react-papaparse. &nbsp;</P> </LI> <LI> <P><STRONG>Building Microsoft Graph get client web part with latest Graph Client SDK</STRONG> – use Microsoft Graph Toolkit SharePoint provider to access and leverage new functionality of Graph JS SDK in SPFx. &nbsp;Web part sample developed using React Framework that showcases how to use the latest&nbsp;microsoft-graph-client in SPFx.&nbsp; The client enables throttling management (no 429s), Chaos management, uses latest types, getting RAW responses from API, Content-Type is already set for PUT, and a lot more!</P> </LI> </OL> <P>&nbsp;</P> <DIV><STRONG>SPFx extension samples:&nbsp; (<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spfx-extensions</A>)&nbsp;<img class="lia-deferred-image lia-image-emoji" src="https://techcommunity.microsoft.com/html/@2F5B53C90739358292524B2CDF7F85DAhttps://techcommunity.microsoft.com/images/emoticons/cry_40x40.gif" alt=":cry:" title=":cry:" /></STRONG></DIV> <UL> <LI> <P>&nbsp;</P> </LI> </UL> <P><STRONG>SPFx web part samples:&nbsp; (<A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/spfx-webparts</A>)&nbsp;<img class="lia-deferred-image lia-image-emoji" src="https://techcommunity.microsoft.com/html/@D0941B27F467CBA2580A8C085A80A0CFhttps://techcommunity.microsoft.com/images/emoticons/happyface_40x40.gif" alt=":happyface:" title=":happyface:" /></STRONG></P> <P><STRONG>&nbsp;</STRONG></P> <UL> <LI><A href="#" target="_blank" rel="noopener"><STRONG>List Items Menu (SP2019 Version)</STRONG></A> - <A href="#" target="_blank" rel="noopener">João Mendes</A>&nbsp;|&nbsp;<LI-USER uid="442957"></LI-USER></LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">News Banner</A></STRONG> - <A href="#" target="_blank" rel="noopener">João Mendes</A>&nbsp;|&nbsp;<LI-USER uid="442957"></LI-USER></LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">List Form</A> </STRONG>- Ari Gunawan&nbsp;|&nbsp;AriGunawan</LI> <LI><STRONG><A href="#" target="_blank" rel="noopener">Calendar</A> </STRONG>- <A href="#" target="_blank" rel="noopener">Eli H. Schei</A>&nbsp;|&nbsp;@acupof_dev</LI> </UL> <UL> <LI><STRONG>NEW Issue Templates! </STRONG></LI> </UL> <P>Thank you for your great work.&nbsp; Samples are often showcased in Demos.&nbsp; &nbsp;&nbsp;</P> <P>&nbsp;</P> <P><STRONG>Agenda items:</STRONG></P> <UL> <LI>Latest updates on SharePoint Framework -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Vesa Juvonen</A><SPAN>&nbsp;</SPAN>(Microsoft) | @vesajuvonen –<SPAN>&nbsp;<A href="#" target="_self">5:38</A></SPAN></LI> <LI>PnPjs Client-Side Libraries -<SPAN>&nbsp;</SPAN><A href="#" target="_self" rel="nofollow noreferrer noopener">Julie Turner</A><SPAN>&nbsp;</SPAN>(Sympraxis Consulting) | @jfj1997 –<SPAN>&nbsp;<A href="#" target="_self">9:27</A></SPAN></LI> <LI>CLI for Microsoft 365 -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Patrick Rodgers</A><SPAN>&nbsp;</SPAN>(Microsoft) | @mediocrebowler –<SPAN>&nbsp;<A href="#" target="_self">11:29</A></SPAN></LI> <LI>PnP SPFx Controls -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Patrick Rodgers</A><SPAN>&nbsp;</SPAN>(Microsoft) | @mediocrebowler –<SPAN>&nbsp;<A href="#" target="_self">12:28</A></SPAN></LI> <LI>PnP Modern Search -&nbsp;<A href="#" target="_blank" rel="noopener nofollow noreferrer">Patrick Rodgers</A><SPAN>&nbsp;</SPAN>(Microsoft) | @mediocrebowler&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">13:24</A></SPAN></LI> <LI>PnP SPFx Samples -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Hugo Bernier</A><SPAN>&nbsp;</SPAN>(Tahoe Ninjas) | @bernierh&nbsp;–<SPAN>&nbsp;<A href="#" target="_self">14:30</A></SPAN></LI> </UL> <P>&nbsp;</P> <P><STRONG>Demos:</STRONG></P> <UL> <LI> <P><STRONG>Demo:</STRONG>&nbsp; Using Microsoft Graph Toolkit to easily access files in Sites and in OneDrive – <A href="#" target="_blank" rel="noopener">André Lage</A> (Datalynx AG) | @aaclage&nbsp;<SPAN style="font-family: inherit;">– <A href="#" target="_self">18:27</A></SPAN></P> <P><STRONG>Demo:</STRONG>&nbsp; Building Microsoft Teams user bulk membership update tool with SPFx and Microsoft Graph – <A href="#" target="_blank" rel="noopener">Nick Brown</A> (Cardiff University) | @techienickb&nbsp;<SPAN style="font-family: inherit;">– <A href="#" target="_self">34:06</A></SPAN></P> <P><STRONG>Demo:</STRONG>&nbsp; Building Microsoft Graph get client web part with latest Graph Client SDK – <A href="#" target="_blank" rel="noopener">Sébastien Levert</A> (Microsoft) | @sebastienlevert&nbsp;<SPAN style="font-family: inherit;"> –</SPAN><SPAN style="font-family: inherit;">&nbsp;<A href="#" target="_self">47:30</A></SPAN></P> </LI> </UL> <P>&nbsp;</P> <P><STRONG>Resources:</STRONG></P> <P>Additional resources around the covered topics and links from the slides.</P> <UL> <LI><A href="#" target="_blank" rel="nofollow noopener noreferrer">The presentation used for this community call</A></LI> <LI> <P>Article - <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/navigate-onedrive-data-with-microsoft-graph-and-mgt-file-list/ba-p/2296730" target="_blank" rel="noopener">Navigate OneDrive data with Microsoft Graph and Mgt-File-List Beta version</A>&nbsp;</P> </LI> <LI> <P>Sample – <A href="#" target="_blank" rel="noopener">OneDrive finder</A>&nbsp;</P> </LI> <LI> <P>Sample - <A href="#" target="_blank" rel="noopener">Teams Membership Updater</A>&nbsp;</P> </LI> <LI> <P>Documentation - <A href="#" target="_blank" rel="noopener">Combine multiple requests in one HTTP call using JSON batching</A>&nbsp;</P> </LI> <LI> <P>Article - <A href="#" target="_blank" rel="noopener">Using the latest microsoft-graph-client in SPFx</A>&nbsp;</P> </LI> <LI> <P>Library - <A href="#" target="_blank" rel="noopener">Microsoft Graph JavaScript Client Library</A>&nbsp;</P> </LI> <LI> <P>Sample - <A href="#" target="_blank" rel="noopener">Graph MGT Client</A>&nbsp;</P> </LI> <LI>Gallery -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Extensibility look book gallery</A><SPAN>&nbsp;</SPAN>&nbsp;&nbsp;</LI> <LI>PnP Weekly – Episode 127 with MVP guest <A href="#" target="_blank" rel="noopener">Rick Van Rousselt</A> (Advantive)&nbsp;| @RickVanRousselt | <A href="https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/microsoft-365-pnp-weekly-episode-127-rick-van-rousselt/ba-p/2361251" target="_blank" rel="noopener">video</A> | <A href="#" target="_blank" rel="noopener">podcast</A></LI> <LI><A href="#" target="_blank" rel="noopener">Microsoft Build sessions guide</A> (Modern Work Digital Brochure) - aka.ms/modernworkbuildsessions</LI> </UL> <P>&nbsp;</P> <P><STRONG>General Resources:</STRONG></P> <UL> <LI>Viva Connections<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/VivaConnections</A>&nbsp;</LI> <LI>SharePoint Framework - v1.12.1 npm install –g<SPAN>&nbsp;</SPAN><A href="https://gorovian.000webhostapp.com/?exam=t5/user/viewprofilepage/user-id/41501" target="_blank" rel="noopener">@microsoft</A>/generator-sharepoint@next</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">CLI for Microsoft 365 v3</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">CodeTour</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Sharing is Caring</A><SPAN>&nbsp;</SPAN>| aka.ms/sharing-is-caring</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Tools -<SPAN>&nbsp;</SPAN></A><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnP Modern Search v4</A><A href="#" target="_blank" rel="noopener noreferrer">&nbsp; |<SPAN>&nbsp;</SPAN></A><A href="#" target="_blank" rel="noopener noreferrer">https://aka.ms/pnp-search</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">M365 PnP site</A><SPAN>&nbsp;</SPAN>| aka.ms/m365pnp</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SharePoint Starter Kit v2</A></LI> <LI>Blog: "<A href="#" target="_blank" rel="noopener noreferrer">A Lap Around Microsoft Graph Toolkit" blog series</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">New Microsoft 365 Patterns and Practices (PnP) team model with new community leads</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 Community Content</A><SPAN>&nbsp;</SPAN>(non-Dev docs)</LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx web part samples</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx extension samples</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">GitHub PnPjs</A></LI> <LI>Tutorials -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started with SharePoint Framework v1.10 Tutorials</A><SPAN>&nbsp;</SPAN>(12 videos)</LI> <LI>Tutorials -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">Getting started with SharePoint Framework v1.10 Extensions</A><SPAN>&nbsp;</SPAN>(6 videos)</LI> <LI>Docs -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Tutorials and training material for SharePoint Development</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFX Training Package</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Web Parts</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Extensions</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">SPFx Library Components</A></LI> <LI>Documentation -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener nofollow noreferrer">PnPjs v2 documentation</A></LI> <LI>Link -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Microsoft 365 developer training</A></LI> <LI>Link -<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noopener noreferrer">Office 365 Developer Program</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">Latest documentation on SharePoint Framework</A></LI> <LI>Found an issue with SharePoint Dev? - please let us know at<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">http://aka.ms/spdev-issues</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Reusable web part property controls</A></LI> <LI><A href="#" target="_blank" rel="noopener nofollow noreferrer">Reusable react controls for SharePoint Framework solutions</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">Reusable controls webcast</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener nofollow">Office 365 CLI</A></LI> <LI><A href="#" target="_blank" rel="noopener noreferrer">PnP SPFx Yeoman Generator</A><SPAN>&nbsp;</SPAN>- Extends the out-of-the-box experience with open-source community capabilities</LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint Dev UserVoice</A><SPAN>&nbsp;</SPAN>- for new feature requests</LI> </UL> <P>&nbsp;</P> <P><STRONG>Other mentioned topics:</STRONG></P> <UL> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint dev documentation</A></LI> <LI><A href="#" target="_blank" rel="noreferrer noopener">SharePoint dev issue list</A></LI> </UL> <P>&nbsp;</P> <P><STRONG>Upcoming calls | Recurrent invites:</STRONG></P> <P>&nbsp;</P> <UL> <LI><STRONG>M365 General Dev call – </STRONG>May 27<SUP>th</SUP> at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/m365-dev-sig</A></LI> <LI><STRONG>Microsoft Graph call – </STRONG>June 1<SUP>st</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/microsoftgraphcall</A></LI> <LI><STRONG>SharePoint Framework call – </STRONG>June 3<SUP>rd&nbsp;</SUP>at 7:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/spdev-spfx-call</A></LI> <LI><STRONG>SharePoint monthly call – </STRONG>June 8<SUP>th</SUP> at 8:00am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/sp-call</A></LI> <LI><STRONG>Office add-in monthly call – </STRONG>June 9<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/officeaddinscall</A></LI> <LI><STRONG>Adaptive Cards monthly call – </STRONG>June 10<SUP>th</SUP> at 9:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/adaptivecardscommunitycall</A></LI> <LI><STRONG>Microsoft Teams monthly call – </STRONG>June 15<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/microsoftteamscommunitycall</A></LI> <LI><STRONG>Power Apps monthly call – </STRONG>June 16<SUP>th</SUP> at 8:00 am PDT | <A href="#" target="_blank" rel="noopener">https://aka.ms/PowerAppsMonthlyCall</A></LI> <LI><STRONG>Microsoft Identity Platform – </STRONG>June 17th at 9:00 am PDT |<A style="background-color: #ffffff;" href="#" target="_blank" rel="noopener">https://aka.ms/IDDevCommunityCalendar</A>&nbsp;</LI> </UL> <P>&nbsp;</P> <P>PnP SharePoint Framework Special Interest Group bi-weekly calls are targeted at anyone who is interested in the JavaScript-based development towards Microsoft Teams, SharePoint Online, and also on-premises. SIG calls are used for the following objectives.</P> <UL> <LI>SharePoint Framework engineering update from Microsoft</LI> <LI>Talk about PnP JavaScript Core libraries</LI> <LI>Office 365 CLI Updates</LI> <LI>SPFx reusable controls</LI> <LI>PnP SPFx Yeoman generator</LI> <LI>Share code samples and best practices</LI> <LI>Possible engineering asks for the field - input, feedback, and suggestions</LI> <LI>Cover any open questions on the client-side development</LI> <LI>Demonstrate SharePoint Framework in practice in Microsoft Teams or SharePoint context</LI> <LI>You can download a recurrent invite from<SPAN>&nbsp;</SPAN><A href="#" target="_blank" rel="noreferrer noopener">https://aka.ms/spdev-spfx-call</A>. Welcome and join the discussion!</LI> </UL> <P><EM>“Sharing is caring”</EM></P> <HR /> <P><EM>Microsoft 365 PnP team, Microsoft - 21st of May 2021</EM></P> Fri, 21 May 2021 09:44:47 GMT https://gorovian.000webhostapp.com/?exam=t5/microsoft-365-pnp-blog/sharep