shutterstock_156929909.jpg

Large and Complex SharePoint Migrations Webinar

Danny:Danny Ryan, I’m the Co-Founder and VP of Business Development for ThreeWill and I will host this and I’m not hosting it quite well. Hopefully it’ll go a little smoother from here. I’ve got Kirk Liemohn here with me, Kirk is a Principal Software Engineer, a Migrations Practice Lead. Thanks for joining me, Kirk.

 

Kirk:Sure.

 

Danny:Awesome. So we’ll go ahead and jump right in since we want to … In this discussion, if you’ve got some questions that you’d like to ask please ask those questions through the … GoToWebinar interface. I see that a lot of people have figured that out so far.

 

We are covering primarily a white paper that was produced by Kirk. In fact it was so large that we’re calling it an E-book, it’s about 26 pages and it covers large and complex SharePoint migrations and some of the things that we’ve learned through the years. With that you can download that again through the … GoToWebinar interface, there’s a PDF that’s in there and feel free to download that. So let’s jump right in. … Let’s jump in for the second time, how about that?

 

Kirk:Yes.

 

Danny:That first thing that you go through in the white paper is a discussion about whether your organization is prepared for the migration. Tell me more about that.

 

Kirk:One of the main things there, obviously, is has your migration done this before? Has it done a migration before? Maybe you’re going from 2013 to 2016, those were the SharePoints this time but previously you’ve done migration from SharePoint 2010 to SharePoint 2013. If that’s the case, then you’ve got a lot of experience to draw upon and you can take what you did well before and use that. Those things that you didn’t do so well, you can try to avoid the same mistakes.

 

Maybe instead, however, you’re going from SharePoint 2013 to SharePoint online and you’ve probably never done that before because you don’t usually migrate there twice. Although maybe different farms you can do that with. So there are some different challenges there, you just need to realize that and then realize that, “Yes, we got some experience with migration but there’s some aspect that we don’t know as well.”

 

Other aspects are, do you have skilled resources for the migration? This could be anyone from project managers, tier 2 support type thing, developers or people to help manage the migration, IT personnel, communications, those types of things are important to have a successful migration. We’ll get into some of those a little bit more.

 

And then I think it’s really important to understand, do you have the time to do a migration? Do you have a reasonable deadline as to when this has to happen? As we have seen before, especially with our Jive to SharePoint migrations, this can … Sometimes our clients come in and want something done in two months and that’s just not a very reasonable timeline a lot of times. For a very large and complex migration, we probably want it to be a year or more out that you’re going to need this thing to be done.

 

And then finally I would say senior C-level type or senior executives, you need someone on there that’s an advocate for this project, the migration project. You need the CIO, CTO, someone like that that can say, “Yeah, we need to make this happen here. Why we need to make this happen.”, and work with that individual to give them an understanding of what the process is going to be like. What’s the end user experience gonna be like? Because you’re going to be moving people’s cheese, and it’s gonna potentially cause some people problems and you want everyone to understand this. You want to communicate it well, give the communications certainly a bit, but you also want some sponsor that can back you on this, and can understand upfront that there’s going to be challenges with migrations.

 

Danny:Now sponsors are usually somebody within the IT department?

 

Kirk:I could be. I guess it doesn’t have be but it typically is.

 

Danny:Okay. Then usually with these, we’re sort of looking at your own organization and a lot of these, for the large and complex migrations, really there’s a number of people who are involved. Your organization, the sponsor, the things that … the capabilities and also the amount of time that you can put towards the migration but then you’re also working with third party folks maybe … We’ll talk later on about off-shore resources and outside consulting firms. It’s almost like you’re putting together a larger team to go after this as well.

 

Kirk:Yes, support personnel, everything.

 

Danny:Let’s jump into number two. Should you automate?

 

Kirk:The first part of this is … Clearly for anything but a super simple migration you’re going to want to use a tool out there and that’s sort of a form of automation. You’re gonna want to find one of the third party tools to help you and that’s important in of itself. Then, do you want to automate on top of that tool? By that I mean, if you look at how a lot of these tool work, they let you go in with an interface and say, “Okay, I want to move this folder from my source environment to my target environment, or this library, this site or site collection”. They help you through that process, but a lot of times there’s a lot of configuration options. Like, “Okay I’m moving the site collection. How many versions of your documents and list items do you want to maintain as you’re moving it over.” You can configure that with a lot of these tools.

 

Well that’s only one piece. There’s dozens of knobs to turn with these more advanced tools, and you’re going to probably want some consistency.

 

In addition to that, if you’re moving a lot site collections, you may want to automate the process of batching these up and moving them over time. So maybe your doing 50 to 100 site collections a day, and maybe you want to run them in off hours based on the timezone of that site collection. Then maybe at the end of when it runs you want to send some e-mails, before it runs maybe you want to put a banner on the site to say it’s being migrated. There are lots of things you can do around that if you do the automation.

 

Then, of course, you can watch it from a monitoring stand point and understand. How many do we have active right now? Are we having problems anywhere? Do we have a capacity to do this? Really a lot of this depends on your method of migration. SharePoint, as many people know, … There’s things like site collection backup restore, database attach migrations, and then if you’re going to SharePoint Online you can’t do either of those. That one you have to use basically a tool that’s going to use CSOM or the Azure upload API, along with CSOM. There’s a lot of moving pieces, and you can’t do 1,000 site collections at once. It needs to be managed from a batching stand point.

 

Danny:There are a lot of tools that are out there. I know we’ve even done evaluations for clients just to see what was the best one for them. I know through the years we’ve, just because of our clients preferences, done a lot of things with Metalogix where we end up building on top of their tools, automating the tool, which has been interesting to see.

 

Kirk:Some tools don’t allow you to automate it and I think some have gotten better over the years. Metalogix is definitely one that you can’t automate it so they’ve got a relatively easy way to say, “Okay, give me the PowerShell script for copying this site collection over from one environment to another.” Then you can take that a layer in doing that on any site collection. Maybe you can find out when it’s done and do some other tweaks if you need to. If you’re automating you can overcome any deficiencies in the tool, or any custom things you want to do before a site collection is moved, or after any part of the migration.

 

Danny:We’ve got some folks from CASAHL on the line as well and how we use their tools to inventory things.

 

Kirk:To my knowledge that’s a lot of what they do is inventory. They do a very detailed inventory of what you’ve got out there. SharePoint doesn’t do a great job of telling you what’s in SharePoint. If you want to know things like, “Well how many farm solutions do I have out there?”, or “How many sandbox solutions do I have?” Maybe you’re moving to SharePoint Online where you can’t really do that anymore. What about running workflows? You can’t migrate running workflows to SharePoint Online, for example. How many are running? What about other things like, “The length of URL is too long.”, maybe it records some things like that, so lot’s of things you can inventory.

 

Danny:Right. This one I know, within the e-book is a long one. This is one of the longer ones. Since I helped format it a little bit, this was a longer one which was; break the process in to stages. We have lots of conversations around here about process and fun topics like that. What does this mean for a migration? Talk me through this.

 

Kirk:Sure. So we came up with … Obviously you have to manage this somehow, so you want to break it up into parts that you can think about a focus on. We broke it into four primary stages; Assess, Plan, Verify and Execute.

 

The Assess stage is the first one. That’s the one where we’re going to try and understand what it is you want to get done. We want to know what your goals are. We want to understand what the scope is. Are you moving two farms? One farm? How big is the farm? What site collections are not? What version of SharePoint are you on? We want to understand a resource plan. Come up with a schedule. Really get the lay of the land, initial communication plan, lots of things.

 

The next one after you do the assessment is the planning stage. That is the big one, so we even break this one down further into four more steps. Instead of planning we break it down into; Inventory, Map, Streamline and Communicate.

 

Inventory is what you talked about with CASAHL tool. Microsoft has a tool out there, some of the migration tool vendors have a tool as well. We even have one, our ledger tool.

 

Danny:Everybody’s doing it.

 

Kirk:Just to be the cool kid on the block.

 

Inventory is to understand what you’ve got and what you want to move. You want to take stock in what’s out there. How big is each site collection, if you’re moving site collections. You want to understand, is it business critical? Is it not? What about your OneDrive or user base data. Those types of things.

 

After inventory you want to map it. It could be a simple mapping exercise where you just say, “Well, we’re moving things from point A to point B. It’s a lift and shift. We’re keeping the same URLs except for maybe the beginning part or maybe we are keeping the beginning part the same.”, so same managed path, if you will, same URLs for the site collection, or are you going to do some reorganization a long the way. You could move a lot of site collections into the same site collection, or vice versa. As a simple example. That’s the mapping exercise.

 

The streamline exercise is really after you start to understand this stuff, you want to decide, are there ways we can automate this or make this better? This might be the time that you might define proof concepts that you need to get done, in terms of, let’s test out the tool in this way, or how are we going to manage this batching of moving all of this content over?

 

Then finally after streamline in the planning sub phase, if you will, is communication, and this one comes up multiple times in this white paper or E-book. This is just one of those times that you’ve got to communicate to others, what the plan is, what the customer requirements might be. So you might have farm solutions. You might have to deal with those. Once you’re done with this planning phase you can update your migration charter, basically your scope as to what you’re going to do and what you communicate to the team members as to what we’re doing.

 

Big breath.

 

After that phase we’ve got the verify phase, and that’s where we’re really dig in and say, “Alright, let’s make sure we can actually do this. Let’s take a subset of things.” This is where you might do proof concepts on the tool, do some tests on it, make sure that it’s hitting your primary business use cases that you have out there, that you know of maybe from your inventory. You’ve got to do pilots. So after you’ve gone through some of those, maybe you’re going to automate in some way, you’ll want to go ahead and set that automation up, code for it, prepare for it. Then at some point you can do pilots, and we’ll get into pilots some more, but that would be part of this verify stage.

 

Then finally, after that, is doing the real work, the execute stage. Ideally in the verify stage, you’ve done a pilot of enough of your process so that there’s not many surprises, but there’s bound to be surprises when you’re executing. The execute is where you’re going to do things over and over and over again if it’s a large migration.

 

Danny:A lot of these, it really doesn’t matter what you call them, you just can’t skip some [crosstalk 00:14:56] Call it your process, call it whatever you may, I think this is all designed around reducing risk. Looking at, how do we pull off a successful migration? Well, these are the things that we’ve noticed have to happen in order for us to reduce the most amount of risk-

 

Kirk:Right-

 

Danny:for it to occur successfully.

 

Kirk:Yes exactly.

 

Danny:Awesome.

 

Okay.

 

Number four. Drum roll please. Communication is … We talk about communication, it seems like that’s the central theme with you, right? I guess you can migrate to the best of your ability, but if you mess up the communication then it’s not a successful project.

 

Kirk:Right. We’ve seen before where … We need to communicate not only … There’s lots of people to talk to right, but if you don’t communicate to your end users and your site owners you’re gonna have some problems. They’re gonna start seeing things are happening underneath them and they’re gonna be complaining, and some of those people are gonna know the CEO. So you just need to communicate early, and well. We’ve got lots of way to do that.

 

We’ve got a few different documents that we think are useful through this process. One is a policy document and this will define what your policies are with the migrations. As an example if you’re moving to SharePoint Online, you’ll probably have a policy that says, “We are not going to move migrating workflows, SharePoint workflows.” That’s because you can’t do that with SharePoint Online. That would be a good policy to have, but people need to understand that. What does that mean? How do they prepare for that. You’ll probably want a runbook or a checklist for them to go through before the migration so they’re prepared for that.

 

There can be other policies of things you support and things you don’t support as part of the migration, but it’s important to understand what that is, and that takes time to understand that. I talked before about time. To come up with this policy document and then communicate it out takes some time, and I think it’s an important piece of the migration.

 

Another one is a runbook that I just mentioned. So this would be maybe a checklist that site owners have to go through before their site is migrated, or it could even be users but typically would be site owners that they do before and after a migration of a site. This may time, for example if you are going to SharePoint Online and you’ve got farm solutions, well those farm solutions aren’t going to go over. How are you going to deal with that? Are you, as the IT organization that’s running the migration, going to go ahead and, as a service, re-architect those farm solutions for them? If there’s a lot of them, probably not. You’re gonna make the business own that. Each business unit that has farm solutions, now they’ve got to come up with a way to get that over on their own. You’ve got to work through that process, and the runbook might have that as one of the checklist items.

 

Danny:Okay.

 

