SP PnP JavaScript/SPFx SIG 5-11-2017

SharePoint Development Launchpad http://dev.office.com/sharepoint

4:25 – PnP JS Core Component

  • 2.0.5 released Monday
  • Looking for feedback on new features
  • Starting to sketch out graph support
  • Exciting growth numbers for April
  • Reopen issues to continue discussions
  • https://aka.ms/SharePointPnPCommunity

7:05 – SharePoint PnP JS Core Usage Numbers

  • 18 Million requests in April

9:26 – SharePoint Framework

  • Modern Extensibility Blog Post
  • SharePoint PnP Webcast – Calling external APIs securely from SPFx
  • SharePoint Framework extensions in SharePoint page
    • Application Customizer
      • Areas in the page available to embed customizations for users
      • Can be used to add google analytics or non visible code
    • Command Set customizer
      • Used to introduce new custom actions to a list
    • Field Customizer
      • Used to customize experiences around the specific fields.
      • Currently available for only read-only scenarios, form fields coming later
    • Extensions currently only available in Modern not classic

19:48 – SPFx new Features – Vesa

  • Dev preview to start pretty soon (within weeks, not months)
  • Web part communications
    • Master and details demo
    • Communications currently done with code, UI coming later
    • Working on multiple columns – in roadmap
    • Raise event with Unique ID to SPFx
    • Details subscribes to event by Unique ID
  • Field Customizer
    • Developer has full control of the div that is being rendered
    • onRenderCell event for rendering value
  • Application customizer
    • Get placeholder by name
    • Use onRender event – *** Verify in recording
    • Have full control inside the div you are given
  • CommandSet Extensions
    • Defined command and commandIDs in manifest
  • Yeoman templates updated with extensions options – asks which type of client-side component
  • All customizers have a base class including context, etc.
  • Customizers must be deployed to app catalog
    • Security control since code is run the user’s context
  • Must enable these customizations on the fields
    • Use code or alternative options
    • Add custom action through various methods
    • Use ClientSideComponentId property and point to id of customizer
    • Field customizers add ClientSideComponentId on the field and can pass in properties through ClientSideComponnentProperties
  • No workbench for dev preview
    • Debugging enabled through querystring parameters

46:53 – SPFx Roadmap

  • Web parts GA
  • Extensions – preview soon

48:03 – Questions

  • Is SP.REquestExecutor obsolete
  • Full page apps on Roadmap – yes
  • Can use CSOM to customize groups – yes can be used to apply customizations
    • Can use CSOM, REST etc
  • Can we use GraphHttpClient to call web api or Azure Function
    • Starting with subset of scopes
    • Cannot use custom token yet
  • Plans field customizers through UI – in roadmap
  • SPFx for beginners – http://aka.ms/spfx-tutorials
  • Page layout customizations in RoadMap
    • Not explicitly part of SPFx
    • Engineering working on page layouts options

Next Meeting May 25th

May Office 365 Dev and SharePoint PnP Call

This synopsis is for the May monthly Office365 Dev and SharePoint Patterns and Practices call. As usual this will contain a link to the recorded video as soon as it is available.

Monthly highlights

  • 2:49 – 5 New Webcasts
  • 4:56 – Metrics
    • Unique tenants – 4,916
    • Http Requests – 2,048,306,419
    • Unique Visitors in GitHub 2 week average – 22,850
    • Views in GitHub 2 week average – 127,343
    • Most used capability – Provisioning Engine (1,306 tenants)
    • Top 5 Countries based on tenants
      • United States
      • United Kingdom
      • Netherlands
      • Germany
      • Sweden
    • Top 5 countries based on requests
      • United States
      • Netherlands
      • Denmark
      • Sweden
      • Germany
  • 7:28 – April 2017 Most viewed samples
  • 10:15 – SharePoint Developer Area Discussion
  • May 2017 Release – SharePoint Framework Samples
  • 11:31 – May 2017 Release – Generic Samples and Guidance
    • Samples
      • PnP Portal Intranet starter kit to version 1.3
      • PnP Partner Pack updates
        • Fine tuning and polishing based on community input
        • Fixed issue when searching for Site Collection Admins
    • Guidance
      • Introduction on guidelines for developing well performing SharePoint Online Portals
      • Debug SharePoint Framework solutions in Visual Studio Code
      • Using Office UI Fabric with SharePoint Framework solutions
      • Hosting client-side web parts from OFfice365 CDN
  • 15:10 – May 2017 Release – Core and engine updates
    • Core (CSOM) and engine
    • PowerShell
    • Core (JS) > 2.0.3
  • Thanks to Contributors
  • Thanks to Microsoft contributors
  • 17:57 – Roadmap – What’s in queue
    • SharePoint Framework
      • New samples
    • Provisioning engine
      • Introduce new schema
    • .Net Core component
    • JS Core Component
    • PowerShell
    • PnP Partner Pack
      • Continue evolving based on community contributions
    • Samples and solutions

