Share and Enjoy !

Find this Podcast “Moving from Full Trust Code to the New Cloud App Model Webinar” on the ThreeWill Soundcloud, Stitcher, and iTunes.


Danny Ryan:                          During the webinar feel free to ask them. I’ll keep an eye on those as we go along. Maybe we’ll queue them up for the end and I’ll just run them by you as they come up. We’re covering essentially ten things here so as we go through each of them if there’s something in particular that you’d like for us to follow up on please put them as a question. With that let’s go ahead and get started with the webinar.

Pete Skelly:                             Sure. I like to start off with a what’s in it for me or WIFM slide to kind of set the stage of why is moving from FTC to CAM important. From a business perspective and from a development perspective there’s kind of some obviously reasons like reducing some of the declarative friction that everybody has to go through and frustration dealing with the Full Trust code model. Once you move from Full Trust code to the Cloud App model or the [inaudible 00:01:22] model or now, changing again, to the Add-in model you start to be able to deliver things a little quicker.

We’ll see a slide a little later about some of the penalties you pay, or an estimation of the penalties you pay. Now moving away from Full Trust code you start to be able to follow some things that will increase your solution quality and let you do some things that were rather difficult within SharePoint point in the past. The things that really kind of stand out to me are it enables you, moving from that Full Trust code service-side object model it enables you really to increase your value. You start to move into a standard web developed world that actually has an abundance of tools at your disposal and a lot of things that can benefit you as a developer and as someone trying to bring value to you your business.

Most of all … We got called, in a previous seminar in SharePoint Point Saturday session last year, Sean Hester from Three Wheel called SharePoint Point a platypus. This animal that over time sort of had things bolted onto it. Had a spur that could hurt you, has some webbed feet, and really looks strange if you looked at it from the wrong angle. There is no more platypus. That’s kind of, in a nutshell, why I think this is really good for you. There’s some high level things that make you more productive and are really valuable from a business perspective. How far and how fast you can move.

Danny Ryan:                          That’s great.

Pete Skelly:                             For the typical five to ten things I like to think of it as more of a David Letterman homage right now with David Letterman leaving I wanted to do a top ten. We’re going to run through these and I’ll start with don’t pay the customization tax. What I mean by that is if you’re going to write declarative code you’re going to, over time, pay a tax for customizing anything that was deployed with that declarative code or using feature framework. That starts with learning to code imperatively and use C#, CSOM, et cetera to actually deploy your features, your customizations.

Starting with something like a standard team site or a standard list and then layering in your customizations is what you really want to do to take advantages of that model. The challenges with the FTC model, or Full Trust code model, if you’re developing in C# typically are going to have to deal with, and this may be a strange phrase to someone relatively new to SharePoint, but ghosted and un-ghosted pages.

If I have something on a disk … Yeah it’s frightening. If I have a file on disk and I’m looking at a template that’s based on disk I don’t have access to those anymore. If I’m going to try to deploy those things and use templates the declarative way sooner or later I’m going to have to write code to address that. If anybody’s been around SharePoint long enough realizes maybe I did a list scheme and deployed a list. But sooner or later if I wanted to change that I actually had to write code to address changing things that were provisioned with that list template.

That’s one of the things that you don’t want to pay that customization tax. You want to think of those things in advanced. Along with that there’s things like the old model of running something within context of the server frame where you have DevOps and your IT department constantly coming to you and saying “No. I’m not going to allow custom code on the server.” In some situations, in some customers, you weren’t even allowed to do that. It was an isolated FARM where you couldn’t even do it. When the sandbox solution came out that was kind of … We had customers specifically who kind of do that and it’s a way around things but there are limitations to it.

Then you have the ALM, or application life-cycle challenges, as well. The ability to kind of merge in things easily, unit test things easily, deploy them easily, and not have to go through the pains of upgrading all the time. That’s the things you want to move away from and the Cloud App model or Add-in model allows you to do that. It also broadens the scope because it’s not just SharePoint anymore and we’ll touch on that. The other big thing is the Full Trust code model is not future proof. To the extent that it can be, CAM is going to protect you from trying to future proof an app from Microsoft pulling a feature or obsolescing an API [inaudible 00:06:12] or working with some of that.

It’s not available in Microsoft 365. They’re never going to have Full Trust code in Microsoft 365. They’ll have Full Trust code on prem so SharePoint 2016’s announcement, there will still be the option to do that, but there are benefits to doing things even in a Cloud app model even if you’re on prem.

Danny Ryan:                          Okay.

Pete Skelly:                             That’s why I say think twice even if you’re on premises.

Danny Ryan:                          Just a basic question. When we’re talking about, and I know it’s the name of the webinar, Full Trust code verses CAM-

Pete Skelly:                             Okay.

Danny Ryan:                          At a high level just refreshing my-

Pete Skelly:                             Full Trust code just assume that if I’m writing C# and I’ m writing that code to run in context, or on the SharePoint server itself, I require Full Trust for that code to run.

Danny Ryan:                          Yup.

Pete Skelly:                             There are many people who say things like “well, I can run with elevated privileges” and all of these things, but nothing stops you from writing code that is a runaway process basically. SharePoint as a rule required you to have some in depth understanding and that Full Trust code model on the server side required you to do things like understand what SP Dispose … What had to be disposed. If I wrote a custom class and I consumed some of those web or site objects I had to dispose of those properly and sometimes that was not the most intuitive thing to do.

