Sign In
Oct 06
I’m speaking at Live! 360 Orlando

I'll be speaking at Live! 360 Orlando, November 16-20. Surrounded by your fellow industry professionals, Live! 360 provides you with immediately usable training and education that will keep you relevant in the workforce.

I'll be presenting the following sessions:

•    Using Azure to Replace Server-Side Code in Office 365

•    What's New for Developers in SharePoint, Visual Studio and Windows Server

•    Workshop: Deep Dive into Authentication and Authorization in the Cloud

SPECIAL OFFER: As a speaker, I can extend $600 savings on the 5-day package. Register here:

Sep 13
Extending Application Insights monitoring to include Performance Counters

I previously posted about using AppInsights to help troubleshoot an issue. I wanted to post a follow-up to show some of the other capabilities of the AppInsights offering.

The first step toward resolving the application issue was to implement caching. While Azure provides a Redis Cache service, the initial implementation put in place was the ASP.Net cache. As we saw from our AppInsights data, the web server is not under stress. So, using the built-in ASP.Net cache instead of paying for the Redis cache was chosen. We can certainly upsize later if necessary.

Monitoring the ASP.Net cache is possible using Performance Monitor. Application Insights has the capability to store and report on performance counters. I chose to implement this thru the ApplicationInsights.config file. This file is added to the Visual Studio project when the Application Insights SDK is added via NuGet. I add two counters to the AppInsights config file, which will then be captured by the status monitor application and send to the Azure service:

    <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector">


<Add PerformanceCounter="\ASP.NET Apps v4.0.30319(??APP_W3SVC_PROC??)\Cache Total Turnover Rate" 
ReportAs="Cache T/O Rate" />

<Add PerformanceCounter="\ASP.NET Apps v4.0.30319(??APP_W3SVC_PROC??)\Cache Total Hit Ratio" 
ReportAs="Cache Hit Ratio" />




The performance counters include a placeholder (??APP_W3SVC_PROC??) that indicates I want only the current instance of the ASP.NET Application counters. Without specifying the instance placeholder, the service would get counters for every ASP.NET application on the server. In some cases, this may be what you want.

After updating the configuration file and running thru some of the application pages, the performance counters are visible in the portal. I decided to add the cache counters to the default Server chart. I clicked on the Servers blade, then clicked Add Chart. On the Chart Details blade, the counters I added via the configuration file are at the bottom of the list.

After my updates, I can see at a glance the cache statistics:

Since the application now has the App Insights SDK added, we can consider implementing custom events. The issue in this application was the data retrieval for the search form. In a future post, I will discuss how AppInsights custom events can tell us exactly which columns are actually being used for searches. This tracking data can then be used to discuss with users whether the search form should be changed, or perhaps additional pages built to provided the desired information without searching. The goal being a friendlier, intuitive application that helps people get their job done, without being a job they need to do to do their job.

Sep 08
New Article: Using Application Insights and Performance Monitor to Troubleshoot Environment Errors

I published a new article today, discussing an exercise I had last week in troubleshooting errors in a web application. The document covers a few of the areas of my workshop from a few weeks back. All developers should have these techniques in their pocket.

The article is Using Application Insights and Performance Monitor to Troubleshoot Environment Errors.

Last week on the their podcast, Andrew and Chris also discussed Application Insights. AC mentioned he used the javascript/client side compenents quite extensively. I encourage you to give a listen to Episode 94 (Yo Office, Office UI Fabric and a Real World Azure Performance Retrospective) as well as AC's blog post Using Azure Application Insights with Single-Page Apps.

Sep 01
Webinar Series – Using Azure Active Directory to Secure Your Apps

I have presented at many conferences, SharePoint Saturdays and user groups about leveraging Azure Active Directory (Azure AD) for your application authentication and authorization. But, seventy-five minutes is never enough to sufficiently cover the topic. There is just so much information.

Thanks to my friends at ITUnity, I have much more time to dig thru the topic. Starting today (September 2, 2015), I am presenting a three-part series on Azure AD. This gives me the opportunity to go deeper and show more demos. Even some Q & A!