20:00 – Demo on new SPFx web part react-async-await-sp-pnp-js – José Quinto

  • Integrate PnP JS Core and SPFx Logging systems
  • Use PnP JS Core with Async function with TypeScript
  • Logging must import from sp-pnp-js
    • Logger
    • FunctionListener
    • LogEntry
    • LogLevel
  • Import Log from SharePoint Framework
    • Log
  • Must set log level
  • Use function listener to combine logging systems PnP-JS and SPFx
  • Await must be provided a promise

34:15 – Using SharePoint Themes in Client-Side Web PartsDemo – Alex Terentiev

44:33 – Yammer SPFx React Web Part Demo – Velin Georgiev

  • Calling Yammer search service
  • Sample Needs Office365 E* to include Yammer
  • Must go to Yammer account and register application
  • Make sure it is enabled
  • Specify JavaScript origins for CORS on Basic Info section in Yammer


PnP Sites Core and PowerShell Special Interest Group May 3, 2017

Here is the summary for the PnP Sites Core and PowerShell SIG call from May 3, 2017. I will add the link to the video and add the timings when the video recording has been posted.

Updated May 6, 2017 – Added video link and timings.


3:16 – April Stats

  • 4,916 Unique Tenants
  • 2,048,306,419 http requests
  • 22,850 Unique Github Visitors (avg 2 weeks) – GitHub limitation
  • 127,343 Views in Github(avg 2 weeks)
  • Most used capability – Provisioning Engine 1306 tenants
  • Top 5 countries based on tenants
    • US
    • UK
    • Netherlands
    • Germany
    • Sweden
  • Top 5 countries based on requests
    • US
    • Netherlands
    • Denmark
    • Sweden
    • Germany
  • Guidance and code on customizations options around SPO modern experiences
  • They are aware of the limitations and missing functionality must make sure things are constant and not changing for next 3-5 years

8:28 – Modern UI Experience Scanner – Released

  • Demo by Bert Jansen
  • Analyzes your tenant for “modern” user interface compatibility
  • Scanning for:
    • Sites not using “modern” pages
    • Lists and Libraries rendering using the classic user interface and the reasons why they do so
    • Customizations in the modern user interface
  • Working on modern equivalent for user custom actions
  • Open source on Github – https://aka.ms/sppnp-modernuiscanner
  • Quick start guide on Github
  • Requires access to everything because it scans everything
    • Can use app-only Principal
      • Instructions on Github readme
      • Safe guard your client id and secret
  • Everything starts in parallel defaults to 10 threads
  • Can get throttled if you are too aggressive
  • Depending on site collection account it could take days to run, not a big deal because low memory usage
  • Outputs reports in csv files
  • Where should the modern page experience be enabled?
  • Enabled for all modern team sites
  • Enabled on most classic team sites
  • If the site has a lot of custom pages they assumed the site does not want modern experience
  • Modern ui not currently created for all list types
    • Announcements, tasks, and calendar lists
  • JSLink and XSLLink customizations disable modern experiences
  • Shows where the feature has been disabled site collection, web, or list
  • Publishing fields and geo-locations fields prevent modern ui
  • Reports show customizations which would be ignored on modern ui
    • Masterpage
    • Custom action
      • ScriptLink not allowed on modern ui
    • Alternate CSS

39:36 – New Provisioning Engine Schema design in Progress

41:12 – New Guidance

44:12 – Q&A

  • SharePoint FrameWork Referencing Styles – CSS/styles encapsulated with a prefix
  • Guidance on testing and provisioning a site – Provisioning engine tested on a regular basis
  • Dev/Test/Prod (ALM) – Working on Guidance

Office Dev PnP – SPFx/JavaScript Special Interest Group 4/27/17

A friend of mine mentioned an idea to me that I really liked and I could definitely see the need for. He suggested that, at the moment, there is no good synopsis of what happens in the Office Dev Patterns and Practices calls that happen on a regular basis. He said he didn’t have the time to take this on but I was free to if I wanted, thank you Eric. I’ll do my best to get a synopsis published the same day as the calls. I’ll run a synopsis of all the calls for PnP.

What is Office Dev PnP?

The Office Dev PnP is an open source, community driven initiative that is backed by Microsoft and Microsoft resources. The goals are to provide tools, samples, and guidance on developing for SharePoint and Office365. There are a lot of samples in the PnP GitHub Repository. There are other repositories in this area as well if you want to contribute to the PnP.