Danny Ryan:                          Okay.

Pete Skelly:                             When we say Cloud application model to me it’s a benefit on multiple fronts. I can now get a good, clean separation of my code and some of the SharePoint code. Cleaner. Maybe not always clean but I can start to move away from that running inside the SharePoint process. I don’t have to connect to WP anymore. I’m not connecting to debug in that situation. I’m also not running inside that context and having my IT department tell me: “you just blew up the server.” Your little web part that goes and queries back to directory and tries to build this organizational structure on the fly, by the way, kills the server every time it runs. Right?

Those are the kids of things, real world scenario, that happen that somebody said “no, shut it down. I’m not going to run that code.” If I have a Cloud application model I start to take that away. I can run these things out of process and just surface the information inside of SharePoint. Now I’m using SharePoint as my viewable surface, if you will, and I’m surfacing the content but it’s running outside our process. There are benefits and drawbacks to that. I’m not going to pain a rosy picture.

Danny Ryan:                          Yeah.

Pete Skelly:                             There are good and bad. It’s more good to me.

Danny Ryan:                          Is this something that came about with SharePoint 2013 … When did the CAM stuff come about?

Pete Skelly:                             2013 so in 2010 there were [inaudible 00:09:03] services and the start of the client-side object model. 2013 really kind of stepped it up a notch and let you start to do things more and more. Now with 2013 and Microsoft 365 some of the changes that are being pushed are monthly. You’ll see monthly updates to the client’s client object model.

Danny Ryan:                          That’s great and I appreciate you-

Pete Skelly:                             No. No. That’s good. I kind of jumped in there.

Danny Ryan:                          Yup. Absolutely. No Problem. Go ahead. Sorry.

Pete Skelly:                             I wanted to show a little bit of something we’ve showed some customers in the past and I’ve showed in some other areas. This is a little fictitious. It’s an estimation but one of the reasons that SharePoint kind of grew so quickly is, if you look at the bottom there, a FARM solution or a Full Trust code solution you could go for quite a while for customer requirements and actually do things like prototype within the UI and create something very meaningful and very valuable. Y

You didn’t pay a whole lot, you didn’t pay a huge price for that too quickly. You got a lot of value. But once you started to hit this point of trying to customize your point and make it do some things that it wasn’t really designed to do you started to really pay the price for that. As you kind of increased your customer requirements the level of effort required to do some of those things was astronomical and just not feasible. It wasn’t valuable for a business to do that a lot of times in my opinion.

What we see with the provider-hosted app is there is a learning curve. You’re going to have to learn some new things. You’re going to have to probably learn JavaScript if you don’t already know it. When I say learn JavaScript I don’t mean the old school JavaScript that everybody hates. There’s better things and better ways to do that now. But once you get past that learning curve and once you learn some core concepts that curve really gets shallow and we reach this point where you start to pay less and less of the customization tax of that realm in my opinion.

Once you get out past that point where those two lines meet you really start to see value in looking at a provider-hosted app from the perspective of how much does it take for me to do something that is custom. If my business wants a particular application that needs some type of relational store that exceeds the capabilities of SharePoint I can do that now and I’m not trying to square peg, round hole the solution.

I can actually say “well, I can service this kind of information inside of SharePoint” and it acts like SharePoint, looks like SharePoint, but the backing store is a sequel database, or a document database, or whatever it might need to be. I think, from my perspective, paying that customization tax you really need to consider that. For me this is a hug benefit of this new model and as I said it’s not just for SharePoint.

The second thing is think of … Don’t think of moving from Full Trust code to the app model or Add-in model as “I need to migrate again.” Think of this really as a transformation of your code to live in a new world. The definition down there at the bottom is, it truly is, a radical or dramatic change in the way you need to think. When I say that you’ve got to look at the business problem, [inaudible 00:12:34] and Steve Walker always kind of say you reevaluate that business problem. Look at this as an opportunity to pay off some of that technical debt.

When I say technical debt I mean in the past if you weren’t unit testing something like a web part, because you thought it was too difficult to do some sort of mocking strategy for that UI, now you have that opportunity to actually do things in sort of an NVC or NVBM model that lend themselves to decoupling that code, and writing for test-ability, teasing things apart from better deployments. If I’m surfacing information inside of SharePoint and I’ve done things appropriately that’s going to be easier. Yes. It is a rewrite so you’re probably not going to be able to just use your code. You’re going to have to look for some opportunities to make some changes.

The classic example is a timer job. Right? A lot of people have experience with writing timer jobs in SharePoint 2007 and 2010. If you’re going to write that in 2013 you really want to think about it. If you’re on prem that may make sense. I’m not going to lie. That may make sense to a lot of folks on premises. But if you’re going to do that in the Cloud you don’t have the option. You can’t deploy that Full Trust code.

Doing that in the Cloud forces you to think about what does the business process really demand. Don’t just throw a timer job at it because I can. Right now if you wanted to do that could you use a queuing mechanism. Could you queue those items for later processing, could you use a web job that looks like a standard task that’s running in the background? Yeah. It needs some rewrite but it’s also a really good thing to start to decouple your software and get back to what I always say: I think SharePoint, in my opinion, made a lot of software developers who were really quality software developers kind of lazy. They forgot some things because SharePoint just didn’t let you do it. This bring back some of those good practices in my opinion.