You need to register for the individual events. They will be recorded, and your registration allows you to view the recording at a time that is convenient for you. To register, visit the following links:

​Part 1: Introduction to Azure AD​Wed, Sep 2, 2015 10:00 AM – 11:00 AM CDT
​Part 2: Integrating Azure AD​Wed, Sep 16, 2015 10:00 AM – 11:00 AM CDT
​Part 3: Advanced Azure AD​Wed, Sep 3010:00 AM – 11:00 AM CDT

I hope to see you there!

Jun 01
Azure AD Token Lifetime
May 27
Upcoming Events – June 2015

Fresh on the heels of the //build/ and Ignite conferences, I will be at many events during June. I would be delighted to meet any readers of the blog at these events. Say hi if you are there!

SharePoint Saturday Atlanta – May 30

I'll be delivering two sessions: Getting Started with Office 365 Development and Deep Dive into the Office 365 API for Azure AD. These sessions provide the foundation for apps that consume Office 365 services.

Critical Path Training webinar series – June 4

For this webinar, I'll be talking about Cloud-based Identity for Applications. As your organization moves to the cloud, the need for cloud-based authorization and authentication grows. This talk provides a roadmap for getting up to speed on the options.

Build Tour 2015 Chicago – June 10

This event will cover all the announcements from Build, not just Office 365. I'll be there supporting specifically to answer questions about O365/SharePoint development.

SharePoint Saturday Boston – June 13

Again, I'm presenting the Getting Started with Office 365 Development talk.

DFW SharePoint UG – June 16

For this event, I'm providing my perspectives on SharePoint customization. The talk is titled "Business Solutions in SharePoint - a story of transformation" and covers how we built solutions on SharePoint in the past and how we will do so in the future.

DevCamp: Office – June 18

Free, hands-on training from the DX Group at Microsoft. Bring your laptop with Visual Studio and you'll have a few apps add-ins done before you go home.

SPTechCon Developer Days – June 24-26

This is my first time presenting at an SPTechCon event and I cannot wait! Since this is a developer-focussed event, I have a couple of sessions that go beyond the basics: "A Developer's Guide to SharePoint Search" and "Deep Dive into Native Universal Add-in Development with Office 365 APIs." Be sure to use code SCHAEFLEIN when you register for a discount.

Apr 10
Sharing Content in SharePoint Online
Mar 21
GRDevDay talk on Cloud Identity

I had a wonderful weekend in western Michigan, which included two sessions at the GRDevDay conference. (Think SharePoint Saturday, but for all things developer.) My thanks to the organizers for a job very well done!

The slides from my talk on Cloud Identity are posted on ITUnity.

The Office 365 session can be found on Microsoft Virtual Academy, with the slides and code on GitHub.

Mar 09
SPS DFW Wrap-up

I had a terrific time at the SharePoint Saturday event in Irving, TX this weekend. The developer track consistently had about 20 attendees in the room, which is way more than I've seen at SPS events in the past. In addition, there was a Q&A room, and attendees had Eric and me going for another full hour.

My presentation was taken directly from the O365 TPM group (thanks Jeremy!) and can be found on Microsoft Virtual Academy, with the slides and code on GitHub.

Also, I want to thank the organizers (Eric, Eric, Rich, Corey, Jen, Miguel, Kyle and others I have likely missed) and sponsors (Amazon Web Services, Slalom, Planet Technologies, K2, Metalogix, RBA) for making the event a smashing success!

Feb 13
Who is managing Windows Update for your SharePoint farm?

Microsoft announced this week, via a blog by Senior Escalation Engineer Stefan Goßner that SharePoint CUs will be included in Windows Update. The comments on that post indicated the risk for many SharePoint deployments.

In summary, Stefan acknowledges that due to the number of configurations possible with SharePoint that no guarantee can be made about causing issues in existing code (called a regression). Stefan also points out that production servers should not take updates directly. While many agree with this position, I find that small business administrators (who deal with everything, not just SharePoint) are not well versed in SharePoint patching and just accept the default values.

So, if this situation applies to you, I suggest you look at your Windows Update settings. I'm off to update my DSC configuration to make these changes to my VMs.

1 - 10Next