Special Interest Group Calls

There are a few Special Interest Group calls relating to different areas of the Office Dev PnP. Eric Overfield does a pretty good job of explaining what these calls are and how to join them so check out his article, Participating in the SharePoint / Office 365 Dev Patterns and Practices (PnP) Community Initiative.


April 27, 2017 SPFx/JavaScript SIG Call

4:17 – Opportunities to Participate

  • Demo an SPFx Webpart
  • Demo sp-pnp-js in a Project
  • Contribute on GitHub
  • Provide Feedback

5:14 – PNP-Core Updates

  • 2.0.4 Released – Fixes SPFx blocking bug
  • Doing beta releases now – sp-pnp-js@beta
  • Checkout wiki and developer guide
  • Search Improvements
  • Updated React SPFx samples to work with sp-pnp-js
  • Report issues in the GitHub issues list with enough details
  • Graph support in process though early stages, discussion in issues list

11:58 – SharePoint Framework Updates

17:30 – What engineering is working on

  • New capabilities
    • Web part to web part connections – sending events
    • Modern UI extensions
      • Modern JSLink and UserCustomAction
      • Additional Yeoman templates
    • Workbench improvements
    • SPFx improvements
    • Numerous topics for both online and on-premise.
    • Working on on-premise for 2016, not 2013 at first depending on demand
  • Other
    • SharePoint document consolidation to single location eventually to docs.microsoft.com/sharepoint
      • MSDN docs will go away because the platform is super old
      • All MSDN SharePoint docs will be moved to dev.office.com/sharepoint then to final location

20:34 – Demo Vesa SPFx VS Extension http://aka.ms/spfx-vs-extension

  • Still using Yeoman for templating
  • Early alpha release available
  • Other releases coming soon
  • Template shows under the Office/SharePoint section for new project
    • Launches wizard
    • Can click generate or go to Advanced to see/modify the full yeoman command
      • -skip-install switch to skip the npm install
  • Can add more web parts
    • Add new item to project
    • Select Office/SharePoint – SharePoint Framework
    • SPFx Web Part
    • Prompted with smaller wizard
  • F5 launches gulp serve
  • Does not introduce any new templates, just uses the yeoman templating
  • Missing Features
    • Native debugging
  • This is for those that want to do SPFx in Full Visual Studio instead of VS Code

30:09 – Demo Sebastien RiotJS

  • List Viewer Web Part

Available in Github https://github.com/sebastienlevert/spfx-riot-list

  • Need riot and riot-typescript added to package.json
  • tsconfig.json add experimental decorators to true
  • Extend RiotClientSideWebPart
    • Handles the mounting to the DOM
  • Riot allows separation of view and component like Angular
  • Using await/async from TypeScript
  • Using PnP getAs ODataEntity
  • Must call update to update the ui after asynchronous calls
  • Riot also includes a router

46:08 – Open Discussion

  • Any headway with gov farm support for SPFx?
    • No dates
    • Wrong people to ask
    • Right way to find right people to ask would be to have the gov client to contact the gov farm people.

Guidance on calling external APIs, WebApi/Azure Functions early next week

Next Meeting May 11th.

Goodbye Lenovo

I just got back from an interesting week at SharePoint Fest DC. The event and the city were great. The interesting part came from some issues that I experienced with the tablet that I use as my main presentation machine. About a year ago I purchased a Lenovo X1 Tablet after having used my Surface Pro 2 for over 2 years. I loved my Surface but it was getting old, so I needed a new machine. In the research I did, I came across the X1 Tablet. Comparing with the price and features of the new Surface Pro tablets, including the Surface Book, the X1 Tablet was cheaper while providing similar specs. The X1 Tablet was also in Lenovo’s Thinkpad line, their line of products sold to companies. So, I decided to purchase the X1 Tablet. For the most part, the tablet has worked really until last week.

I was using this tablet Saturday evening and everything was working just fine. I packed everything up to head out for the trip the next morning. After an uneventful plane flight, other than a few bumps, I arrived in DC.

Sunday evening before my first workshop the next morning I figured I would double check my slides and demos to make sure everything was ready. I pulled my X1 Tablet out of the bag and the neoprene sleeve that I keep it in. I pushed the power button and nothing happened. It was acting like the battery was completely drained, which was odd since I charged it the night before, so I plugged it in and still nothing. Normally this would work to power on the tablet. I then tried to track down a paper clip to use the reset button on the tablet. I finally found one and tried the reset button. Still no change. At that point, I decided it was time to call support. After working with support, they said I would have to send it in to Lenovo to get fixed. This didn’t help me for the workshops and sessions I was doing that week. So I ended up using my PC on a stick that I carry for emergencies. I once had Office switch to unlicensed mode during a conference, so since then I don’t travel without the backup machine. This worked for Monday’s workshop but the rest of the time I needed a screen in front of me. Monday evening I walked to the closest electronics store, 2 miles, to buy a computer since I had to have one. My old tablet was still under warranty when this all happened, I had 19 days left. Which is what makes all that follows extra suspicious. After a snafu with the return box I finally was able to send the tablet to Lenovo. They received the tablet the next morning and they started working on repairing the tablet. The status then shows that the repair was canceled. No message in the system about what was going on. When I finally received the tablet back a couple days later, included was the following letter.