There are assessment tools out there that will help you make this transformation but they’re only going to analyze your code. They’re not going to look at the business process. They’re not going to tell you “hey, this process really can be teased apart and done better if you analyzed the process and said ‘you know what? I’m actually using a timer job or I’m using some bit of code that’s actually running with elevated privileges.'”

Maybe you don’t need to do that anymore. Right? It makes you kind of think, and it should make you think, it should make you analyze that process and come to a different conclusion hopefully. Transforming rather than migrating your code. The way that Microsoft’s patterns and practices team is pushing this is there’s a transformation approach. It really looks at understanding what’s available to you. Gather and understanding or kind of train yourself, train some folks around you, your organization, et cetera in what the app model is, what CSOM is, things that you’re going to have to use in transforming those solutions.

Then look at your solution assessment and basically walk through that solution, analyze those requirements, look at the business requirement of the solution; Is it purely UI? Do they really need to have timer jobs? Can this be a workflow? Does that workflow need to be in code anymore? Can it be declarative completely. Take the opportunity to look at some of those things then plan out what that transformation is going to be. What do you need to do? Where are you going to host these applications if you’re on premises? How are you going to do that. Do you need to order the hardware? All those things need to be considered.

Were not talking about migrating just the 2010 environment to 2013, or 2013 into a different FARM, I’m talking about how do I tease apart that application. If you’ve got content there, and a content type that you’ve deployed declaratively, in the past there are ways to basically create a new content type that is “declaratively deployed” and then convert some of that existing content to that new content type to enable you to decouple that and now pay that customization tax we talked about before.

Finally the development, and testing, and deployment stages. Once you start down that road and you get that plan you’re going to have to go through all of that technical planning, all of that I just said, do I have to migrate? Can I do greenfield migration? Do I have apps that I can just move over time? If you’ve got a significant investment in an app that was released last year you’re probably not going to rewrite that immediately. You’re going to take that opportunity to say “yes, I can do maybe greenfield opportunities.” A lot of our clients today are doing that. They’ll look at newer opportunities or greenfield projects to do this verses trying to redo all their apps immediately.

Danny Ryan:                          I imagine apart of this approach is not just looking at the apps you’ve created but also a lot of people on the on premises implementations they have a lot of third party tools as well. We’ve heard from customers where if they’re using leveraging something pretty heavily inside of SharePoint that it’s probably Full Trust solution then what do they do? They need to decouple that from that third party option-

Pete Skelly:                             Yup.

Danny Ryan:                          Then their looking. It’s probably also apart of that analysis is what are you currently using in your environment.

Pete Skelly:                             Yeah. Think of web parts that are using audiences. Right? If I’m using a custom web part that uses audiences and is targeting content how do I do that in this new world? Maybe I have just a piece of JavaScript that’s actually making AJAX calls through custom web API and secured AP groups. Those are things that have a better solution today in my mind. You’re not trying to look at some of those and say … That’s the square peg, round hole issue that I kind of look at.

It use to be hard. You use to have to rack your brain and say there’s got to be an easier way and in my opinion now there really is. The third thing is gradually adopt. Just transform what makes sense as it makes sense. This is kind of really my opinion based on what some of our customers have done. I’ve mentioned before if you’re on premises and you’re going to stay on premises then service-side object model might make sense but understand the risks when you do that.

If, for some reason, 2016 has something that would break that code or make changes to how that has to be implemented yes, you could write that code maybe faster today because you got that knowledge of 8, 9, 10 years of SharePoint experience with service-side model code but do you really want to pay that customization tax. Do I want to code that again or do I want to make some smart decisions now in the greenfield project, for example, and just do it with the Cloud application model.

If I’m going to gradually adopt, again, I’m going to focus on that user and business requirement. Can it be something that is a minor change to an existing app? You’re not going to change a full app, right? If it’s something that “Oh, I need mobile.” If you’re going to use mobile, if you need some sort of mobile interface or responsive interface, take that opportunity to … Let’s deploy the site imperatively. Let’s use CSOM to deploy that site. We’ll talk about a couple of other things in here: remote management, remote patterns. Deploy it remotely and then use the things that are at your disposal like HTML 5, and responsive, and do the media queries that let you target different devices.

If you happen to separate your logic out you can basically have an API behind the scenes that then can be a native application; an iOS or an android app that’s just using SharePoint as a series of service. We’ll talk about that too.

You really want to think about “well, just because I can should I?” Just because you can doesn’t mean you should. You really want to gradually adopt these things and say “okay. Just because I can write that service-side object model code … Should I really be doing that? Yes, I might be able to do that a little faster but I’m going to pay the price for that.

Danny Ryan:                          I wonder if, as you’re talking about gradually adopting is there anything where we’re seeing people first start to move, let’s take for instance they start to move their extranet onto Microsoft 365 but they keep their intranet on premise. I guess what part of this is trying to decide “yeah, I want to get my feet wet with starting to do somethings in the Cloud but how do I distinguish?” More-so looking at a technology approach to distinguishing that but are we seeing anything where we see people maybe decided on one environment verses the other and has there been a pattern that we’re starting to see people …