Kirk:A couple of the documents that we have, that we’ve discussed as a self-help document, which is for users. Maybe you’ve noticed through your testing phases and pilot phases that there’s certain places where users can get confused. You’re moving from one environment to another, from one version of SharePoint to another, things look differently in SharePoint. Site actions menu is on a different side from 2010 and 2013. In SharePoint Online you’ve got the new modern views and modern UI that looks different. So maybe you’re self help might help users find that stuff and make it a little bit less jarring as they go from one environment to another.

 

Then finally another document that we’ve talked about is a knowledge base and this would be more for your level one or level two support to work through if there are migration issues. An example of this might be, when you’re migrating master pages and they don’t migrate well for one reason or another. There might be some ways that some technical individuals can help out and they might want to have some guides through the document.

 

That’s only part of the communication. There’s more to it than that. In the white paper, we show a timeline as how some of this might work, but when you’re doing the migration of people’s content, you might want to e-mail out the site owners, or people who use the site and say, “Hey, you’re going to be migrated in two weeks, and here’s the schedule.”, or you might want to send out some communications earlier than that and let the site owners sign up as to when they’re going to be migrated or give them some leeway from a timing standpoint. A lot of times there’s some aspects of your business that have critical periods within the year. Maybe it’s around a holiday, or something like that. You just have to give them some leeway so that you’re not migrating them at the most important time of their year. Maybe it’s tax season, or something like that. You can communicate via e-mail, you can communicate via banners on the site-

 

Danny:Okay-

 

Kirk:just lots of different ways, and you can automate some of that obviously if you want to.

 

All right well we’ve talked about pilot already-

 

Danny:You don’t usually say “Always”. Typically you’ll say “It depends”.

 

Kirk:Well it depends if you’re doing a larger complex migration.

 

Danny:If you’re doing a large … well I think we went into this … and it is large and complex migration so-

 

Kirk:-but the answer is you do one, and in fact, you might want to do two.

 

The pilot is critical. I think what’s important about a pilot, and important for me to communicate right now, is a pilot is not necessarily just testing, “Does the tool that we’re using work the way we want it to for these 20 site collections, let’s say.” That’s good, you want to test that out and you want to pick a decent number of pilot site collections that you can use to move over and migrate and see how it goes, but you don’t want to just test the mechanics of the tool. You want to test the mechanics of your process. Do you have a support process that’s ready to handle this? Do you have a ticketing process that’s ready to handle this? Can you handle issue remediation? What do you do when an issue comes up? How is it handled? How are the communications working during … how’s it going to work during production? Well if you can test it during pilot you’re going to run through some of those things and you’re going to find out what’s working well, not working well and work through the kinks in the process.

 

Once you start your full on migration a lot of times people want to go fast, fast, fast, fast and if that’s the case you’re going to have a hard time catching up if you’re always trying to deal with these issues that were not tested during pilot.

 

Danny:What groups typically do the pilot. Is there any guidance there with who does the pilot?

 

Kirk:A lot of times you’ll see IT wanting to pick themselves as a guinea pig, which is fine, but you really need to work through representative parts of your company. It needs to be more than just IT. You just have to branch out to different departments, and, of course, you want to choose people, maybe a site owner, that can work with you through some of these issues.

 

For example, during the pilot process you may find out that, “Oh, that didn’t go well at all, we’re going to just trash what we just did and we’re going to do it again.” Ideally you want to work with individuals that will allow for that. Now when you’re done you really want it to be in production. I think that’s the ideal scenario, but you have to allow for a redo or a mull again of some sort in some of these cases, or it’s going to limp a long and you’re going to be like, “Okay, well we’ve got these five libraries moved over but we really had a problem with this one because of the way custom content types were set up.”,or something like that. We need some time to work through that. Please work on the old site for this library and the new site for this one, or something like that. You may decide that’s how you want to go and having pilot users and pilot site owners that can work with you, it’s important.

 

Danny:Number six. Have a plan for triage … There’s going to be issues? I guess we’re talking about large and complex.

 

Kirk:Yeah. If you’re doing certain things like a database attach, a lot of times that can go pretty simply, but if you’re doing a lot of one off movements or moving things with CSOM over to SharePoint Online then these tools are not perfect and there are certain things that it can’t do just right. They can report errors and you can you try and look at those errors and work those, and, of course, users can report errors as well. From a triage standpoint you want to be able to take in a different piece of information, and you want to have a plan for how you’re going to address them. What we’ve done in the past, is we’ve looked at something we call issue definitions, which is just a way of defining a type of issue that we think can occur. Maybe we found that out during pilots, or even some of our testing. It’s something that we know the tool doesn’t handle perfectly-

 

Danny:Yep-

 

Kirk:or because of our process something just can’t happen perfectly.-

 

Danny:Yep-

 

Kirk:Maybe some of those we’re able to automate and code around but some of them we can’t. If you can define some of those issue up front, then what we’ve done is we’ll actually automate the process of taking errors from the migration tool, plug them into these issue definitions and then we jumpstart the triage process so we know, “Okay, this needs to go straight to level two support, or level three support or we’re going to start managing the triage process and the remediation of the issues.”

 

There’s a feedback loop where these issue definitions, you can determine them a little bit, mostly in pilots and even throughout production. Then that feedback loop is, well maybe goes back to update our knowledge base or our self help or our policies. Maybe our policy manual we talked about earlier, needs to say “You know what we cannot handle this.” And we communicate that out.

 

Just realize that there’s a big feedback loop there.

 

Danny:I’m just pulling up as you’re talking here, just, sorry I’m just pulling up the e-book and noticed it had some nice diagrams just sort of talking through this a little bit as well.

 

Kirk:That kind of shows a little bit of a feedback loop where those issues go into an issue definition, then depending on what happens, you’re going to have some feedback to the site owners. Maybe you’ll do an update to self help or knowledge base.

 

Danny:Nice.

 

So support process.

 

Kirk:Yea, so this is part of the triage right-

 

Danny:Okay

 

Kirk:You’re going to have, I think I already mentioned some of this, you’re going to have inputs from multiple sources. You’re going to have users are calling in with issues, site owners are going to be calling in with issues. Then the actually people running the migration or the tool itself that’s doing the migration, it’s going to find issues. All of that needs to come into your process and you need to have a clear defined path of how you’re going to handle those issues.

 

This gets back to when I talked about the pilot needing to test, not only the tool itself, but needing to test the overall process. If you can include your support process as part of the pilot you’re going to be well prepared to do the migration because … Just imagine on day one of a migration if you’re doing 100 site collections or 1,000 site collections, or whatever it is. Probably closer to 100. These issues are flooding in. You need to have a vetted process where you can deal with that, because there’s going to be new things coming up that you weren’t prepared for. You want to be prepared as you can.

 

Danny:I think as well with this one I thought you had some-

 

Kirk:There’s a sample diagram in there that shows-

 

Danny:A sample diagram-

 

Kirk:It actually says it’s a simplified diagram because even though there’s 20 or so blocks it can be a lot bigger in terms of what the process might look like on how you escalate to different levels of support, where the issue originated and what documentation gets updated in the end, if any.

 

Danny:Okay.

 

Nice.

 

At least that’s a starting point or-

 

Kirk:Yeah-

 

Danny:an example of one for you.

 

Kirk:Yeah that came out of one of our migrations that we simplified it to generic sizes basically. It will be more complex than that but that might be similar to what you want.

 

Danny:Number 8.

 

Kirk:Yeah.

 

Danny:Archive strategy.

 

Kirk:Right, so a lot of time’s you’ll hear … It’s easy to just go out there and say, “You know what, our goal is to move from SharePoint 2010 to SharePoint 2013, and let’s just move it.” That’s fine, especially if it’s on for him, maybe that’s more fine, but if you’re going to SharePoint Online it’s a little bit harder. Why move things that just you don’t need? There’s always things that can go away and I know that as part of governance a lot of corporations will try to do things where certain sites have policies where data gets deleted over time. I don’t know if I’ve ever seen that used well in the field, but it’s great if you can do that. There’s still bound to be site collections that you just don’t need anymore, or at least you don’t think you need. We talked about CASAHL tool, it’s going to tell you when the last time, and I think the Microsoft one might do this as well, when the last time a site collection was touched.

 

Danny:Okay.

 

Kirk:You know if it hasn’t been touched in two years, or three years, well there’s a good chance you don’t need it anymore. By touched, maybe that means something was modified. Well, maybe people are reading the site and maybe they do need it. You want to understand what you want to keep and what you don’t and in the e-book I mention, “What is your criteria for archive or not.” Maybe it’s there’s no changes in the last two years or last six months or whatever it is, or maybe it’s based on size. If it’s really small maybe somebody created a team site and never really did anything with it, or created a blog site and they created one or two blogs. Is it really that important to keep that?

 

Understand what that criteria is and then come up with a process for archiving, and you also want to test your process for restoring. Maybe your archive process involves site collection back ups. You’ve got to come up with a way that tools have ways of archiving as well. Then you’ll want to test your restore process so that you feel comfortable and that your team that’s going to manage this going forward … They’ve got to be the ones that know how to do the restore. Someone says, “Oh, gosh we really did need ‘x’ document and that was over in this site, and we don’t have that anymore.” Someone can do the restore for them and get the document up.

 

Danny:I think up to this point we’ve talked a lot about SharePoint to SharePoint migrations. Funny when you were talking earlier about the inventory of what’s out there, one of the types of migrations we’ve been doing a lot of is the Jive to SharePoint migrations. That made me think that the trial version of the migrator tool doesn’t move inventory for you. It tells you what’s out there, so that sort of fits into the process that we use.

 

Kirk:Oh yeah.

 

Danny:Then you have the shallow pool and the deep pool which sort of tell you a little bit more, give you some more information about what’s in the environment. All these things pretty much applies to … Doesn’t really matter, it’s not exclusive to moving from SharePoint to SharePoint Online.

 

Kirk:I don’t think it has to be.[crosstalk 00:33:14] It’s a process and-

 

Danny:Yeah-

 

Kirk:it doesn’t have to be that specific to your technology.

 

Danny:Okay.

 

Kirk:One other thing when it comes to archive, or one other thing to think about is, a lot of clients will say, “You know we want to move to SharePoint Online, so let’s migrate our 2013 SharePoint environment there, but you know what, we’ve got some critical farm solutions that are in these certain sites, and we just don’t want to undergo the effort to re-architect those solution to get them to work in SharePoint Online.” Maybe that’s a good decision for you. That decision may be that you keep them in your current SharePoint, maybe 2013 environment, and then the other sites go to SharePoint Online. I call that a hybrid option-

 

Danny:Yeah-

 

Kirk:Where you keep some of your existing farm working and you move most of it to the new environment. Then you let that hit end of life-

 

Danny:Yeah, hit the end of life-

 

Kirk:and then you can get rid of it that time.

 

Danny:Yeah, just wait for the next time in which you really need to do a refresh with that line of business and then the time in which you decommission it and move it over to SharePoint-

 

Kirk:That’s right.

 

Danny:That sounds sensible.

 

So, last one. We’re here.

 

Kirk:We made it. Even though..

 

Danny:I wanted you to change this to, “consider ThreeWell resources”, but you wanted to have, “consider off-shore resources”. Why is that such an important thing for you to point out at this point.

 

Kirk:Yeah. Well if it’s a big migration you’ve got a lot of moving parts and a lot of data going across, so some things are going to be happening over and over and over again. While you can automate a lot of it, there’s going to be a human factor for a lot of it as well. We have used off-shore in the past, and you can use off-shore to help out with various aspects. One might be, as you’re starting your project and you’re determining that hey we can automate some of this, they could help you maybe with some of that tooling. Another would be, certainly, the level two supports. Maybe you’ve got a help desk staff but when it comes to SharePoint expertise you only have a handful of people and they are not going to be able to take all of those level two calls that are coming in. An off-shore staff might be able to do that. You can get some SharePoint resources obviously, that know some of these finer things within SharePoint such as, I mentioned, MasterPage tweaks that might have to occur-

 

Danny:Okay-

 

Kirk:for example.

 

That’s where they come in a fill those gaps.

 

Danny:Awesome

 

Kirk:They can also help with the triage process so as issues are maybe being reported not only by users, but but by the tool itself, they can triage those issues and say, “You know what, oh, this isn’t an issue.”, or “Oh yeah this is something big, let’s dive in further and see if we can fix this.”

 

Danny:Excellent.

 

You did it.

 

Kirk:Well, I’ll mention one other thing around the off-shore is … I’m not saying you should use them, I’m saying you should consider using them-

 

Danny:Yeah. Okay-

 