The part I find interesting is that somehow overnight my tablet developed several failures in key components overnight. In Lenovo’s exact words, “4 major parts and other plastics damaged.” They then go on to list out the problem components. System board W/Integrated CPU, HDD, LCD, Finger print reader, LCD touch cable, Camera cable, Camera board, Audio cable, back cover. With all these problems, you would think the tablet would have had to have sustained some major trauma. If you look at the included pictures of the tablet there is not a scratch on any off it let alone stress points where there was a large enough impact to cause the problems that Lenovo is “claiming.”

I find it suspicious that within the last few weeks Lenovo has completely removed all references to the X1 Tablet from their web site and store. If you happen to find a cached link somewhere you will be taken to the home page of their store. Apparently, Lenovo has had enough problems with this tablet that they decided to stop selling it. But not only that they expunged it from their web site. So, the problems people were having were severe enough that fixing the issue(s) was not possible.

In order for all these systems to fail would require that the tablet has literally no reinforcement or protection for key components.

The removal from their site and my tablets sudden onset of complete failure leads me to believe that Lenovo doesn’t want to fix this tablet and leave me with an expensive paper weight. All because they couldn’t test their product before releasing it.

Needless to say, I am not happy with Lenovo at the moment. If this is how Lenovo treats their business tier products, I hate to see how they treat normal customers. At the current point in time I cannot suggest any Lenovo product to anybody. Which is sad because my first laptop many years ago was a ThinkPad and that thing was a tank.

Tablet Pictures

Modern Software Development Lifecycle – Part 2 Continuous Integration

This post is part 2 in a three-part series of posts on Software Development Lifecycle in the “Modern” development paradigm. As I explained in the previous post, I have been thinking about how to integrate client-side code into enterprise development processes. Many years ago, I was introduced to a concept called continuous integration. I even implemented it at a previous employer, it was awesome. Continuous integration is the concept that as changes are made to code they can immediately be combined and tested to make sure everything works. Then once everything checks out continuous integration tools can also handle the deployments for us. As my development has shifted from compiled code to more client-side code, I have been trying to figure out how to use the tools and processes that I have been using with client-side methodologies. I recently figured out how integrate continuous integration into my processes now. This revelation was thanks in part to the push of the SharePoint Framework. I also recently came across the fact the Visual Studio Team Services has added continuous integration capability. TFS supposedly has this feature as well. In order for this to work with our processes in SharePoint and JavaScript you will need to have a working gulp script from the previous part for these instructions to work.

Continue reading “Modern Software Development Lifecycle – Part 2 Continuous Integration”

SharePoint Fest Denver 2017

I recently received word that I will be speaking at SharePoint Fest in Denver for 2017. This event runs May 30th-June 2nd. There are workshops running on May 30th and June 2nd with regular sessions in between. I have been selected to present the following sessions. I’ll update this article with more details and a discount code when I receive it. Visit http://www.sharepointfest.com/Denver/index.php for more details and to register. Continue reading “SharePoint Fest Denver 2017”

SharePoint Fest DC 2017

I have been selected to speak at SharePoint Fest DC 2017 running from April 17th-April 20th. I really enjoy speaking at these events and I will be doing the following sessions/workshops. Please stop by and say hello if you are in the area. Go to their site if you want more information about the conference, http://www.sharepointfest.com/DC/index.php Continue reading “SharePoint Fest DC 2017”

Post to Microsoft Team from Flow

I was preparing a demo for the Arizona SharePoint Pros group on Microsoft Teams, PowerApps, and Flow, and I thought it would be cool if I could have my PowerApp post a message to a channel conversation for teams. After a bit of digging I got it to work. It is fairly simple to setup so I figured I would write this post to make it easier for others to setup. Continue reading “Post to Microsoft Team from Flow”

Manually Registering a SharePoint Add-In

After writing the Modern Development Lifecycle article I came to the realization that the article I mentioned for creating the client id and secret missed an important step. It missed how to create the application itself. So in this article we are going to create and permission an add-in so it is ready for our use. Continue reading “Manually Registering a SharePoint Add-In”