Pete Skelly:                             If I had to describe it in sort of very quick terms it’s hybrid.

Danny Ryan:                          Okay.

Pete Skelly:                             You mentioned the webinar that we did before and [inaudible 00:22:17] based on the white paper and the reality is most organizations are going to be hybrid. It just doesn’t make business sense not to use Microsoft 365 for some of the, I call them commodity services, some people don’t like that term. But Outlook … Your email, tasks, those things are great services that the reality is they’re running at such a massive scale. You can’t beat them from a price perspective. Right?

Danny Ryan:                          Yeah.

Pete Skelly:                             But you may have a huge investment in provisioning site for team sites or projects. Those things are processes that are business specific. They might have things that are very specific to you and they have custom code. The provisioning process is custom but that’s something you probably want to selectively say over time I’ll move that into the Cloud.

The other thing is search. Search is one of those huge, high value things for a lot of our customers. That stories getting better. It’s a little hard today in certain situations to have a synchronized, if you will, or single search experience. It’s doable. It’s not great today if you’re 2013 but 2016 will let you have a common index. I think the short answer is it’s hybrid.

Trying to gradually adopt means picking your battles and saying “okay. If we’re going to move [inaudible 00:23:49] for calendaring, and email, and some of those things” you’re going to put that in the cloud. But I’m going to stay on prem for quite a while. Just look at how do I do the things I do today in a better way. If you have to do a rewrite, or somebody asks for a feature for the team sites provisioning that you’re doing today, think about how do I do that? Start to piecemeal … gradually put in those pieces so you’ll have an IAS server that’s running maybe an IS or an MBC app that’s injecting some JavaScript into everything verses deploying those assets like you use to do using a feature.

Take some opportunities to stop doing some of those things and you don’t have to do a wholesale process. Too many businesses that we talk to really think of it like “I’ve go to make this huge investment and rewrite everything.” No. You’re going to have to rewrite them if you choose to but you don’t have to rewrite everything today.

The fourth is owning the provisioning process and I just kind of mentioned that with hybrid. A lot of companies are provisioning those sites and teams sites and even other project sites, or groups, or et cetera. There’s where you really want to avoid the feature framework deployments. That’s where you’re going to get into trouble the most trouble deploying and XML Schema file for a list and net files. In certain situations you can’t do that. Right? If you’re going to do that in Microsoft 365 it’s just not even an option.

If you move away from that on premises then you start to look at how do I do this and to your point earlier, Danny, look at doing this additively. Instead of deploying that JavaScript asset or trying to make some calls to user profile service, or some of those types of thing, don’t put those in C# code and deploy them in assembly and be server-side. Think about how can I do that using CSOM in an IIS process that’s removed form the SharePoint server in a different app.

I doesn’t even have to be IIS. It can be Node and PHP. You’re no restricted anymore so if you’ve got Java skills and you can do this now the worlds kind of your oyster. You’ve got JavaScript skills, and you know Node, and you’re coming from a different world you can do those things now too. You really need to learn to use remote provisioning patterns. That’s a blessing and a curse because I think some of this is “okay. Now I’m off a server but now I’ve got to figure out how to do things remotely. What CSOM is available to me. I know the server-side object model like the back of my hand. I’ve got to learn some new things.

I’ve been pretty impressed with how quickly some of the things people fill out in UserVoice so if you see something that is a gap log a UserVoice call or a UserVoice request and let them know. Let the PnP team know. There’s a lot of avenues to make this story better. I think Microsoft’s making some huge investments in there. The bottom line is you have to learn some new skills, or new patterns and approaches to say “if I want to deploy and provision a consistent one drive experience for my users.” Right? We chose to go to Microsoft 365 but I want to automatically deploy that one drive the patterns and practices team has a couple of examples where they’re injecting a JavaScript onto a page and every time someone visits that page, if they don’t have a My Site provision, they automatically provision that page.

Think of the power of some of that. User experience improves. They’re not sitting around with the spinning wheel of death, so to speak, waiting on I’ll be done soon type things. Those operations can be done in the background.

Danny Ryan:                          Working on it.

Pete Skelly:                             Yeah. Working on it. Right? Then, as I mentioned, the PnP. Use that provisioning framework. The patterns and practice team just recently published a update to their [inaudible 00:27:58] repository in May. I just find it amazing. This is a big gap to us specifically, internally, for the way we provision our client and project sites. Being able to extract all the information from an existing site and kind of use that as a template was a missing piece. You had to write a whole lot of extra code.

Now you have the benefit of being able to say I want to configure a site, sort of point and click, right? I want to create a site, create some lists, create content types, my site columns, all of that through the UI and then use their provisioning framework to actually consume that in your live site or kind of take that live site and export it as a template … And I won’t go too deep into there, I’ll mention some links later. Use that template to provision new sites and then layer on your changes. If you’re going to provision a new site basically say “I want custom forums” or “I want the ability to kind of have drag and drop on some of my lists.” Layer that in as sort of a app, or SharePoint app, or even a remote app that lets you do that and gives you that better user experience.

Danny Ryan:                          Now this provisioning framework … You just mentioned sites and your mentioning one drive earlier. I’m use to provisioning these site from … Understand that processes. Are other things that you’re trying to provision as well? What are some examples?