Kirk:We’ve had success with them in the past for sure. You want to consider the timezone differences, and that can be a pro and a con. For example, obviously timezone differences can be rough, say they’re in India and that’s 10ish hours different from Eastern time in the U.S. but it’s kind of hard to talk to them much during the day. That can be a problem, but the other side of that coin is that if you’re running these migrations, they can be doing things off hours while you’re not doing them. So you can be more of a 24 hour team when you have your team spread across the globe, to an extent. Then of course, maybe you’re a global company and you’ve already got resources all over the place, but if you don’t then this might be a nice way to kind of help your IT organization manage the process.

 

Danny:Awesome. Awesome.

 

So we are about at 10 minutes left here. If folks have any questions that they want to ask in the GoToWebinar interface, feel free to do that, and we’ll look through those. I’ll give you guys a second to do that. If there are any questions again if you go into that handout section of that GoToWebinar, you can download the PDF for this, so feel free to download that and share it with your colleagues.

 

We’ll also, I think I mentioned this the first time and not the second, that we will be sending out a recorded version of this so you can share that as well. ThreeWill have a podcast and actually this will go up as well as a podcast. We’ll have to just clip out the first part of it, or have a very long intro music.

 

Kirk:Yeah. Yeah.

 

Danny:Intro music for 10 minutes, some nice elevator music for 10 minutes-

 

Kirk:Yeah-

 

Danny:and then we’ll jump into it.

 

I don’t think I see anybody.

 

Kirk:Maybe we muted the questions.

 

Danny:I don’t think I muted questions. I hope not, I hope I haven’t muted questions.

 

Well, let’s do this. I guess if you had to have a conclusion to all of this, putting this together, what would be … Didn’t have time to listen to whole podcast, whole webinar, what would you say is a key thing to take away from this as far as preparing for a large and complex SharePoint migration.

 

Kirk:Be prepared is what I was about to say.

 

If you can, take a look as this paper and read through some of the sections and see what rings true for you, and plan ahead. We’ve said it several times. It’s probably the top three, might be … Plan ahead, do a pilot and communicate. There’s others in there, they’re all important, but those are ones that I think are really important, and not necessarily in that order, but you want to give yourself the time to make it happen. You want to vet the process out and the tool out and the whole thing. You need to communicate with, not only site owners but also end users and upper management, and make sure that everyone’s on board with what’s going on. There’s several ways to do that communications, several times you need to be doing that communication.

 

Danny:Purely selfish question here, but people pull us into these types of engagements why? Is it just because we’ve done them before and can keep them out of the things that get them into trouble with the migration?

 

Kirk:It’s not part of people’s business to be doing migrations, so they don’t really need to have that expertise for something they’re not doing that often. It’s smart, if it’s big enough, to try and get help. So you’re not going to run into all the issues we’ve run into before if you have our help. There will be issues, I can guarantee that. If it’s large and complex enough there’s going to be issues that we’re going to have to work through, because every migration is different, but there’s a lot of similarities to them.

 

Danny:So once everybody is on SharePoint Online, what happens to our migration questions?

 

Kirk:When you’re not ready for it.

 

Danny:Then we move over to our portals practice and then to add them you can switch over to that-

 

Kirk:That’s right-

 

Danny:That will be a … I’m not sure that date’s going to come anytime soon as far as everyone moving over to SharePoint Online.

 

Kirk:Yeah, and that is one interesting thing. This doesn’t have to apply just to SharePoint Online, but I think a lot of this is when you’re moving to SharePoint Online it becomes more complex, because the tooling has to do more work. Once you move to SharePoint Online, the promise is, you shouldn’t have to migrate again. There’s not another version of SharePoint to migrate to, Microsoft is handling all of that for you underneath the covers. At the same time, there will be features that come and go and be deprecated over time I would guess. I haven’t seen that happen yet on SharePoint Online. I can’t think of one, but there will be the next InfoPath, PowerApps, or something, maybe that will go away. I’m not saying it’s going to, but hopefully it automatically migrates into it’s next thing for you, but there will be some aspect that I’m sure is going, but it should be a lot less from a migration standpoint once you’re in SharePoint Online.

 

Danny:Awesome.

 

Well, thank you for taking the time to put this e-book together.

 

Kirk:Sure.

 

Danny:And getting your thoughts down on paper. I know it’s tough. I mean, you’ve been really busy lately, and doing a great job on projects. Just appreciate all the hard work that you’ve been doing with migrations. It’s awesome. It’s amazing to see how quickly all the stuff is coming together.

 

Kirk:Thanks. Well there are several people that helped out. I know on the title page or something, it mentions reviewers or contributors or something like that. Several people helped out and I appreciate their help.

 

Danny:Absolutely.

 

I don’t see any questions. If not, I went ahead and put up … You’ve got my e-mail address up there, my phone number, feel free to drop me a line if you want to pick up on this subject and maybe go into something a little bit deeper that we didn’t cover with this. I can grab Kirk and we can set up a phone call. If there’s any other questions that you have.

 

Again, thank you. My apologies for about the first 10 minutes. I apologize about that, but thank you for hanging on and for listening. In a couple of days here you’ll see an e-mail from us that has a link to how to share this with others, so keep an eye out for that. Thanks again Kirk for your help with this.

 

Kirk:You’re welcome.

 

Danny:Thank you everybody for listening.

 

Have a great day and have a great weekend. Take care. Buh-bye.

 

read more
Kirk LiemohnLarge and Complex SharePoint Migrations Webinar
what-is-sharepoint.jpg

FAQ: What is SharePoint?


What is SharePoint?

Most people find it hard to wrap their head around SharePoint and you might be one of those people. Perhaps you’ve been playing with this thing called SharePoint for a while and you don’t really get it yet. You’re waiting for that one simple description. That one simple sentence that will suddenly make it all make sense.

Well you won’t get that one sentence from me because SharePoint isn’t a simple thing to explain and that’s because SharePoint isn’t one thing. SharePoint is not a program. It’s a platform. It’s a collection of many different products and technologies all wrapped up and given a name.

From one perspective, learning SharePoint is like learning Microsoft Office. You don’t. You don’t really learn Office. You learn Word, then Excel, then Outlook, and so on. In the same way, you don’t just learn SharePoint. It’s a massive, massive set of solutions of different things you can do with this platform. With every version of SharePoint, Microsoft have added more and more to it.

When you learn the different things it does, you’ll pick and choose your own combinations of the things that are meaningful to you. However, it is a little different because SharePoint is a server product. You don’t install SharePoint on your own desktop or laptop. It’s installed on your backend systems and shared across your network. You connect to it.

You know, there are some associated programs that can install on your desktop. Things like SharePoint Designer and SharePoint Workspace, though you don’t always need them because the most common ways you’ll talk to SharePoint are either using a Microsoft Office program, Office loves SharePoint and the feeling is mutual, or just by opening a web browser to talk to SharePoint.

If you’re new to this, it still doesn’t tell you much. Okay, it’s big. It’s installed on a server, but what does it do. Well Microsoft talked about SharePoint as having six different areas. Sites, communities, content, search, insights, and composites. That’s not all that helpful yet. This is jargon. This is SharePoint speak. Sure we know what these words mean but these are terms that don’t really make sense in a product until we’ve gone a little deeper.

What I’d like to do is give you my version of this. First off, SharePoint makes websites. SharePoint makes websites. It’s a massive website engine. You tell SharePoint, “I need a website.” Bang. You have one. Make another. Bang. You get another. You don’t need special programs. You don’t need to be a web designer. You don’t need to be a programmer.

Well what are those websites? Well one might be a website just for you. Another could be a website for your team. Another could be a website for your company. Another could be a website for the world to see. You might be involved in creating these websites or you might just use SharePoint sites other people have made. SharePoint makes websites.

Unlike most websites out there on the internet where you just read them, most websites that SharePoint makes are designed for you to be a contributor. To change them. To edit them. To join in. That takes us to the second principle. SharePoint helps you work with other people. Maybe that’s just you and one other person working on a word document at the same time, SharePoint can let you do that. Perhaps you want a company wide Wikipedia or knowledge base easily editable by a hundred people. SharePoint can do that too. It can give you shared calendars. It can give you shared task lists, discussion boards. SharePoint will do all of this. It keeps track of immense amounts of content and can let you know when things change. The idea of collaboration is built into this thing.

That’s because you’re able to take all the content that makes up your organization’s day to day operations. Documents, spreadsheets, presentations, agendas, images, audio, video, even databases and take all of it and upload it all into SharePoint. That’s because SharePoint gives you a place to put your content. A place to put your stuff. Instead of saving it in local folders or on a network share drive or emailing it back and forth to people, you put it all into SharePoint. That’s where it goes.

Some of that content can be in places where it’s super controlled. Monitored, audited, available to just a few people where you can only put certain types of content. Another part could be a free for all dumping ground if you want that. You could put everything in there. This doesn’t add drag to your system. You continue to work seamlessly the way you used to. You’re simply saving everything in SharePoint rather than on your own drive. You create a document on your desktop, Bob makes an update to it on a meeting in his laptop. Alice accesses it later on a mobile device without worrying about how it gets from one to the other.

You can even edit it within the web browser itself. It’s all in SharePoint. Now obviously after a while, we can end up with a lot of stuff and a lot of people working together on that stuff. Well the danger is that we can’t find anything. The next part of SharePoint is dealing with search. SharePoint lets you search your stuff. It’s got a massive, super smart search engine built into it.

This is not some tacked on afterthought. It’s an excellent and complex search engine that not only allows you to search your own content in multiple ways, it will let you search people and it will do this all securely so no one gets access to anything they shouldn’t.

Now, all of these things would be useful but not compelling if you could still only work with your content in the old, conventional ways. In the next part, insights, SharePoint helps you bring all your information together. Not just bring it together, but bring it better to understand it better, to organize and make sense of immense amounts of content. Taking different kinds of things, spreadsheets and blogs and business intelligence systems, and presenting it in a way that makes sense. In advanced situations, you’re going to be building dashboards and scorecards and Visio diagrams automatically updated in real time with information inside SharePoint.

If you’re watching this, whatever your job is you’re almost certainly a knowledge worker. You’re paid to use your brain, not to do manual labor and that means you make decisions. That means you need data. Not buried in ten different locations, but right there combined the way you want it in front of your face. SharePoint helps you bring that information together.

When all of that isn’t enough, SharePoint helps you build on top of yourself. No platform, no program, no operating system can know exactly what you need so SharePoint has fantastic capabilities to be extended. It’s meant to be extended and customized and you don’t have to be a programmer. Using programs like SharePoint designer and in Visio you can build customer workflows and forms without code. If you do know code, you can do even more. SharePoint can also talk to your legacy applications and databases. It can read their data and allow you to have access to view and use it within SharePoint. Always controlled, always secured.

Now if all this seems like a lot, you’re absolutely right. The attitude to take more than anything SharePoint is not a program. It’s not a solution to a problem. It is a platform that you will use to build a hundred solutions to a hundred different problems. That’s why it can be hard to wrap your head around it because it’s different for you than it is for anyone else.

SharePoint makes websites. It helps you work with other people. It gives you a place to put your stuff. It gives you a way to search all that stuff. It helps you bring it together and understand it better, and it helps you build and extend it.

Many of these pieces are deep enough that you can spend months with them and never see everything. You might end up living in the sites section building a public website with SharePoint. You might live in the composite section building workflows or applications on top of SharePoint. You might live in insights building dashboards and scorecards to understand your information better. You might just share some of your documents into SharePoint and use it when you need it. It’s all good. By the time you’re done with the next few hours, you’ll have seen enough of all the major features to know if you want to go deeper and when you do the best way is to do it.


  • We are ranked in the top 5% of Microsoft partners based on four independent surveys.
  • We have built over ten connectors for SharePoint for over twelve software firms including Atlassian, Jive, and Salesforce.
  • We are a Microsoft Partner with Gold Application Development and Gold Collaboration & Content competencies.
  • We are a Salesforce Product Development Partner.
  • Established in 2001, we are based out of Alpharetta, Georgia (the Technology City of the South).
  • All our consultants are Microsoft certified (many at the highest level), and each has an average of over ten years of Microsoft development and/or product development experience.
  • We have been a part of one of the largest enterprise implementations of SharePoint (over 250K users).
  • We have published books, articles, and have produced materials for Microsoft on technologies such as SharePoint, ASP.NET, C#, Office Development, and InfoPath.
  • Our focus is not just technology, but also project management and effective and agile processes that ensure predictable results.