Pete Skelly:                             Yeah. We’ll touch on that. Good segway.

Danny Ryan:                          Thank you.

Pete Skelly:                             I’ll give you a five dollar bill later. When I talked about-

Danny Ryan:                          I want my five dollar bill now.

Pete Skelly:                             When I talked about remote provisioning patterns one is you really need to understand what can you affect if you’re in the cloud, what can you affect if you’re on prem. If you’re in the Cloud you’re going to have tenant which you have to deal with. You’re going to have site collections in both environments: webs, pages, et cetera, all the assets that you might deploy, JavaScript, web part definitions, et cetera. Some of those things, if you’re on prem, don’t really change. You have all the same structures or entities that you’re going to have to deal with.

If you’re in Microsoft 365 though you’re going to have to walk some of those things. You’re actually going to have to iterate over some of those site collections to do some of those operations. If you have external sharing, for example, how are you going to find out today what all of your users that have external sharing turned or all of the custom sites that you’ve got provisioned. That’s a gap. You’re going to have to iterate over some of those and do some reporting on your own.

How you do that is very important. Remote management means I’m going to have to use a client-side object model or I’m going to have to use REST. There’s some varied opinions here about which is better, which should I focus on, which should I prefer, et cetera. I find when we go to customers these days a lot of times it’s “I just want to get the job done.” If you’re comfortable with REST and you understand it I think you can get huge value out of that. That’s probably the way I would go. There’s some long term benefits to that that provides you some added value and flexibility but some things you just need to do with CSOM.

There’s a trade off there. You’re going to have to learn a little bit about both. The other how is really … We talked about looking at your business problem again and not necessarily going with the old standard approach. Event receivers are a great example. You do have the ability to use remote event receivers. Remote event receivers are not guaranteed. In my opinion and in my experience they’re doable. You can code them.

But if you need something that is quote, and I’m doing air quotes here, “transactional” and you want to be guaranteed you got to think of some other ways to do that. Looking at things like change logs, and search queries, and finding out other ways of ensure that if I need to know, and I need to guarantee that I can process the fact that list item x changed, I may want to look at how do I use those change logs, query the change logs, persist those changes somewhere else, and then operate on all those changes.

Redesigning some of your business solutions you’re definitely going to have to do that. You’re going to have to learn some of those things of how do I do this? I may have to iterate all these things, I may have to cache some of this information. Do you really want to be walking every site collection to find all those external users and all those external sharing instances? Probably not. You’re probably going to want to persist some of that information as far as site collections, and site collection owners, and all those types of things somewhere else. Maybe a SharePoint list. Maybe a sequel database Azure.

Those are things that you’re going to have to look at “how do I do it?” Which leads me to that last thing which is TIMTOWTDI. There’s more than one way to do this so if I have to do things remotely I can do it with Powershell. I can do them with Web Jobs and C# or Python; it doesn’t really matter. Azure really opens up the door here for you to do some really new things. But if you’ve got people with different skill sets now they can kind of play along in this space.

Danny Ryan:                          I am glad you pronounced that acronym that way.

Pete Skelly:                             I won’t go there. You can pronounce it however you wish.

Danny Ryan:                          I’m showing restraint. That’s the sound of restraint.

Pete Skelly:                             Number six is … [inaudible 00:33:53]. The sixth is understanding Cloud patterns. They’ll be some arguments over this I’m sure. Some people have some very strong opinions in this. We came out last year and sort of said the question isn’t are you going to write a provider-hosted app, or a share-point hosted app, et cetera. The question is where are you going to host your provider hosted app.

That’s just something I think you have to think about even on prem. You have to start thinking where am I going to do these things. If I’m going to have remote management where am I going to put this? Am I going to put it in a console app? Maybe I have some folks with strong Linux backgrounds and they know Apache servers like the back of their hand. Maybe I can write those services on Linux and consume them from Linux or if somebody knows Node, there’s no reason not to write them on Node now.

The other thing is you really got to understand and kind of use the standards and flexibility that the newer JavaScript parameters give you, HTML 5, and CSS. All those things at your disposal to say “how to I provide my customers the experience their looking for?” Whether that’s mobile, whether that’s reporting, whether that’s fast UI. I hate that terms but that’s how customers kind of speak sometimes: “just got to be fast.” Take advantage of some of those things.

The big thing with Cloud patterns though I think … It’s going to sound funny and it’s going to sound strange but if you have never looked at the [inaudible 00:35:32] 2 spec do yourself a favor and look at it. It’s the most boring read you’ll ever have but I swear it will be worth your time. Microsoft’s doing a really good job of providing ADAL, or active directory application libraries, for almost every platform under the sun. If they’re not platform specific then they’re providing the ability to make calls using just standard REST calls.

The big deal to me is Cloud applications do not equal SharePoint hosted in my opinion. You’ve got to start thinking of different ways to do that. SharePoint hosted apps, I think, some people would say they have their place for a departmental level app. I think there’s a very fine grained set of value proposition for that type of app. I think out of the gate you’ve got to just start thinking provider-hosted app. In my opinion you’re just going to be better off.

Using your preferred platform, not just Azure, nothing precludes you from using AWS if you’ve got an AWS infrastructure and you’ve got applications that you already have out there, and you have them running, and you want to turn those applications into provider hosted apps. It’s totally doable. You’ve got to start thinking can I do this on pram? Do I want to have a server FARM on pram? Do I want to have IIS in the Cloud? Do I want to have infrastructure that’s running my IIS servers because I want complete control and I don’t want a PAZ environment. You can do that. Nothing stops you from doing that. Recently in Build and Ignite that story got a whole lot better as far as using the web proxy and those types of things.

If that’s something you need to do there’s a great article by Kirk Evans recently that he talks about that in depth. To me, I tweeted out, that’s a huge game changer. Being able to have on premises applications and the Cloud … That barrier is so much more reduced right now. It’s an easy thing to do, so to speak. The other is learning Cloud and architectural pattern.

If you’re going to go down the route of trying to look at how do I implement Cloud application model or Add-ins, how am I going to talk with services that consume Outlook, an on prem service, or a service that I’ve got custom written in Azure, or an AWS, or Heroku for that matter. You’re going to have to learn different patterns that are Cloud specific. How do I deal with taking dependency on something over the network? If I was on my own network that was great, right? I could pretty much guarantee the uptime and all that kind of stuff but now I’ve got to think about resiliency, time outs, retries, all sorts of things. You’re going to have to learn a few new patterns and think about how do I deal with those.

Number seven is understanding the client development options. I talked a little bit, just mentioned HTML 5 and CSS, but now that I have the ability to write these single page apps; it’s kind of the hot new thing and has been for a while. What does that mean for you application though? The old web part, post backs, and the whole old ASP .net page model. You don’t have to use that anymore. If I’m going to consume services from Microsoft 365 I need to know how do I use things like cookies, local storage, kind of use index [inaudible 00:39:23] to my advantage. How can I do those things?

Danny Ryan:                          Email is back, baby.

Pete Skelly:                             I don’t think it ever left I just think it got a whole lot better in the last couple of years. Knowing frameworks like Backbone or Knockout, what they afford you, I don’t want to get in the holy war of which ones better. I think it’s a decision based on maturity of the client, what they’re willing to take on, how big the app is, classic consult and answer. It depends, right? I think understanding those and knowing what they’ll provide you is a big deal. Knowing things like D3 for charting or Moment for data management, time management, Breeze, especially for getting in and out of data source, and being very mobile friendly; that’s a huge one for me.

Is this crippling at all? Trying to decide like you start off with a new project and you’re like “okay, which framework?”

Danny Ryan:                          In the first three weeks deciding which framework. How do you-

Pete Skelly:                             Honestly I think you need to look at developer skills-

Danny Ryan:                          Yeah.

Pete Skelly:                             What the background is. How comfortable are you with the spend of change. If you’re going to take a dependency on an open source project like that, how healthy is it? The old saying “oh, it’s not even 1.0.” People look at that and I don’t think you can do that. I think you have to look at how vibrant is the community. Angular has Google full time behind it. Breeze is the same way. Some of those libraries.

I think you have to look at it and try to say “what does it really buy me?” Don’t just look at the surface because it’s hot. Look at “do I need 2A binding? Do I care about having all this extra kind of crust from Knockout and having observables all of the place?” Is it something your developers can rock really quickly? Can they understand it and can you communicate … Can they write the codes so that they can communicate that to somebody else quickly. It’s the old saying: code like you know that the guy that’s going to code after you knows where you live. Unit testing. Pick a tool that sort of unit test friendly. I think that is the big thing right now.

This is new and I think SharePoint folks got away from it, me included. I’m not trying to point a finger. I did some of those things too. You kind of have to something. You didn’t write some of the unit tests you should in code. You didn’t do some of those things. Now you’ve got the separation. You can prototype the front end really quickly with mock data using Angular and say “is this what you want?” to customer A and they say “absolutely, that’s what I want.” Now it’s going to take me x amount of time to wire those things up but that to me is invaluable; the customer sees something really quickly with you prototyping. Literally you could do it right in front of them.

All the other things there. I think the two biggest things to me is how much Microsoft has made an investment in really kind of providing you the ability to get to the Cloud and to their services and to be hybrid. Doing things like the ADAL libraries specifically for the client, the ADAL js library. The investments they’ve made with cross-platform things. I said Yeoman to somebody I think eight months ago, nine months ago. They were like “yo, man. What’s up?” I was like “no, no, no, no.” You have to look at some of these other technologies.

Web developers are now SharePoint developers to me. Other people have said it, I’m not the first to say it by any means. Things like Yeoman. Things like generators that kind of lower the bar as far as “hey, SharePoint use to be point and click and now I can demo something really quickly to a client.” Now I’ve got things like Yeoman, I’ve got things like [inaudible 00:43:24]. I’ve got all these different tools that let me build these same solutions really quickly and get value really quickly too.

Danny Ryan:                          I’m still stuck on that word GROK. GROK the house, baby.

Pete Skelly:                             I’m really excited because I think one of the big things to me: I went to a Mac two or three years ago kicking and screaming, actually.

Danny Ryan:                          Confessions of a Mac user.