Partnerships are central to ThreeWill’s success. We have been a Microsoft Gold Partner for over ten years. We currently hold the Gold Application Development and Gold Collaboration & Content competency. We are ranked in the top 5% of Microsoft partners based on four independent surveys. We are also a Salesforce Product Development – more recently focusing on Cloud Apps that integrate with Salesforce and Office 365. We are a Metalogix partner to help our customers migrate to and manage Office 365. Finally, we are a Nintex partner for customers looking for better workflow options in Office 365.

Our promise to our business sponsors:

1. Control – We provide the structure for our clients to control priority of features and budget throughout the lifetime of the project​.

2. Choice – Because we deliver working software every two weeks, we earn our client’s business every two weeks.​

3. Commitment – We take on your challenges like they are our own; you will not find another business partner more committed to your success.

read more
empty.authorFAQ: What is SharePoint?
getting-started-with-sharepoint-development.jpg

5 Steps to Getting Started with SharePoint Development

So, you’re just starting out in the world of software development? Or maybe you’ve been at it for a while and are simply ready for a change. Well so was I … and what a great change it’s been!

I didn’t start out my search by saying, “SharePoint Development, I choose you!” In fact, I admit it; I’m a very old school ‘programmer’ who’s been in the business far longer than I’m willing to tell. Fresh out of college, I was a hardcore mainframe COBOL programmer and I was good! I mean, who can’t write straight-line procedural code full of PERFORMs and GO TO statements?

But many, many years later I had the opportunity to take a job really close to home that I couldn’t pass up, even though it meant going out on a limb and leaving COBOL behind for the much more robust Visual FoxPro world. Yikes! What in the world did I know about that?! Absolutely nothing. In fact, I’d never even heard of it before. But it began my introduction into object oriented programming, which eventually led me to be able to obtain my current job as a SharePoint Developer with ThreeWill.

Have I mentioned yet that ThreeWill is an amazing place to work?! Talk about a company full of highly intelligent, caring people with overwhelming integrity … I couldn’t have landed in a better spot to make this journey!

Was it an easy transition? No, not really … it was challenging for me. And I’m a pretty good developer with lots of real world experience and a couple of languages under my belt. Albeit VFP and COBOL are both a far cry from the current SharePoint development world, but I make this point to say that if I can do it with my background, you can too. It just might take a little extra effort to get there.

If it was Groundhog Day and I got a do-over, would I do it again? Absolutely!! But there are a few things that I wish I had known before starting this journey, and that’s what I want to share here, hoping it will help you to be a little more prepared than I was to make the jump.

5 Steps to Getting Started with SharePoint Development

Here are the steps I took to getting started with SharePoint development:

  1. Sign up for Microsoft Virtual Academy and use it
    • I wish I had known about this a long time ago, even before making this transition.
    • This is a free service offered by Microsoft with a ton a great material for all levels of developers across all types of technologies and languages.
    • Really – don’t skip this step! It will make your life a TON easier as you’re learning.
  2. Know the basics of C#
    • If you’re fresh out of school, then there’s a good chance you’ve already had some C# (or very similar) training. Understanding the basic structure of how namespaces, classes and functions tie together will carry you a long way.
    • If you’ve never seen it before (like me), get a trial copy of Visual Studio and start playing around with C#. Develop a small application that does something simple.
    • Go watch a tutorial or two and do the exercises, as this will really help jump-start the process.
    • C# Programming Guide – https://msdn.microsoft.com/en-us/library/67ef8sbd.aspx
  3. Know the basics of HTML and CSS
    • This is a pretty easy one actually, even if you’ve never looked under the hood of a web page. You won’t become an expert immediately as there’s still a lot to learn here, but it’s pretty straight forward once you start looking.
    • Get a couple of CSS and HTML reference books that can help you with the syntax.
    • HTML & CSS Tutorial – http://learn.shayhowe.com/html-css/
  4. Understand the difference between client-side and server-side code
    • This was a BIG gap for me. And yes, I still struggle with it sometimes.
    • Take the time to read up on web application architecture and try to get a basic grasp of it. Understanding where each kind of code runs and how they talk to each other (or don’t) is extremely important. I can’t emphasize this enough!
    • ASP.NET Page Life Cycle Overview – https://msdn.microsoft.com/en-us/library/ms178472(v=vs.100).aspx
  5. Lastly, start learning about SharePoint itself

This, of course, is just the tip of the iceberg as there’s a ton of other stuff you will need to know and learn. Much of it, as with all things, will come with the real world experience of doing it. But if you can get a handle on some of these basics beforehand, you’ll be in a good position to become a SharePoint Developer yourself – especially if you can find a nurturing company that encourages learning and personal growth like I did here at ThreeWill.

read more
Caroline Sosebee5 Steps to Getting Started with SharePoint Development
fishing.jpg

Learning to Fish – SharePoint Training

We’ve all heard the line about giving someone a fish as opposed to teaching them to fish. Well, we’re not in the seafood business here at ThreeWill, but this axiom does speak to something we feel passionate about: teaching and education.

While education isn’t our primary business, we feel strongly about having education to accompany our consulting and custom coding assignments. Why is this so important? Well, it’s pretty simple: no matter how well written the software, people are not going to adopt it if they don’t know how to use it. Not only that, since most of what we write sits on top of SharePoint, it is equally important for the customer to feel comfortable using SharePoint and understand how to get the most from its features.

Generally, our education offerings take one or more of the following forms…

SharePoint Training for Users

This training can take place to accompany a consulting project or can happen on its own just to help teams get more out of SharePoint. This offering is a particularly good fit for departments that are using SharePoint already but lack the experience or time to exploit all of SharePoint’s capabilities. Usually these events take one to three days, and recent experience delivering this material to AT&T Real Estate Services and Sigma Thermal teams, produced similar results: teams that are surprised by the depth of SharePoint’s capabilities, and a genuine excitement to begin using those features to solve everyday business problems.

SharePoint Training for Developers

On some occasions we help ISVs integrate their software with SharePoint; in other cases we’re developing software that runs on top of SharePoint. In either case, we don’t feel like we’ve done our job fully unless we can walk away knowing that the customer can be fully self-sufficient in maintaining that code.  Our Developer training events can span three to five days, and lay out all of the principles of SharePoint development in a hands-on, easy to follow format.

Education Videos

In cases where we are writing software that runs on top of SharePoint, we find that education is critical to adoption. Even if the best software is of no use unless users adopt it, and we find that brief, to-the-point videos show consumers how to use the app and drive enthusiasm about adopting the software. These videos also provide valuable orientation for employees that join the team some time after the initial software rollout and need to get up to speed on using the software.

Let’s Get Out There and Catch Something!

How can we help you get the most out of your SharePoint experience?

Contact Us
read more
John UnderwoodLearning to Fish – SharePoint Training
half-full.jpg

Do You See SharePoint As Half Full Or Half Empty?

As a SharePoint Consultant who has consulted at many different companies small and large, I have often experienced negative initial reactions when mentioning SharePoint.

The reasons have ranged from things like “SharePoint is slow” to other things like the “SharePoint navigation is confusing”. And I have to admit, there have been times I have used SharePoint sites that were both slow and confusing. The good news is that both of these can be improved so that they do not need to become a roadblock to using an otherwise useful product. But beyond merely removing these barriers, the good news is that there are many features that SharePoint provides that many users have never come to understand and appreciate and my goal is to help raise awareness of these features.

What I have learned over time is that most users’ concept of SharePoint is that it is simply a document repository…

They see it as a ”a place my boss forces me to put my files that takes more time and effort than storing them locally or putting them on a file share”. SharePoint is generally a product that has been introduced to the organization by the IT department for work teams to collaborate and usually with little or no training on SharePoint provided. And while storing documents is certainly a valid use of SharePoint, there is so much more capability than most users realize or have been given the rights to leverage in their work group or department.

On occasion, I have the opportunity to sit down with motivated employees who like to learn and I describe to them some of the features within SharePoint that I think will interest them.

Most users are surprised to hear about these capabilities and are eager to figure out how they can begin to use them.

My goal in this blog series is to share a few of what I consider to be the most underutilized features of SharePoint that can be leveraged for both personal productivity and business process improvements.

These underutilized features include:

  • Custom Lists
  • Notifications and Workflow
  • Security

After discussing these features individually, I’ll conclude with a discussion of how these features can be combined together to create Business Applications that can help support and automate some of your current business processes.

And before you assume that you need a developer or technical person to take advantage of these features, know that all of these are available to end-users of SharePoint and are configurable through the SharePoint UI or through SharePoint Designer.

Stay tuned. I look forward to sharing more about these underutilized features with you and hearing from you about any questions or comments on these topics.

By the way…

always-full

We thought you would enjoy this take on how different people see the half full/empty glass (source)…

The optimist says the glass is half full.

The pessimist says the glass is half empty.

The project manager says the glass is twice as big as it needs to be.

The professional trainer does not care if the glass is half full or half empty, he just knows that starting the discussion will give him ten minutes to figure out why his powerpoint presentation is not working (@jbutweets – thought you would enjoy this one!)

The consultant says let’s examine the question, prepare a strategy for an answer, and all for a daily rate of…

The engineer says the glass is over-designed for the quantity of water.

The computer programmer says the glass is full-empty.

read more
Tim CoalsonDo You See SharePoint As Half Full Or Half Empty?
takeaway-e1425507556692.jpg

Top 5 SharePoint 2013 App Development Book Takeaways

I just finished up Microsoft SharePoint 2013 App Development and thought I’d share a few high level points that persist with me.

1.  Custom app dev in SharePoint 2007 and farm solutions in SharePoint 2010 followed the same path as Microsoft developers used themselves for customizing SharePoint.

As a developer, we could find dozens of examples for how to perform some custom app dev, usually by taking a look at how Microsoft themselves applied that same kind of customization.  Following in their footsteps not only helped us find the right approach, but along with it we had an early indication for how well the solution approach would scale and otherwise hold up to enterprise standards.  Starting with SharePoint 2010 sandboxed solutions, they started sending us down our own path.  And as we found, this path has not proven robust at all, and was in fact deprecated in SharePoint 2013.  Now, we are sent down yet another path.  I like the new path.   I can see why it makes sense, but I’m concerned that it hasn’t it been proven in the field, and we can’t assume good behavior because the apps approaches, and there are 3 of them, are not used by the SharePoint 2013 product itself.

2.  I envision more time will be spent with architecture design and POC’s than experienced SharePoint developers have had in the past.

Once we have more experience with SharePoint apps, we’ll settle into some common patterns, but until then I imagine a matrix of pros and cons for solution architecture as we decide among:

  • SharePoint hosted app:  Html pages with javascript access to SharePoint using client side object model or REST svcs.
  • Autohosted app:  App hosted in Azure and is automatically provisioned
    • Javascript access to SharePoint using REST svcs.
    • Server side, .net client object model or REST svc access to SharePoint
  • Provider hosted:  App hosted somewhere other than Azure
    • Javascript access to SharePoint using REST svcs.
    • Server side, .net client object model or REST svc access to SharePoint
  • Remote event receivers (can’t wait to make use of these!)
    • Server side, .net client object model or REST svc access to SharePoint

3.  Javascript javascript javascript…

We’re doing plenty of it now, but I think we should consider some of the design patterns and tools discussed.  MVC and MVVM (Model View ViewModel) are discussed along with an enabling javascript library called knockout (equivalent to jQuery templates, now retired).  I’ve heard these mentioned at ThreeWill in the past but hadn’t thought of them as high priority, until now.

4.  Server side authentication back to SharePoint requires extra steps for autohosted and provider hosted apps where SharePoint 2013 is hosted on-prem.

The reason is that SharePoint needs to be connected to Azure Access Control Services in order for the OAuth authentication to work.  It sounds like it is possible to make it work for on-prem, but it’s not the norm (see p 112).  For this reason, I would try to avoid server side code in the app for calls to SharePoint and instead focus on javascript.  Javascript has some of it’s own perils, mostly in the form of a new built-in iframe proxy to work around XSS, but authentication should be a simpler path.  For on-prem instances of SharePoint 2013, the recommended path is to create “high trust” apps for server side calls from the app back to SharePoint.

In summary, configuring a high trust app requires that  the “app” and SharePoint exchange a certificate used for authentication.

5.  For those looking to get up to speed on SharePoint 2013 apps, I highly recommend this book as your first step.

At just 171 pages, it is a quick read and is packed with the right detail to get you started.  Moving on from there, check out these great SharePoint Developer Training Videos from Microsoft.

Interested in learning more about SharePoint 2013? Join us for a SharePoint 2013 bootcamp in June.

Learn More
read more
Eric BowdenTop 5 SharePoint 2013 App Development Book Takeaways
apps-hand.jpg

Start Building SharePoint 2013 Apps

So, I just came back from SPC 2012 and I was pretty excited to start writing SharePoint 2013 apps. I decided to spend some time setting up and configuring my SharePoint 2013 development environment.

Building local virtual machines with all the necessary bits

While this is an option that has a lot of benefits, I just wasn’t up to the long journey of building a SharePoint 2013 development environment from scratch. I wanted some immediate gratification! While many of my coworkers are talented both on SharePoint admin and SharePoint app dev, the reality is that I’m a developer first and I hate setting up SharePoint. In addition, it is getting increasingly difficult to get SharePoint to run well locally in a virtual machine, even if you have a monster laptop. So, I decided to use resources from the cloud wherever possible.

Choosing a development tool

Basically, I had two choices to build my SharePoint apps:

  1. Install Visual Studio 2012 locally on my laptop
  2. Use “Napa” in the cloud

I decided to pursue both of these so I could compare and contrast. I’ll have more to say later in the post about how this process unfolded.

Step 1: Provisioning a cloud-based SharePoint environment

I opened my browser and navigated to https://dev.office.com. From there, I chose the “Sign up and start building apps” link.

 

From there, I went through the process of provisioning a trial environment. The process is pretty straight forward, and it is reasonable well documented, so I won’t repeat the details here. You can visit this instruction page to see the details of the process.

Once the process is complete you’ll have the following:

  • A complete Office 365 environment
  • A subdomain that is unique to you (for me, I chose ThreeWillJBU)
  • A corresponding user account/password on that subdomain

Make sure you record these, as you’ll need them elsewhere in the process.

To confirm that the environment was properly configured, I browsed to https://threewilljbu.sharepoint.com and voila – a real, live, working SharePoint 2013 environment. Now, at this point it’s a timed evaluation, so at some point down the road I’ll have to decide whether or not it’s worth paying for.

Step 2: Is it “Napa” or “nada”?

The idea of a cloud-based developer tool is a bit strange. I tend to think of that as a fat-client experience. However, I heard “Napa” mentioned a lot at the SharePoint conference, so I decided to give it a go. Not only that, the experience with allocating a cloud-based SharePoint instance had me excited about the possibility of having my dev environment finished and working within my original 30 minutes goal.

First, I navigated to my site newly-provisioned SharePoint site and clicked on the Build an app tile.

Next, I went through the steps to install the Napa app, following these instructions.

Finally, what did I get? Failure. The Napa app would never install, nor would it give me a meaningful error message.

So, I’ve reached a dead end and, after much frustration I have also gone over my self-imposed 30 minutes limit. Oh well, I decided to move on to my next dev tool option. Over time, I intend to research this further and will update this blog post with any findings.

Step 3: Setting up development tools locally

I went and downloaded an evaluation copy of Visual Studio 2012 professional. From there, I ran the setup and included the appropriate options, including the fact that I wanted SharePoint developer tools.

OK, so at this point I’m thinking I’m in pretty good shape. I’m about 15 minutes into this part of the process and I already have a functional SharePoint 2013 environment and a local instance of Visual Studio 2012, so I should be good to go, right? Well, not so fast my friend. When I go launch Visual Studio 2012 (running as Administrator, of course) and create a new project, I only see templates for SharePoint 2010, not SharePoint 2013. Well, OK, that’s reasonable, since Visual Studio 2012 shipped before SharePoint 2013, I just need to check for updates and I’ll get the needed templates. Well, the short version is that didn’t solve the problem. After a few well-placed Google searches I wound up on this site – from there I clicked the “Download the tools” link, ran the downloaded exe (OfficeToolsForVS2012GA.EXE), and gggaaaaaahhhhh! The setup fails! I run the setup a second time, and see that there’s a direct link to the needed Visual Studio tools. I visit that link, download, and run officetools_bundle.exe. It seems to install fine, so I move ahead. (By the way, if you want to understand more about officetools_bundle.exe view this discussion thread). I must say, it is a bit disappointing that I had so much trouble installing this given the tight integration touted at the conference between Visual Studio 2012 and SharePoint 2013.

Determined to finish the mission, I launch Visual Studio 2012 a second time (again, running as Administrator), and upon creating a new project I see the necessary templates.

From here, I run though the project wizard, then press F5 to run the app.

At this point I won’t spend a lot of time breaking down the details of the app itself. There are many good blog posts already out there on this topic, and I intend to write a few myself in the near future.

Conclusions…

The cloud brings a lot of promise. The ability to provision a SharePoint instance in the cloud in a matter of minutes is very exciting. The out-of-the-box experience with the dev tools, however, is a very disappointing by Microsoft standards. Visual Studio 2012 needs to bring in the new SharePoint 2013 templates without so much fuss, and Napa seems like it came out of the wine cellar too early.

read more
John UnderwoodStart Building SharePoint 2013 Apps
steps-e1425509264318.jpg

PowerPivot Primer

PowerPivot for Excel and SharePoint 2010

PowerPivot is an exciting new addition to the Microsoft Business Intelligence stack that provides a lot of power to end-users.  For office savvy users who have Excel 2010 and the PowerPivot add-in, analysis against backend datasources is quick and powerful.  For users who may have less knowledge of the data or who aren’t as fluent with Excel, Workbooks with one or many Worksheets can be exposed through a browser to broaden the availability to any user who may have a need to analyze the data.

One of the latest additions to the Microsoft Business Intelligence stack is PowerPivot.  PowerPivot leverages the comfort and familiarity of Excel with the power of Analysis Services and other data sources to allow business users to analyze mission critical data without the need for IT involvement.

As a business user with Excel 2010 and the free PowerPivot add-in, a connection to a secured datasource can quickly be configured using AD or SQL Server permissions and slicing and dicing of data can be achieved in minutes.  However, there are times when personal manipulation and viewing of this data is not enough; the data needs to be shared with other users who may not be able to easily access it for any number of reasons (don’t have Excel 2010, don’t know the data, etc).  This is where PowerPivot for SharePoint 2010 comes in.  PowerPivot workbooks can be published to a PowerPivot Gallery in SharePoint 2010 where a user-friendly view of the data can be surfaced through the web browser along with the capabilities of slicing and dicing the data to get greater understanding of what is happening in the business.

With PowerPivot, tens of millions of rows can now be imported into Excel and manipulated in real time. This ability to handle massive amounts of data natively from the ubiquitous Excel application empowers business users with the ability to perform true real time analytics that previously required massive servers and tended to be painstakingly tedious.

While a blog doesn’t serve well to share all of the capabilities of this powerful set of tools, I would like to share a quick example of how to retrieve SQL Server Analysis Server (SSAS) data into an Excel 2010 PowerPivot workbook, format the names to be user friendly, and make the workbook available to end-users through SharePoint 2010.  Since many of you are probably familiar with the AdventureWorks 2008 database examples, I’ll start out with a very simple example that merely displays Sales totals that can be sliced and diced by Calendar Year, Product Category, Product Sub Category and Product.  I’ll then follow-up with something that is more visually appealing by adding a Chart as a second worksheet in the work book.

This walk-through begins with the assumption that you have Excel 2010 and that you have downloaded and installed the free PowerPivot add-in. The plugin can be found here.

The Walk-Through

Open Excel 2010 and note the new PowerPivot tab that is now available on the top row.

New PowerPivot tab available

Next, click on the PowerPivot Window button at the top left.

PowerPivot button

Note that you are presented with several data source options:  database, report, Azure DataMarket, etc.

In my example, I want to retrieve data from an Analysis Services database, so I specify the server and database as shown below.

After pointing to the correct database, a wizard will guide you through the steps of choosing the data that will be available in the Excel Workbook.

You can specify an MDX query or alternately select the Design button so that you are presented with a graphical interface to select your data.  In my example, I am selecting the Design button.

Now I can use the graphical interface to select the measures and dimensions that I want to see.

For this example, I want to look at Internet Sales Amounts and I want to see them based on Calendar Year, Product Category, Product Sub Category and Product so I drag the corresponding fields onto the design surface as shown in the following screen shots.

Now that I have selected the appropriate data elements, I click OK to continue through the wizard.

The corresponding MDX query is displayed based upon the facts and dimensions that have been selected using the designer.  Click Finish to continue.

A “Success” dialog is displayed to indicate the number of rows that met the criteria for the MDX query and the rows that were subsequently imported into the Excel Workbook.

So, now you can see the individual rows that were retrieved.  Note that the columns above have all been imported as Text data types.  Before you can leverage the numeric data in meaningful ways, you must update the data type to numeric which is shown below.

Select the column that you want to update and specify the data type and the display format.

Now you can close the PowerPivot window and return to the Excel Worksheet where you can begin to build meaningful displays that will help visualize the data.

In this simple example, I’m going to select a PivotTable, but as you can see I have several choices of how to present my data.

I’m going to put the PivotTable on the existing sheet which is Sheet1 in my example.

Now you can begin to build out your PivotTable by specifying the values to display as well as the “Slicers”.  Slicers are dimensional data that allow you to “slice” the fact data.  In our case, we will be able to slice the sales data by Calendar Year, Product Category, Product Sub Category and Product. As a general rule, each Dimension imported from the SSAS cube will be a slicer. For those who are familiar with SSAS cubes, this makes for a good analogy for what a slicer really does.

Select the Sales Amount field and drag it over to the Values column.

Specify a Custom Name for this amount if you like.  Also specify that we will be summing the Sales Amount.

Next, select the Calendar Year field and drag it into the Slicers Horizontal column.  Then, select the Product Category, Product SubCategory and Product fields and drag them to the Slicers Vertical column to achieve the display above.

Next, let’s give user-friendly names to the slicers by right-clicking on them and choosing the Slicer Settings.

Now, you can update the Display Caption to “Calendar Year”.  You can also change other items such as Sorting or Filtering if desired.

Lastly, we’ll update the Sales Amount field with a new caption and currency display as shown below.

(Note my total Sales Amount of $29,358,677.22.)

When I click the CY 2001 button in the Calendar Year slicer, note the sales amount changes to a much smaller number, $3,266,373.66.  This is because we are now only looking at sales for Calendar Year 2001.  Note also that the other slicers are updated to reflect what data applies to CY 2001.  So, we can see that only the Bikes Product Category was available in 2001.

Next, clear the Calendar Year filter by clicking on the red filter icon next to Calendar Year.

With the Calendar Year filter now cleared, click on the Clothing button in the Product Category slicer to see sales for Clothing.  Note that clothing was only available in Calendar Years 2003 and 2004.

Now that we have our workbook functioning, let’s navigate to the SharePoint PowerPivot gallery and upload the Excel Workbook.

First, access the PowerPivot Gallery on your site.

Within the PowerPivot Gallery, click the documents tab and select the upload document option.

Browse to the Excel Workbook and click Open.

Note that Workbook is now uploaded to SharePoint and the hour glass icon indicates that the thumbnail preview is being created. The thumbnail generation process can take several minutes.

When I refresh the page, I can now see that a thumbnail image has been created so that a User can easily see the visual display of the workbook along with a title and other information without opening the workbook.  Click on either image to navigate to the first sheet of the workbook in the browser.

Note that the look of the display is very similar to what was experienced in Excel.  Now users who access this SharePoint site can slice the data similar to what we did earlier in Excel.

In this scenario, I have picked the Bike Stands Product SubCategory.

While this display is very informative, it is not very visually compelling so let’s go back to Excel and add another Worksheet to this Workbook to make it more visually appealing.  Instead of updating the existing Excel Workbook, I have decided to make a copy and update the copy.  This will allow me to demonstrate the PowerPivot Gallery display of a Workbook with a single Worksheet and a Workbook with multiple Worksheets.  So, make a copy of the first Workbook and open the copy.

Navigate to the PowerPivot tab and select the PivotChart option.

Specify to add the chart to a new Worksheet.

Note that a new chart has been added along with the same field options as I had before.  Similar to before, I can now begin to select the fact and dimension values to create an appropriate display.

In this example, I chose to display Sales by Product Category with the ability to filter or slice the data based on Calendar Year.  Note that I also renamed the Worksheets to have more meaningful names.

Now, I want to upload my updated Workbook to the PowerPivot Gallery on the SharePoint site

Having navigated back to the PowerPivot Gallery, I navigate to the documents tab and select the Upload document option.

I select the “copy” to upload.

Note that I now have two PowerPivot Workbooks in the gallery.  As I hover over each of the smaller thumbnails, the larger thumbnail updates to provide a larger image.

Select the new worksheet to see the PivotChart.

Select the Calendar Year 2001button in the Calendar Year slicer to narrow down the data to only 2001.  Note that only bikes were sold during the year 2001.

read more
Tim CoalsonPowerPivot Primer
start-here1-e1425574385661.jpg

SharePoint 2010 BI Primer

Simple PerformancePoint Dashboard

SharePoint 2010 BI Primer Introduction

In any organization there are business users who need information to understand current and historical trends so they can make appropriate business decisions.  In a Financial role, this might be tracking Actual expenses to Forecasted expenses.  In a Sales role, this could be tracking Forecasted sales to Actual sales with a need to see this information broken down by Year, Region, State and Sales Person.  In a Services Management role, this might include tracking Actual and Forecasted performance metrics to ensure that Service Level Agreements (SLAs) with external customers are being met (or not) so that appropriate adjustments can be made to avoid financial penalties or an unsatisfied customer. This last scenario, tracking of key performance metrics, is one that ThreeWill was recently engaged to develop leveraging features of both PerformancePoint (PP) and SQL Server Reporting Services (SSRS).  The initial engagement consisted of creating a prototype that was demonstrated within a multi-million dollar Request For Proposal (RFP) meeting.  After winning the RFP, the client initiated a second engagement with ThreeWill to create a Production version of the earlier prototype that expanded the functionality to include a greater number of Service offerings and was more scalable and reliable.

In this blog and in subsequent blogs, we would like to share the Business Intelligence functionality that we leveraged in the development of the prototype and Production instance as well as “lessons learned” as we moved from a prototype to a fully functional Production system.  In this first blog, we would like to provide a brief overview of the functionality available in PerformancePoint and SQL Server Reporting Services that we leveraged.  In the subsequent blogs, we will drill-down into more of the nitty-gritty technical details and discuss how we “beefed-up” some of the native PP and SSRS presentation by leveraging JQuery and Ajax.  Also, we will discuss how we secured the application and data leveraging Active Directory, SharePoint Groups, Kerberos and SQL Server Analysis Server  Roles (SSAS).

What is PerformancePoint?

Dashboard Designer

PerformancePoint is a set of related objects that can be leveraged individually or together to provide meaningful views of data.  These views of data can take the form of Key Performance Indicators (KPIs) where actual values are compared against a target or goal value with a corresponding visual indicator to give a quick indication of the performance.  Or, these views of data can be more complex where drilling up and down in the data through dates (Year, Quarter, Month, Week) and other dimension hierarchies (Country, State, County, City) is possible using the Analytic controls in PerformancePoint.  KPIs and analytic charts and grids are a few of the objects included in PerformancePoint.  Other objects include dashboards, filters, scorecards as well as a very cool Silverlight control called the Decomposition Tree that integrates with the analytic controls to provide a “left to right” drill-down capability.  To work with and organize these objects in a meaningful way, a client application called the PerformancePoint Dashboard Designer is used.  PerformancePoint Designer reads and writes PerformancePoint objects to/from a document library that is hosted in a SharePoint site.  Filters, scorecards, KPIs, analytic grids and charts are all available to be hosted as web parts on SharePoint web part pages so they can be mixed and matched as needed or on the special PerformancePoint dashboard pages that come with tab-like navigation.  PerformancePoint objects can display data from a variety of data sources including Analysis Services, Excel Services, Excel workbooks, SharePoint list data and SQL Server tables and views.  During the initial prototype development, we primarily leveraged a SharePoint list data source so we could quickly create a custom SharePoint list and add data using the datasheet view.  However, we did eventually create an Analysis Services data source so that we could demonstrate some of the more visually compelling functionality available in the analytic chart and associated Decomposition Tree.

What is SQL Server Reporting Services?

Report Builder Content Types

SQL Server Reporting Services (SSRS) has been around for a while but the SSRS add-on to SharePoint surfaced for Windows SharePoint Services v3 and MOSS 2007.  In a nutshell, the SSRS add-on provides, in SharePoint vernacular, custom content types that can be applied to SharePoint document libraries.  These custom content types allow SSRS data sources, data models, and reports to be created and managed in SharePoint leveraging the security infrastructure that is included out of box.  If a user has access to update the document library, they can add new or update existing SSRS reports from within SharePoint using the click-once ReportBuilder application that comes bundled with the SSRS add-on for SharePoint.  By leveraging SSRS in SharePoint, reports can be easily previewed, printed and even exported to excel and other formats using the included Report Viewer.

While there is a lot of additional capabilities provided in SSRS, such as scheduling reports, the primary use of SSRS in our scenario was to provide access to detail data, allow exporting of the data, and to provide “ad hoc” report development by end-users using the ReportBuilder application.

PerformancePoint and SQL Server Reporting Services

As previously mentioned, we needed to build a solution that would provide Performance Metrics for the variety of services that our client provided to it’s customers.  The target audience for our client solution included two sets of users.  One set of users that we’ll call the Committee Users could see summary data for each of our services as well as the service data broken out by regions.  However, the detail data that rolled up to create regional and overall totals was not accessible by the committee users.  Our second set of users that we’ll call Regional Users could only see data for their particular region.  They could see this data summed up for each service as well as all of the details.

Define SSAS Role

To achieve this level of security, we were able to leverage SSAS roles.  While I won’t go into detail about the creation, configuration and assignment of SSAS Roles in this blog, it is significant to point out that securing the data within SSAS allowed us to share KPIs and other objects among the two user groups knowing that the data security would only display the data appropriate for the currently logged-in SharePoint user.  So users from all of the regions could log into the same region dashboard and would only see data for their region.

To provide a quick view of all of the Key Performance Indicators defined for each Service offering,  PerformancePoint KPIs and Scorecards were the primary focus of our effort.  KPIs were created for each individual performance metric and actual and target values were mapped for both current month and year to date.  The KPIs were grouped under the appropriate Service category and displayed in a PerformancePoint scorecard.  For each of the performance metrics, a green, yellow or red icon was displayed to indicate how well the actual performance values mapped to the targeted performance values that were agreed upon in the SLA.

Drill-Down using Decomposition Tree

In addition to seeing Summary data, the Regional users needed the ability to view and analyze the detail transactional data.  To provide visual views of the data that could be used for analysis, we leveraged the Analytic Chart.  Analytic charts provide the real “coolness” factor with the ability to drill-down into the data based upon the attributes or dimensions defined in the data. In our case (as in most cases), a date dimension was defined so we were able to drill-down into the details by Year, Quarter, Month and Day.  Analytic charts are flexible in that they can be presented as a bar chart, stacked bar chart, 100% stacked bar chart, pie chart or line chart.  Analytic charts are built/configured within the PerformancePoint Designer application where the measures, dimensions or named sets can be configured using drag and drop.  By right-clicking on an analytic chart, a number of options are made available including but not limited to drill-down, drill-up, sort, filter, pivot and the Decomposition Tree.  The decomposition tree always seems to be a crowd favorite as it provides a nice visual way to drill up and down the hierarchy.  The decomposition tree is built using Silverlight so Silverlight must be installed on the client for this option to be available.  Otherwise, it will not be displayed.

Besides being able to drill-down into the data and do visual analysis, there was also a requirement to see the raw detail data and be able to export this data into Excel for further analysis. SQL Server Reporting Services (SSRS) was a good fit for this requirement as we were able to define parameterized reports to show the detail data in a viewer that was searchable, printable and exportable into Excel and other formats.

Conclusion

Export Report Details to ExcelConclusion

Many organizations own SharePoint and take advantage of the document management features that have been available since the first version of the product.  However, SharePoint has continued to mature as both a product and a development platform, adding capabilities such as PerformancePoint and the SSRS integration that can be leveraged to solve business problems for both internal and external customers.  My goal for this post was to provide a high-level view of a real-world problem and how we leveraged PerformancePoint and SSRS to solve that problem.  In subsequent posts, we will share more detail about these features and some of the lessons learned as we integrated these features to provide a client solution.

read more
Tim CoalsonSharePoint 2010 BI Primer
passport.jpg

Forwarding User Identities

Forwarding User Identities Example

Web Zinger Portal is a stand-alone banking application which is widely used at Bank of Koodoko. As the Web Zinger Portal developer, I want to be able to Connect to the enterprise instance of SharePoint for the purpose of retrieving calendar content for display in the Web Zinger Portal. As you might expect, I will want to be sure that Web Zinger users will only see calendar entries which they are authorized to view. How will the Web Zinger user’s credentials be forwarded to SharePoint? This scenario is often referred to as a “double hop” because the user first authenticates to the Web Zinger Portal via their web browser and then the Web Zinger Portal authenticates and makes a web service call over to SharePoint on behalf of the end-user.

Option 1: Credentials delegation using Kerberos

Credentials delegation using Kerberos requires the least amount of custom code and is the most secure, but it requires additional configuration and can be a challenge for non-Microsoft based applications. In summary, this approach allows the authentication ticket served up to Web Zinger when the user authenticated to be forwarded to the custom web service in SharePoint. In this scenario, Web Zinger forwards the authenticated identity of the current user directly to the SharePoint web service. This is the preferred approach if it is technically feasible. If the Web Zinger Portal can use Kerberos, Web Zinger may be able to directly use SharePoint ‘out of the box’ web services eliminating the need for writing custom web services. If Web Zinger is a .net application, using Kerberos can just be a matter of setting the credentials for web service calls equal to CredentialCache.DefaultCredentials.

Option 2: Impersonation

A second approach, impersonation, can be used when delegation is not an option. Impersonation involves making the web service call from Web Zinger to SharePoint using a trusted ‘service account’. A parameter in the web service call specifies the user account which is to be impersonated in SharePoint. The web service on the SharePoint side will then impersonate the user as specified by the user account parameter and then access the SharePoint API on behalf of that user.

When using this approach, it is important to build in safeguards to prevent just any user from executing impersonated web service calls. One such safeguard is to store the ‘service account’ user name in a secure configuration store, such as the SharePoint configuration database using an SPPersistedObject. The SharePoint side web service calls will then check that the authenticating user is an authorized ‘service account’ before proceeding with impersonation.

Another consideration will be what permission level to grant the ‘service account’ in SharePoint. The SharePoint side web service may need to execute calls to SPWeb::EnsureUser (see below) or other privileged API calls. The best approach is to use a least privileged approach for the ‘service account’ and then use RunWithElevatedPriveleges for API calls which require additional permissions.

Impersonation for Direct Access to Site Content

The majority of your SharePoint impersonation requirements can be met using the SPSite constructor which allows for passing in an SPUserToken. From the constructed SPSite, you can gain security trimmed access to SPWeb, SPList, SPListItem, etc.. across the site collection. Disclaimer: The code snips below are for illustration only and are in need of try/finally blocks, error checking, and are obviously missing supporting code. Feel free to comment if you are having trouble exercising any of the sample code.

SPUser spUserToImpersonate = SPContext.Current.Web.SiteUsers[userToImpersonate];
//you will need to call Web.EnsureUser if the user is not already a site user
using (SPSite impersonatedSite =
  new SPSite (SPContext.Current.Web.Url, spUserToImpersonate.UserToken])
{
   using (SPWeb impersonatedWeb = impersonatedSite.OpenWeb())
   {
      SPList impersonatedCalendar = impersonatedWeb.Lists["Calendar"];
      //Retrieve calendar list items as needed
   }
}

Impersonation for Search

Another approach is required for executing the search API. To enable impersonation for search, we can use a WindowsIdentity constructor provided by the Windows 2003 Kerberos Extensions. This constructor will allow creation of a WindowsIdentity given only a user’s account name. See the sample code below.

//build the WindowIdentity object and impersonate the user
WindowsIdentity impersonatedIdentity = new WindowsIdentity ("[email protected]");
WindowsImpersonationContext wic = impersonatedIdentity.Impersonate ();

//execute the search
KeywordQuery kwQuery = new KeywordQuery (SPContext.Current.Site);
kwQuery.ResultTypes = ResultType.RelevantResults;
kwQuery.QueryText = searchTerms;
kwQuery.RowLimit = rowLimit;
ResultTableCollection results = kwQuery.Execute ();

//undo impersonation
wic.Undo ();

There are special requirements that must be met in order for WindowsIdentity construction to succeed:

  • The domain must be running at Windows 2003 functional level or higher
  • The web front end must be running Windows 2003 SP1 or greater
  • The application pool account (or the caller) must be granted the following in the local security policy of the web front ends:
    • Act as Part of the Operating System
    • Impersonate a client after authentication
  • The application pool account must be a domain account
  • The user which is to be impersonated must be a domain account

Option 3: Claims

Claims based authentication is yet a third option. This article on MSDN provides a good primer. Since claims is new to SharePoint 2010 I don’t yet have implementation details (sounds like good blog post material!).

Wrap up

In summary, impersonation is possible if you are willing to accept the requirements and write some code. On the other hand, Kerberos credentials delegation can provide a more secure and less custom authentication if that technology is available.

read more
Eric BowdenForwarding User Identities
workflow-glow.jpg

Custom Workflow Activities

I needed to display User information in a SharePoint Designer Workflow email activity that was associated with a “Person or Group” column in a list. I downloaded and installed from CodePlex the “Useful SharePoint Designer Custom Workflow Activities” (http://spdactivities.codeplex.com/). The “Lookup user info” activity was very helpful.  There are also a number of other activities included in this download which I have not used including:

  • Send Email with HTTP File attachment – Allows sending emails with attachments retrieved using a web request
  • Send Email with List Item attachments – Allows sending list item attachments as files attached to an email
  • Start Another Workflow – Starts another workflow associated with a list item
  • Grant Permission on Item – Allows granting of a specified permission level on a specified item
  • Delete List Item Permission Assignment – Allows deleting of the specified permission level assignment for a given user
  • Reset List Permissions Inheritance – Removes any unique permissions assigned to an item by inheriting list permissions
  • Is User a member of a SharePoint group – Checks if a given user is part of a given SharePoint group
  • Is Role assigned to User – Checks if a user role is already assigned on the current list item
  • NEW! Copy List Item Extended Activity – Allows copying/moving list items and files across sites.
  • NEW! Send Email Extended – Enhanced version of the OOTB activity. Allows you to specify the sender. Also does not break links in body.

Thanks to Paul Kotlyar and others for providing these valuable activities.

read more
Tim CoalsonCustom Workflow Activities
apples-oranges1.jpg

MOSS vs WSS

There are plenty of articles on the differences between MOSS 2007 and WSS v3, but I still get questions on this so here is a summary of what I have provided for clients in the past. Most of this is simply a compilation of data from different sources (referenced at the end of this post). This was originally compiled about a year ago, so there may be some tweaks necessary, but it should be a good start. It shows the features that MOSS provides above and beyond what is in WSS.

Sometimes I have taken the table below and added a column or two that is particular to my client’s needs. Then I discuss whether each feature is important to them and why.

Unfortunately, this does not differentiate between MOSS Standard and MOSS Enterprise.

FeatureDescription
Social NetworkingMOSS provides social networking features, including social networking Web Parts and profile linking. MOSS allows you to establish peer links between colleagues and identify hierarchical relationships. These relationships can be published on My Site pages and traversed wherever your personal profile appears on a site/web part.
My SiteMOSS provides the ability for individual users of a portal to create their own “My Site”. My Site is essentially a home page / landing page designed to provide you with a starting point through which to access content that you own and content that might be relevant to you. This is also the place where your personal profile is published. You can also create shared and private image and document libraries, as well as your own pages and publication areas. You can also create your own personal blog on your My Site. Some people think of a My Site as a “professional version of a MySpace site”. I’ll leave it up to you as to whether you agree with that comparison or not.
Site DirectoryMOSS provides a new site template called “Site Directory”. When you create your first portal via MOSS, it comes with a Site Directory. This site template is designed specifically for tracking links to sites, displaying site maps and site navigation lists, as well as searching through the site directory. With a Site Directory in your portal, you will be asked if you want to publish a link to your new site every time you create a new site within the portal, regardless of its depth within the hierarchy. This single feature is, in my opinion, absolutely required for any kind of Intranet deployment of SharePoint. And yes, that means I think MOSS is a requirement for any real Intranet deployment of SharePoint on any kind of meaningful scale.
User ProfilesMOSS allows for Active Directory-integrated user profiles. It also provides security around profile properties. In other words, you can have information in your profile that is visible only to you, visible to your superiors, visible to your colleagues, etc. You can control what audience can see which user profile properties, and much more than that. Again, I feel that the enhanced user profile store features of MOSS make it almost a necessity, not an add-on.
Site ManagerMOSS provides for an easy drag-and-drop interface for managing navigation bars, navigation strips, portal hierarchy information, and much more. In general, managing sites, site hierarchies, and hierarchical site content is much easier (and in some cases simply made possible) with MOSS.
Portal or “Enterprise” templatesMOSS comes with new templates for a Portal Site (the default root-level site template of a portal site), Document Center, Search Center, Report Center (available only in the SharePoint 2007 Enterprise SKU, not Standard), and Site Directory.
SearchMOSS uses an enhanced relevance algorithm for its search engine, and is able to crawl content from multiple sites within an enterprise, as well as non-SharePoint web sites. In short, the MOSS search engine is a powerful enterprise search engine with a relevance algorithm, while the WSS site-local search engine is actually pretty useless beyond simple “dumb keyword” search.
Knowledge Network / People SearchMOSS provides an enhanced “people search” tool that can be used to try and mine hidden relationship data and show you people related to knowledge. For example, if my name is splattered all over dozens of websites that contain C#-related content, the idea is that MOSS will show you my name and profile in response to a search for people related to C#, and suggest me as a local expert.
Business Data Catalog / Business Data SearchI think this is quite possibly one of the most important features in MOSS. It allows you to extend SharePoint data by integrating Business Data from external sources such as Web Services or Relational Databases. This allows you to do things like display SAP data within your SharePoint portal, or add a column to a Requirements Document stored in SharePoint that points to data stored in a Requirements Management tool elsewhere in your enterprise. The possibilities for the BDC are limitless, and I really think every single SharePoint 2007 developer needs to learn this stuff in and out.
Document WorkflowI can’t stress how unbelievably powerful this feature is. You can use the stock (included “in the box”) workflows such as collecting feedback and performing a review of a document, or you can create your own workflows using a custom Workflow designer to create powerful (and really, really handy) workflows around specific types of documents like Whitepapers or magazine article submissions, chapter submissions (hint, nudge), etc.
Excel ServicesMOSS provides the ability, through its Shared Services facility, to have what amounts to an Excel server. This provides the ability to display the contents of excel spreadsheets within web parts, and to selectively allow editing of secured regions of that spreadsheet, including evaluation of formulae contained within the sheet and having the results display in real-time. There is also a UI-less version of this where you can access a stored central spreadsheet via webservices, establish a “session”, and programmatically feed data into the sheet and get formula-calculated values out of the sheet – all without interfering with other people using the same centrally located spreadsheet. The impact to businesses that do anything at all with Excel is huge.
Web Parts – Business DataBusiness Data Actions – Display a list of actions from the Business Data Catalog.
Business Data Item – Display one item from a data source in the Business Data Catalog.
Business Data Item Builder – Creates a Business Data item from parameters in the query string and provides it to other web parts. This web part is only used on Business Data profile pages.
Business Data List – Display a list of items from a data source in the Business Data Catalog.
Business Data Related List – Display a list of items related to one or more parent items from a data source in the Business Data Catalog.
Web Parts – Content RollupColleague Tracker – Displays your list of colleagues and any recent changes they made have had.
Memberships – Displays your site and distribution list memberships.
My Links – Use to display your links
My SharePoint Sites – Use to display documents authored by you on sites where you are a member and sites of your choice.
My Workspaces – Displays sites created under your My Site.
Site Aggregator – Use to display sites of your choice.
Web Parts – DashboardKey Performance Indicators – Shows a list of status indicators. Status indicators display important measures for your organization, and show how your organization is performing with respect to your goals.
KPI Details – Displays the details of a single status indicator. Status indicators display an important measure for an organization and may be obtained from other data sources including SharePoint lists, Excel workbooks, and SQL Server 2005 Analysis Services KPIs.
Web Parts – OtherExcel Web Access – Use the Excel Web Access to interact with an Excel 2007 workbook as a Web page.
I need to… – Displays tasks and tools from a list
IView Web Part – Displays iViews from SAP portal servers.
RSS Viewer – Renders RSS Feed
This Week in Pictures – Use to display the images library in the News web
WSRP Consumer Web Part – Displays portlets from web sites using WSRP 1.1.
Web Parts – FiltersAuthored List Filter – Filter the contents of web parts using a list of values entered by the page author.
Business Data Catalog Filter – Filter the contents of web parts using a list of values from the Business Data Catalog.
Current User Filter – Filter the contents of web parts by using properties of the current page.
Date Filter – Filter the contents of web parts by allowing users to enter or pick a date.
Filter Actions – Filter Actions
Page Field Filter – Filter the contents of web parts using information about the current page.
Query String (URL) Filter – Filter the contents of web parts using values passed via the query string
SharePoint List Filter – Filter the contents of web parts by using a list of values from a Office SharePoint Server list.
SQL Server 2005 Analysis Services Filter – Filter the contents of web parts using a list of values from SQL Server 2005 Analysis Services cubes.
Text Filter – Filter the contents of web parts by allowing users to enter a text value.
Web Parts – MiscContact Details – Use to display details about a contact for this page or site
Web Parts – Outlook Web AccessMy Calendar – Use to display your calendar. This part works with Microsoft Exchange Server 2003 and above.
My Contacts – Displays your contacts using Outlook Web Access for Microsoft Exchange Server 2007.
My Inbox – Displays your inbox using Outlook Web Access for Microsoft Exchange Server 2003 or later.
My Mail Folder – Displays your calendar using Outlook Web Access for Microsoft Exchange Server 2000 or later.
My Tasks – Displays your tasks using Outlook Web Access for Microsoft Exchange Server 2003 or later.
Web Parts – SearchAdvanced Search Box – Entry point for advanced search
People Search Box – Entry point for people search
People Search Core Results – Web part to display the people search results.
Search Box – Entry point for search.
Search Core Results – Web part to display the search results.
Search High Confidence Results – Web part to display the special term and high confidence results.
Search Paging – Displays search paging.
Search Statistics – Displays search statistics.
Search Summary – Displays search summary.
Audience TargetingEnables use of Web Part pages, Web Parts, and content to target distribution lists and groups in addition to SharePoint audiences.
Ent Content Mgmt – Doc Mgmt Site TemplatesManaged Document Library – The Managed Document Library site template defines large-scale document management sites.
Divisional Library – The Divisional Library site template includes managed document libraries, dashboards, key performance indicators (KPIs), and other reporting tools.
Translation Library – The Translation Library site template helps organizations manage multiple translations of a document.
Enterprise Content ManagementIntegration with Microsoft Information Rights Management (IRM) – Helps ensure that access rights applied to Microsoft Office documents in a central library travel with the documents, even when they are downloaded from the library.
Retention and Auditing Policies – Define customized information management policies to control retention period, expiration actions, and document-auditing settings.
Records Repository – Helps ensure the integrity of the files stored in the repository, and supports information management policies that consistently and uniformly enforce auditing, and expiration of records.
E-Mail Content as Records – Provides consistent, policy-based solutions for managing e-mail content across Microsoft Office Outlook 2007, Microsoft Exchange Server 2007 and Office SharePoint Server 2007.
Legal Holds – Makes it possible for records to be searched and placed on hold during litigation discovery to override the retention schedule of the records.
Content Publishing and Deployment – Built in approval workflow allows web content to be sent for approval prior to publishing. Content deployment to production sites can be scheduled by setting up jobs and a “live” time period for each page can be specified within which that page is viewable.
ECM Site Templates
– The Enterprise Portal template provides a means for a business unit to create and share content that is relevant to the ongoing operation of an enterprise, division, or business unit.
– The Corporate Internet Presence Site template includes tools and workflows to create and manage Web content for products and service descriptions, company news, and public filings, among other things.
– The Application Portal template brings together all of the tools and information related to a particular line-of-business (LOB) application.
– The Roll-up Portal template consolidates data and content from several applications or locations and presents it in an integrated format.
Site Variations – A new feature of Office SharePoint Server, sites can be linked together in a parent-child type of relationship providing a 1-way orchestration framework for web content. This feature allow organizations to deploy multi-lingual publishing sites in a much more structured and manageable environment.
Slide Libraries – The repository features in Windows SharePoint Services V3 provide the platform support for slide libraries, a feature of Office SharePoint Server 2007. Slide libraries enable the storage of individual slides in a SharePoint site. PowerPoint 2007 slide decks can be automatically created from a selection of slides in a slide library.
Policies, Auditing and Compliance – Repositories in Windows SharePoint Services V3 support the following policy, auditing, and compliance features. However, the features denoted with an asterisk are activated only upon the installation of Microsoft Office SharePoint Server 2007.
– Document retention and expiration policies
– Highly customizable policies
– Workflow process to define expiration
– Access control and security
– Information Rights Management policies applied on download to secure the functional access to documents
– Tracking and auditing
– Logging of all actions on sites, content, and workflows
– Official document-of-record repositories
– Site for storing or archiving enterprise approved content types
Browser Based FormsInfoPath Forms Services available in Microsoft Office SharePoint Server 2007 and Microsoft Office Forms Server 2007 makes it possible to design Web-capable forms in Microsoft Office InfoPath 2007 and distribute them on corporate intranets, extranets, or the Internet. Users can fill out forms in a browser or HTML enabled Mobile device with no download or client components needed.
Business IntelligenceReport Center – An out-of-the-box site optimized for report access and management, including a report library, data connection library, and a dashboard template. These sites, hosted by the new Report Center, provide consistent management of reports, spreadsheets, and data connections.
Key Performance Indicators – KPIs communicate goals and status to drive results. Using the KPI Web Part, a user can create a KPI list within a Web Part page, without writing code. The KPI Web Part can display KPIs from Microsoft SQL Server Analysis Services, Excel spreadsheets, SharePoint lists, or manually entered data.
LDAP Pluggable Authentication ProviderAn LDAP pluggable authentication provider.
Single Sign-OnPermits a person to enter one name and password to use a variety of back-end applications. SSO is used for integrating back-office systems and LOB applications that require separate credentials databases. Take advantage of single sign on to authenticate users and leverage this to pre-populate InfoPath forms.

Sources / References:

  • Microsoft Office SharePoint Server 2007 products comparison download- Very detailed, but you have to be careful with this one. Microsoft leaves out the fact that WSS v3 has some of the capabilities. Which SharePoint technology is right for you? – this appears to be a prettier version of the above Excel document.
  • Andre Connell’s Blog – What’s a MOSS 2007 vs. WSS v3 Feature? – Lists the additional “features” in MOSS. This was not used in compiling the list above, but most of the details should be mentioned in there.
read more
Kirk LiemohnMOSS vs WSS
login.jpg

MySites with Forms Based Authentication

I recently researched the feasibility of using My Sites for sites using Forms Based Authentication. We are seeing clients who want to leverage My Sites in an extranet scenario where users are not in Active Directory. I thought I would share my experience from what I found when looking into using Forms Based Authentication with My Sites.

I used a handful of blog posts to support this endeavor.

HOWTO: Configuring a Office SharePoint Server 2007 Publishing Site with Dual Authentication Providers and Anonymous Access – Andrew Connell

Moving your MySite location in MOSS – Chris Johnson

These posts were very helpful but required a few tweaks for my case.

I first experimented with creating My Sites in a different web application from the public facing site. It is recommended that My Sites be in their own web application to allow for scalability (segregating My Sites across web applications by Audience for example) and so that all of the My Site site collections can be backed up/restored independent of other site collections.

Using help from the blog posts above, I converted my My Sites web application, My SSP, and my public facing site to all three support forms based authentication only (as suggested). The first result I noticed was that the sites required users to authenticate when going from the public facing site over to the My Site. Further, the user had to authenticate if they returned to the public site such as was the case if they invoked a search using the default Search Center.

To enable crawling of My Sites, I had to configure a crawl rule to tell the search engine how to authenticate. Usually you have to use AddRule.exe for this. But thankfully, the recently released Infrastructure Update for Microsoft Office Servers (KB951297) provides updates to the crawl rules user interface to allow you to more easily create a crawl rule for Search of sites requiring forms based authentication.

The steps are:

  • Add the URL of the site to crawl to your list of Content Sources
  • Create a Crawl Rule for your site including the URL of the site as the selection criteria
  • Select the radio button to “Include all items in this path”
  • Select “Specify form credentials”, input the Login URL of the site and click Enter Credentials.
  • A popup window is supposed to appear with your Login page enclosed.
  • You should login to the site and click OK when asked if the login was successful.

This was easier said than done in my case. The form would not pop-up. I only got a nice blue circler next to the Enter Credentials button. I would eventually have to end-task on Internet Explorer.

To remedy, you must use the following login url, http://<yourserver>/_layouts/login.aspx?ReturnUrl=%2f_layouts%2fAuthenticate.aspx%3fSource%3d%252f, instead of the default URL you see when you try to login, http://<yourserver>/_layouts/login.aspx?ReturnUrl=%2f_layouts%2fAuthenticate.aspx%3fSource%3d%252f&Source=%2f. Evidently, that last query string parameter causes the trouble.

In the end though, crawling My Sites using forms based authentication was not viable because the crawling capability depends upon the authorization of the user specified in the crawl rule. The user specified (using forms based authentication) is Site Collection Administrator of his own site (and none others) and does not have a view of all My Site site collections. There are ways to provide the crawler with a view of other My Sites such as adding links to these sites on the My Site page of the crawl user, but this does not work around the fact that this user is not a Site Collection Administrator of each site collection and so will not have access to personal content on other users’ My Sites. Then if you are able to work around this (by adding this user as Site Collection Administrator to all of the My Sites) you will find that the search results are not security trimmed. To solve this last hurdle you’ll need to create a custom security trimmer. At this point I decided to punt and take a different approach.

My second experiment was to configure My Sites to exist in the same web application as my public facing site. See Chris Johnson’s post for details. The only tweak I had to follow was to go to the My Site Host Permissions page from the My Site Settings page and add the user groups who may be creating My Sites to the MySiteHost Members group. I also configured my SSP, public facing site, and My Site to support both Windows Auth and Forms Auth.

Success! With this configuration my users can seamlessly navigate from the public site to their My Site and then back to Search Center. Using the default Local Office SharePoint Server sites content source, the search crawl correctly crawled over My Site contents, security trimmed the results, and included the correct URL in the results. I expected that I would need to implement URL mapping because the crawler had crawled the content from the Windows Auth side but the results were being presented on the Forms Auth side. SharePoint took care of this!

read more
Eric BowdenMySites with Forms Based Authentication
tips-white-e1425575645901.jpg

Web Part Page Maintenance

The Web Part Page Maintenance page is where you can go to see all the web parts included in a web page and perform some limited maintenance activities. To get there, simply append ?Contents=1 to the URL of the page (ex: http://somewhere.com/Pages/Default.aspx?Contents=1). The page which appears lists all the web parts which are included on the page. From there you can choose to remove (Delete) web parts or remove personalization (Reset) for specific web parts. Personalization can be removed for all users (the default) or you can switch to personal view and remove personalization for just the current user.

This SharePoint feature is really handy if one of your web parts is throwing an error preventing you placing the page in Edit Mode. In this case, you can use the Web Part Page Maintenance page to remove the offending web parts.

Thanks to coworkers Kirk Liemohn and Chris Edwards for this great tip!


SharePoint is a web application platform in the Microsoft Office server suite. Launched in 2001, SharePoint combines various functions which are traditionally separate applications: intranet, extranet, content management, document management, personal cloud, enterprise social networking, enterprise search, business intelligence, workflow management, web content management, and an enterprise application store. SharePoint servers have traditionally been deployed for internal use in mid-size businesses and large departments alongside Microsoft Exchange, Skype for Business, and Office Web Apps; but Microsoft’s ‘Office 365’ software as a service offering (which includes a version of SharePoint) has led to increased usage of SharePoint in smaller organizations.

While Office 365 provides SharePoint as a service, installing SharePoint on premises typically requires multiple virtual machines, at least two separate physical servers, and is a somewhat significant installation and configuration effort. The software is based on an n-tier service oriented architecture. Enterprise application software (for example, email servers, ERP, BI and CRM products) often either requires or integrates with elements of SharePoint. As an application platform, SharePoint provides central management, governance, and security controls. The SharePoint platform manages Internet Information Services (IIS) via form-based management tooling.

Since the release of SharePoint 2013, Microsoft’s primary channel for distribution of SharePoint has been Office 365, where the product is continuously being upgraded. New versions are released every few years, and represent a supported snapshot of the cloud software. Microsoft currently has three tiers of pricing for SharePoint 2013, including a free version (whose future is currently uncertain). SharePoint 2013 is also resold through a cloud model by many third-party vendors. The next on-premises release is SharePoint 2016, expected to have increased hybrid cloud integration.

Office 365 is the brand name used by Microsoft for a group of software plus services subscriptions that provides productivity software and related services to its subscribers. For consumers, the service allows the use of Microsoft Office apps on Windows and OS X, provides storage space on Microsoft’s cloud storage service OneDrive, and grants 60 Skype minutes per month. For business and enterprise users, Office 365 offers plans including e-mail and social networking services through hosted versions of Exchange Server, Skype for Business Server, SharePoint and Office Online, integration with Yammer, as well as access to the Office software.

After a beta test that began in October 2010, Office 365 was launched on June 28, 2011, as a successor to Microsoft Business Productivity Online Suite (MSBPOS), originally aimed at corporate users. With the release of Microsoft Office 2013, Office 365 was expanded to include new plans aimed at different types of businesses, along with new plans aimed at general consumers wanting to use the Office desktop software on a subscription basis—with an emphasis on the rolling release model.

read more
Eric BowdenWeb Part Page Maintenance
one-idea.jpg

SharePoint – One platform, many websites

One of the reasons why we are so excited about SharePoint 2007 (Windows SharePoint Services v3 and Microsoft Office SharePoint Server 2007) is that we finally have one platform for our public site, Intranet, Extranet, and other sites (like this blog site).

For example, at ThreeWill, we use MOSS 2007 for our public site.

For our Intranet, we use MOSS 2007.

For our Extranet, we use WSS v3.

And finally, for our Blog sites, we use WSS v3 (or at least we used to…).

Whereas before we would need to use several different platforms (for example, DotNetNuke for our public site, Microsoft Portal Server 2003 for our Intranet, Groove 3.1 for Extranet-like services, and Community Server for blogging), we now have a single platform that we can use across the board.


SharePoint is a web application platform in the Microsoft Office server suite. Launched in 2001, SharePoint combines various functions which are traditionally separate applications: intranet, extranet, content management, document management, personal cloud, enterprise social networking, enterprise search, business intelligence, workflow management, web content management, and an enterprise application store. SharePoint servers have traditionally been deployed for internal use in mid-size businesses and large departments alongside Microsoft Exchange, Skype for Business, and Office Web Apps; but Microsoft’s ‘Office 365’ software as a service offering (which includes a version of SharePoint) has led to increased usage of SharePoint in smaller organizations.

While Office 365 provides SharePoint as a service, installing SharePoint on premises typically requires multiple virtual machines, at least two separate physical servers, and is a somewhat significant installation and configuration effort. The software is based on an n-tier service oriented architecture. Enterprise application software (for example, email servers, ERP, BI and CRM products) often either requires or integrates with elements of SharePoint. As an application platform, SharePoint provides central management, governance, and security controls. The SharePoint platform manages Internet Information Services (IIS) via form-based management tooling.

Since the release of SharePoint 2013, Microsoft’s primary channel for distribution of SharePoint has been Office 365, where the product is continuously being upgraded. New versions are released every few years, and represent a supported snapshot of the cloud software. Microsoft currently has three tiers of pricing for SharePoint 2013, including a free version (whose future is currently uncertain). SharePoint 2013 is also resold through a cloud model by many third-party vendors. The next on-premises release is SharePoint 2016, expected to have increased hybrid cloud integration.

Office 365 is the brand name used by Microsoft for a group of software plus services subscriptions that provides productivity software and related services to its subscribers. For consumers, the service allows the use of Microsoft Office apps on Windows and OS X, provides storage space on Microsoft’s cloud storage service OneDrive, and grants 60 Skype minutes per month. For business and enterprise users, Office 365 offers plans including e-mail and social networking services through hosted versions of Exchange Server, Skype for Business Server, SharePoint and Office Online, integration with Yammer, as well as access to the Office software.

After a beta test that began in October 2010, Office 365 was launched on June 28, 2011, as a successor to Microsoft Business Productivity Online Suite (MSBPOS), originally aimed at corporate users. With the release of Microsoft Office 2013, Office 365 was expanded to include new plans aimed at different types of businesses, along with new plans aimed at general consumers wanting to use the Office desktop software on a subscription basis—with an emphasis on the rolling release model.

read more
Danny RyanSharePoint – One platform, many websites