Pete Skelly:                             Confessions of a Mac user. I was a lifelong Windows user. Honestly it scared the you know what out of me when I went to a Mac. It was really exciting to see visual studio code come out, some of those types of things. But it doesn’t matter where you are now. If you’re a Mac user, Windows user, Linux user you now have tools in your comfortable environment you can be productive even in an on premises environment. Talking to those service, pulling out those services from talking to CSOM, getting user profile information, writing to list, provisioning anything. Those are things that you can do and you’re not constrained anymore.

Danny Ryan:                          Somebody’s about to [inaudible 00:44:34].

Pete Skelly:                             We’re almost toward the end, right?

Danny Ryan:                          Build slide.

Pete Skelly:                             Here’s a slide that I purposefully changed this one to kind of go slower. Defend your business logic and your sanity. I don’t know how many times people have said this but repeat after me: change is good.

Danny Ryan:                          I’m [inaudible 00:44:55] enough.

Pete Skelly:                             Learn to like it.

Danny Ryan:                          I’m smart enough. Gosh darn it you’re going to like me.

Pete Skelly:                             A lot of conversations I have with customers are “Microsoft is telling me to get off your server. I spent ten years learning the server-side object model, now what am I going to do?” The lowest seed type thing. “I hate JavaScript” is probably one of the most common things I’ve heard. Really I kind of choose to look at this a really different way and no have that pity party with somebody and try to be sort of thinking I can do something that I’ve kind of complained about for almost seven years in the SharePoint environment which is I can now pull my business logic out completely. I’m not intermingling code.

Yeah, you can do it in SharePoint environment but to get a customer to understand the value of doing that and to pay for it was often very challenging. That is a reality, right? Being able to take advantage of those ALM or SDLC processes of hey, I can unit test my code. I have daily builds. I have better check in control. I have things that I’m not trying to worry about okay, what artifact am I deploying? Et cetera.

I can start to isolate and innovate. When I say that I mean I can take that application that I’m writing and instead turn it into a web API. Use the client-side object model. Use the client-side technologies like those frameworks: Backbone, Angular, et cetera. Use things to my advantage and kind of do what Microsoft announce recently, and we talked about in that white paper, which is if I start to be able to loosely couple things and then I have high cohesion in my business processes I can put those things together in some really unique and innovative ways. If I have a business process that’s very tight and I can look at that and say “okay, I want to know in a manufacturing area where’s all my inventory coming from?”

Say you’re doing extruding of plastic bottles and you need to know all the levels of how much plastic, and how much resin, how much dye, all this kind of stuff that you need. That’s a very specific business process. If you want to have that wired in with something like “hey, when levels get low let my purchasing agent know” now I can look at it and say I can consume the Microsoft 365 APIs because we’re on Microsoft 365 for mail. I can add a task to their environment, I can queue something that says “process this,” and I can actually surface that information into a client environment and someone in a web browser can actually see “hey, more of a dashboard of those levels are low. Somebody needs to take care of this.”

The other benefit to that is what if I was in Excel? Now I can be in Excel and I can have that same experience pulled from that web API and actually have somebody looking at “what is my resin count?” What use [inaudible 00:48:01] to actually look at that data and say how do I integrate that into my business process and actually order earlier. What was my usage? What did I have happen in that manufacturing plant.

Really explore the patterns and practices. The Office PnP team team really has done an amazing job. No, I’m not paid to say that. I think what they’re doing is a fantastic thing. Commit that to your memory. Look at Go through the guides from the PnP team, look at the training content. All of the free training that they have in the virtual academy area. I would spend a lot of time in there. Using the patterns and approaches that they have laid out to actually transition from the Full Trust code to the Cloud application model, or the Add-in model as they’re calling it now.

You have a tremendous advantage today. If you’re new to SharePoint take that as your starting point to say “did PnP do anything with this problem? Did they try to address this problem?” Branding, provisioning, site management. You name it, it’s out there, right? Use that to your advantage and then understand that. To that point some things that are really important to understand in that structure, if you go to that github environment, and this was some good feedback internally that I got which was the Office of PnP core library is really a series of extension components that help you perform all of those remote operations.

You can do things in Powershells, CSOM, you can write it in JavaScript, you can do it server-side but they are really looking at how do they provide you with a core set of functionality that lets you do things that you absolutely have to do remotely. How do you do them properly without paying that customization tax we talked about earlier. Know the different between samples, scenarios, and solutions.

You can read there but think of samples as I can hack by this really quickly and get some huge value out of this. A scenario is going to take a dependency on that core library but let you walk through it easier within visual studio. Look at things of how do I create a little more complex scenario and then a solution is really something that you could potentially take and utilize yourself. Basically redeploy that into your own environment and they’re telling you “go ahead and do that.” The example that I gave before about provisioning one drive with some specific branding or those types of things is a great example.

Finally, number ten. This is I think is probably not on your radar if you’re just doing this. This is one of the big things that I think is an advantage if you’re about to start moving Full Trust code to the Cloud application model or you’re thinking about. Why do you want to do this? The way of the world right now is pushing you towards defining things and very tight, as I said, very coherent modules if you will. I need services that I can use and consume all over the place. If you start to treat, even on prem, provisioning services and consuming email, or consuming ADAL for example, the search API, the open graph API. You start to look at combinations of those things where you can do all sorts of things where you’re integrating across a stack, not just on prem, but in the Cloud.

Search is a good example. You’re now about to have an integrated index between on prem and the Cloud. That’s huge to me but if you don’t know how to make calls into that environment you’re not going to be able to call one spot. You’re going to have to call the Cloud for that. Understanding that, being able to call that environment is a huge deal. The SharePoint as a platform … We I think five, almost six years ago, wrote a white paper on SharePoint 2010 as a platform and that really was kind of the genesis of me calling the new business operating system … We called SharePoint and operating system, a business operating system, back then. Originally it was Bill Gates.

To me SharePoint has now become, instead of SharePoint as a platform it’s Office as a platform. You have to look at it as that. I hope Andrew Connell hears this because I like it. He’s calling it EPAS, right? Enterprise platform as a service and yes it working if he’s ever listening he’ll get the joke. If you listen to a podcast you’ll probably understand it too. He probably finds it funny that I’m saying EPAS, but it’s true. Really if you look at it Office as a platform, to consume those services, is going to make some really compelling apps in the near future. Like I said you’re probably not going to get there but this is something you should be thinking about.

The unified API is something that I think-

Danny Ryan:                          I missed a typo. Microsoft in there. We’ll edit that when we send it out.

Pete Skelly:                             The link looks wrong on this page.

Danny Ryan:                          Unless it’s a shortcut.

Pete Skelly:                             It’s not a shortcut. It’s probably wrong. We’ll fix that link in the deck but the unified API was just announced. If you’re familiar with some of the things from the Office APIs, looking at the graph is really kind of interesting to me. I think that’s where, if you’re just getting new to Cloud application model, learn the things that are in PnP and then this something you kind of keep an eye towards, right? Because as Microsoft tries to unify how do I get to my files? How do I get to my information? How do I recognize where I am in my organization? What did Danny publish today? What kind of things was Kirk working on.

As they kind of present those … But then also think of how you can use that information in your own apps. How do I send notifications? Could I possible use the business Skype for API and actually start IM conversations real time on the web? Real time from a word app. How can I pull somebody in from a word app that’s actually calling into my service that’s a provider-hosted app. Now I’m kind of stepping maybe a year, two years ahead for some folks in some organizations but if you’re not thinking that way now you’re probably going to say “oh, I shouldn’t do that.” No. This is a reason you want to start thinking, use that provider-hosted app and start looking at that longer term.

This is just a graphic of that unified API that they recently announced. I think this really speaks to a lot of the things I mentioned. You’re going to have to learn those … How can I use the technologies at my disposal? What client-side things? Azure, et cetera. Take a look at that if you can.

Danny Ryan:                          What would you say if you had to narrow it down to one or two things that you want people to take away from the top ten?

Pete Skelly:                             From the top ten really it’s not migration, it’s transformation. You really need to think about what is the business problem I’m trying to solve and how can I solve that in a little more future thinking way. The other thing is you really have to look at remote management patterns. CSOM is your friend. Azure, AWS, I don’t care if you’re an Azure hater. I’m not. I think they are winning. I think Azures winning at this point so understand how do I deal in that remote world and what are the architectural patterns I have to have. Probably, if there’s one thing you take away from this, go to github search for Office dev and go to the PnP samples.

Danny Ryan:                          Okay.

Pete Skelly:                             Spend some time in there. That’s going to be a huge value to you. We send this out. I’ve got other links in here and links throughout but especially some of those things for Office. The PnP program. I think that’s probably the biggest thing. If you’re not going to call ThreeWill … I hope you do, I hope I get the opportunity to talk to everybody directly.

Danny Ryan:                          Don’t you want to come talk to us?

Pete Skelly:                             Don’t you want to come talk to me. Don’t you want to see me come do something rather than listen to me. Spend some time in there and go to the Yammer group for Microsoft 365 dev. Post a question in there. Tweet out you’re having problems with something. The community is really trying to get this going because there is a huge benefit to it.

Danny Ryan:                          As Pete mentioned … First off, Pete, thank you for taking the time to do this.

Pete Skelly:                             Yeah. No problem. Thank you.

Danny Ryan:                          This was really informative. I appreciate you taking that time to do this. I think it was a great follow-up to your seminar. The next steps from here. I’d love to have you follow us on ThreeWill and you can also do the same by following Pete at pskelly. We have events going on this year. You can check out our event calendar at You’ll get an email next week from me with a link to this webinar and also you’ll be able to download a .pdf of the slides as well.

You’ll look for that next week. Probably it will be later than Monday since Mondays a day off.

Pete Skelly:                             Have a good weekend.

Danny Ryan:                          Enjoy the day off on Monday. Finally if you have a chance go check out our latest newsletter. It’s a monthly newsletter that goes out. You’d be informed on things like these webinars that we’ve been doing. Lastly, would love to have a follow … If you’re trying to figure out what you’re trying to do as an organization to move the Full Trust code solutions over to the new Cloud app model we would love to have a follow up conversation with you. Just get on the phone with you and talk more through what you’re trying to accomplish. Apply some thought towards what you’re trying to do. We’d love to have the opportunity to talk to you as a follow-up to this webinar as well. With that, Pete, again thank you-

Pete Skelly:                             Yup.

Danny Ryan:                          For taking the time to do this. Everybody have a wonderful, long weekend. Enjoy time out. Enjoy some grilled food and we appreciate you taking the time to join us for this webinar.

Share and Enjoy !

Related Content: