Showing posts with label SharePoint. Show all posts
Showing posts with label SharePoint. Show all posts

Tuesday, May 12, 2015

The Journey from On-Premises to Hybrid and Cloud

Microsoft CEO Satya Nadella, at Microsoft Ignite in Chicago last week, said, "Every company is a software company." What he meant was that every company must enhance collaboration and increase productivity at the same time, together. No easy task.

Why? Because today just about every company in the world is experiencing the fusion of collaboration (voice, chat, meetings) with productivity (business applications, workflow, and business intelligence). Each company is unique in the details of their business process and in the nature of their collaboration. Each company, therefore, needs a unique combination of software and platform, of cloud and on-premises, of custom and out-of-the-box.

Rich are the rewards to those who find a workable balance, an effective path as they maintain the known, stable on-premises systems and solutions that have worked so well for so long, on the one hand and the new, fast-changing "intelligent cloud" -- the infrastructure that powers mobility -- on the other.

At Microsoft Ignite in Chicago last week I came to fully appreciate that 80% of companies' IT infrastructure is "hybrid" and will be for at least the next 10 years.

I immediately recognized the challenges and opportunities this picture presents. The whole conference seemed to arrive at the understanding that "hybrid" is not a transition, it is not a temporary state you pass through on your way to cloud nirvana. Hybrid is the way it is now and the way it's going to be for a long, long time. So I gave myself the project -- during my five days and nights in Chicago -- of finding out what the road map looks like for companies and IT departments starting the journey into the hybrid world of cloud and on-premises together, of collaboration and productivity together.

The details of this journey from on-premises to hybrid and cloud are starting to emerge from my experiences helping customers migrate to Office 365, from breakout sessions at Ignite, and from my conversations with clients, IT professionals, and MVPs. The road map of this journey looks like this:

  • The journey actually started a several years ago with salesforce.com and accelerated when uses started using box.com and dropbox, often without the knowledge or approval of IT. 
  • The next step, very often, is Azure Active Directory, the foundation for Exchange Online and Office 365.
  • Synchronization between on-premises Active Directory and Azure Active Directory establishes your foothold in the cloud. It makes single sign-on possible.
  • Exchange online is typically the next step and the first of the previously on-premises platforms to be migrated to the cloud. The business case is strongest because risk is small and E-mail is like plumbing: a foundation with little customization
  • Midway into the cloud, many customers start using Office 365. Few though, can go 100% to SharePoint online right away because legacy investments in SharePoint on-premises solutions (full trust code) take time to rewrite.
  • OneDrive, Yammer, Power BI, and Delve start to deliver huge value to the organization. All four applications are cloud-only.
  • Around this point in the journey, MySites can be migrated to Office 365 to great benefit. Often MySites are easier to migrate than SharePoint project sites and customized sites because MySites typically have little or no customizations. 
  • Enterprise Search is a huge workload that, while very advantageous to move to the cloud, can require a lot of work to move. Infrastructure headaches with on-premises Search make this a compelling step, but there are multiple technical challenges to ensure your cloud-based search can securely crawl the on-premises content you cannot migrate to the cloud.
  • Team sites and sites with little or no branding or customization can be migrated to the cloud with benefits for the mobile and global workers. 
  • Late in the game -- deep into the hybrid/cloud journey -- come the migrations of complex, mission-critical custom applications developed using SharePoint full-trust code. These solutions require a complete re-write into the new Cloud App Model (SharePoint-hosted apps and Provider-hosted apps). While all new SharePoint custom development should be designed to conform to the Cloud App Model, legacy SharePoint solutions will have to be replaced or re-written before organizations can get rid of their last on-premises SharePoint server.

This journey through the hybrid cloud is ripe with challenges and will require constant re-evaluation. My mission, my passion, is to help my clients with the journey through the hybrid cloud, to create business solutions that address these challenges, to bring collaboration and productivity together in a world where users make their own choices -- with their own devices -- while IT professionals exert just enough governance and control to keep the enterprise secure.


Friday, April 5, 2013

Removing Content Types and Site Columns from SharePoint

This blog post provides and documents a set of PowerShell scripts we developed to remove a set of content types and their associated site columns from a production SharePoint 2010 farm.

Often SharePoint will throw the exception "Content Type is still in use" when we try to delete a content type we no longer want.

Similarly, when we try to delete a Site Column, SharePoint will throw the exception "Site columns which are included in content types or on lists cannot be deleted. Please remove all instances of this site column prior to deleting it."

I recently helped a client remove a large number of content types as well as the site columns used in those content types from a production SharePoint 2010 farm on-premises. Library templates using these content types had been used extensively, so there were quite a lot of documents, libraries, and sites that all contained references to the content types and site columns. Surgically removing all these content types while leaving in place all the sites, lists, libraries and documents took quite some doing, so I thought I would share with you here some of the knowledge and PowerShell scripts that came from this experience.
 

Background


A SharePoint Content Types is a re-usable set of Site Columns, AKA fields. Content Types are defined in the Site Content Types Gallery in each Site Collection. Content Types are used in Lists and Libraries, as well as other places like workflows. SharePoint will prevent you from deleting a Content Type that is still referenced in a list or library in that site collection. Hence the exception "Content Type is still in use."

Site Columns are also defined in a Gallery in each Site Collection. Lists and Libraries can use these Site Columns directly - without referring to the Content Type. So SharePoint also prevents you from deleting a Site Column if there are any Lists or Libraries using that site column. It throws the exception, "Site columns which are included in content types or on lists cannot be deleted. Please remove all instances of this site column prior to deleting it."

This referential integrity can make it tough to delete a set of site columns and content types without deleting the documents and libraries that use them.  To work back through this chain of dependencies, we followed the sequence of steps listed below to delete content types and site columns from each site collection.

Sequence of Steps


For each step, we provide a link to the PowerShell script (provided on a separate page) that performs that action.

We started by making a list of all the Content Types to be deleted, specifying them in a simple XML file that is one input to the PowerShell scripts.

  1. Remove Content Types from all documents in all document libraries in the Site Collection by running RemoveContentTypesFromDocs.ps1
  2. Remove Content Types from all Libraries in the site collection by running RemoveContentTypesFromLibraries.ps1
  3. Remove Content Types from the Content Type Gallery in the Site Collection by running RemoveContentTypesFromSiteCollection.ps1
If RemoveContentTypesFromSiteCollection encounters exception "Content Type is still in use" you may need to use one of the following scripts which were developed to help locate places where a given content type is still in use within the farm:
Once all the content types are removed, you may start to remove the site columns.

Again, we created a simple XML file list of site columns to be removed

  1. Remove Site Columns from all Libraries by running RemoveSiteColumnsFromLibrariesOneSubsite.ps1 (which just processes one subsite, not the whole colleciton) or RemoveSiteColumnsFromLibraries.ps1 (which process the whole site collection)
  2. Remove Site Columns from the Site Columns Gallery in the Site Collection by running RemoveSiteColumnsFromSiteCollection.ps1
If SharePoint throws exception, "Site columns which are included in content types or on lists cannot be deleted," then run one of the following scripts to search out what Content Type, List or Library may still contain a reference to that site column:

How to Operate the Scripts

All the scripts have a syntax example in the comments near the start of the script.  All the scripts that operate on a site collection take the URL of the site collection as the first input.

The scripts that work with Content Types take, as input, the full pathname of an XML file that provides a list of all the content types to be found or removed.  The file ContentTypes.xml was used for this input file.

Similarly, the scripts dealing with Site Columns take, as input, the full pathname of an XML file that lists the names of all the Site Columns to be found or removed.  This file is named SiteColumns.xml and resides in the same folder as the scripts.

I hope these scripts are helpful and save you some time.

Thursday, November 15, 2012

Yammer or SharePoint 2013 or Neudesic Pulse for Social in 2013?


At the SharePoint2012 conference in Las Vegas, Microsoft showcased Social Computing in SharePoint 2013 and Yammer, and articulated vociferously their new-found commitment and enthusiasm for social as a central feature of intranets and pretty much everything else going forward.

This love-fest around social computing was dampened by the reality that Microsoft developed a set of Social features in SharePoint 2012 and then subsequently acquired Yammer. While the acquisition of Yammer underscores Microsoft's commitment to social, it muddied the waters leaving us with a distinctly cloudy and complicated message.
 
In a nutshell, that complex message seems to be that Yammer is the premiere social computing product that customers should use if at all possible, the Microsoft-developed social features in SharePoint 2013 are an alternative that may also be useful in certain circumstances, but pick one or the other: don't use both.

My clients are asking me which way to go, and I am working hard to synthesize a decision tree. Most of my clients embrace enterprise social computing and some need the kind of deep integration of Social features into applications that Yammer's Adam Pisoni was talking about at the SharePoint Conference 2012. (By deep integration I mean solutions for scenarios like deriving insight into customer needs or product development.) I don't have that decision tree worked out yet, but it is clear that they must choose one of three directions: 1) yammer if at all possible, the key  problem being if clients require hosting all data on-premesis, because the data in Yammer exists in the cloud. 2) social in SP or 3) a third-party product like Newsgator or Neudesic Pulse, which work fine in 2010.

Friday, September 21, 2012

Why Social Computing Really Comes to Life in SharePoint - 1


This series of posts explores the synergetic relationship between social computing and collaborative computing, with an in-depth look at several high-impact applications that leverage social computing features in SharePoint 2013.

I developed these applications and the attached PowerPoint presentation for SharePoint Saturday Redmond 2012.

So why does social computing really come to life in SharePoint? In a word, because it keeps the communication in context:

 
  • Successful social computing applications in SharePoint capture the communication between users in the context of the work they are doing.
  • It helps users keep track of people, keep track of work and keep track of the connections between them.
  • Social computing, done right, elevates teamwork to a whole new level.
  • It helps users find and get help from the experts, improving the traction and efficiency of the organization. And it can improve the overall quality of the work product
Why I Care

I have been developing collaborative applications since the early 1990s, starting with Lotus Notes, later with Groove, and now with SharePoint. I have followed the rise of social computing with great interest and healthy skepticism. What I see now is ample evidence that Social Computing can greatly increase the impact of many collaborative applications. The caveat is, l
ike everything in SharePoint, you have to do it right. 

Now, you may ask, “How can you say there is ample evidence that Social Computing is so great in SharePoint, when SharePoint 2013 hasn’t even been released yet?"

The answer is that social is nothing new to SharePoint. We’ve been building social applications in SharePoint since at least 2008. Companies like Neudesic and NewsGator have shipped Social products and deployed Social Apps in SharePoint with great success for years.

At Neudesic, we have been building compelling Social Computing apps integrated into SharePoint using our Pulse product. So I was extremely interested -- to put it mildly -- when, in July 2012, Ben Wilde demonstrated the SharePoint 15 Social Investments.
What immediately struck me, watching Ben's demo, was that the Social features in SharePoint 2013 look an awful lot like the Neudeisc Pulse in SharePoint 2010.
My reaction? Now that we have SharePoint 2013 in Beta, it validates what Neudesic has been doing all along. The social computing features in SharePoint 2013 bear such an uncanny resemblance to those in Neudesic Pulse that we must be seeing some kind of convergence. 

Pulse is the Social Computing product from Neudesic. Like corporate facebook, Pulse is a stand-alone product, but it integrates well with SharePoint 2010.

Analyzing Pulse in SharePoint 2010 side-by-side with Social in SharePoint 2013, I have come to the conclusion that the similarities far outweigh the differences. The biggest differences, in my analysis, are:
  1. Pulse has been shipping for 3 releases now
  2. Pulse works great in SharePoint 2010
  3. Pulse does not require My Sites, and
  4. You can use Pulse stand-alone (without SharePoint) if you like.
Pulse also has awesome iPhone, Android and Windows Phone apps:
 
So I set out to write these blog posts; not so much to compare and contrast Pulse with SharePoint, but rather to analyze what makes social computing work best in the context of SharePoint applications. With my deep experience building collaborative software, my inside knowledge of Pulse, and my professional expertise in SharePoint, I feel uniquely qualified to convey my answers to the following key questions:
  1. What are the key features behind successful social computing in SharePoint?
  2. What are the high-impact applications where social really works? And
  3. How can I build these high-impact applications – either in SharePoint 2010 or in SharePoint 2013?

Let's start by looking at the technical elements that make the integration of social into SharePoint successful. Later I will demonstrate how, using these elements, to build compelling SharePoint applications that leverage social computing.

The Nuts and Bolts of Social Computing


These are the building blocks -- the core, Facebook-inspired features -- that are the nuts and bolts of social computing.

Micro-blogging
Micro-blogging is at the heart. You can read, post, and reply. The result is a threaded discussion; When merged with other threads we sometimes call this an activity stream.

Follow

What does it mean to Follow? To Follow an activity stream adds that stream to your newsfeed

In SharePoint 2013, you can follow:

  • People
  • Documents
  • Sites
  • Tags 
In Pulse in SP 2010 you can follow:
  • People
  • Posts
  • Groups
  • Tags
  • Systems
In Pulse, follow also creates a bookmark (“People followed by me”)

Liking and Mentioning

Both Liking and Mentioning create connections. You get a notification in your E-mail each time someone mentions you in a post.

Tagging and Rating

Tagging and Rating (or voting) are both a bit like democratic bookmarking. You use tags and votes to find stuff later.

 E-mail

Speaking of Mentioning: don’t forget E-mail! The E-mail in-box remains so deeply entrenched you cannot succeed without robust email integration. Notifications go to your inbox each time someone mentions you in a post. The E-mail contains a link back to the Activity Stream. This drives people back into the social tool which is good. As much as we all wish E-mail would become obsolete, it is not. It’s entrenched. It’s the boat anchor. Your social solution must integrate with E-mail or forget it.

So what kinds of collaborative applications really shine when enriched with social features?  And how do I create great social + collaborative applications now that we have such a rich tool chest to work with?
Four High Impact Social Computing Apps in SharePoint

Here's my short list of high-impact social computing applications in SharePoint:


Team collaboration around developing a document or presentation

A typical scenario for this application is when a sales or account team needs to collaborate around developing a response to an RFP. 

A well-designed team collaboration application focuses the social discussion on the document, doc set, or other work product that the team is developing. Your key design point for this kind of application is to present the work-product content as close to the discussion as possible.

Knowledge base -- or forum -- where community members vote on, or rate, documents, answers or posts

Knowledge management experts know the value of end-user feedback to refine, or filter a corpus of knowledge.  

The design point of a knowledge base, or forum, is to harness the knowledge of your people, leveraging that wisdom to cultivate and continuously refine the repository of content. The feedback must be leveraged to sort views and rank search results so that others can find the best, most useful stuff right away.


KPI dashboard where metrics are enhance by discussion; group leaders and members discuss and act on results


SharePoint has long been a great platform for Business Intelligence (BI) dashboards. Now social features only make that better.

Your key design goal for applications like this is to give dashboard users immediate access to the people who are responsible for the business or the process that the metrics are measuring.  Managers need to be able to ping a team member and ask why a certain KPI has turned red. If you are the one responsible for a certain outcome, you want to be able to post a comment that lets everyone (like your boss) know that you are aware of the metric, and you know what your team is doing about it.

Expertise Finder: Identifying and getting help from co-workers who have specific knowledge

I rarely see a specific application created for finding experts. Rather, finding expertiese is implemented by making sure Search includes detailed, up-to-date user profiles. 

Enterprises realize significant value from the ability to find co-workers who have specific knowledge.  While this may well be the most important app on my short list, it often comes for free as a by-product of a truly collaborative corporate culture.

The key elements of expertise finder are:
  • broad user adoption and participation in social technologies
  • detailed user profiles
  • effective search
In subsequent posts, we'll examine actual implementations of some of these applications, mostly using SharePoint 2013. We'll give screen shots and instructions for how to build these apps using out-of-the box features available in SharePoint 2013. 
 

Thursday, May 17, 2012

XSLT List View Web Part Best Practices, part 1

The Art and Science of the SharePoint XSLT List View Web Part

This post follows the presentation I gave to the Puget Sound SharePoint Users Group on May 17, 2012.
Click here to get the Visual Studio Solution "Spot" that I demonstrated as well as the Power Point deck I used in that presentation.




This post walks you through the steps to get a working XSLT file that customizes the way your SharePoint list is rendered using the SharePoint 2010 XSLT List View Web Part (XLV). This procedure works with any SharePoint list, stock or custom. You can use the resulting XSLT file as the starting point to create any customized display of your SharePoint list. Most importantly, this series of posts provides guidance and best practices on how to manage your XSLT file as part of a Visual Studio 2010 SharePoint solution.

Scenario:

  • Your UI designer creates a nice visual design.
  • Your client loves it
  • A central element of the UI should be a SharePoint list, but it doesn't look anything like a SharePoint list
  • Your UI designer gives you static HTML and CSS

What do you do?

  1. Use Visual Studio to develop your SharePoint List
  2. Obtain a Known-Good SharePoint XSLT file using SharePoint Designer to “harvest” the XSLT of your List View
  3. Create a “Deploy” Project Folder outside your Visual Studio Solution. include:
    • Your XSLT file
    • Your CSS file
    • You JS file, if any
  4. Set the XSL Link Property of your XSLT List View Web Part to point to your custom XSLT file in your Style Library
  5. Create a “LoadXSLT.ps1” script that load your XSLT and CSS from your Project Folder into the Style Library of your site
I know, I know: Yikes!! 
No worry. Attached Visual Studio Solution -- Spot -- contains the resulting project from these steps.
Subsequent posts explain the above steps in step-by-step detail.
The next blog post will walk you through how to create these elements of a known best-practices appraoch to developing this "News and Announcements" feature of your site maximizing the Out-Of-The-Box capabilities of SharePoint 2010.

Monday, May 14, 2012

Presentation on XSLT List View Web Part at PSSPUG May 17, 2012

I will be presenting at the next meeting of the Puget Sound SharePoint Users Group next Thursday, May 17th. The meeting goes from 6:30 - 8:30PM. Food and networking begin at 6:00PM. Michael Iem will be presenting at 6:35 on Measuring and Understanding SharePoint Performance and I will be presenting at 7:30 on the XSLT List View Web Part. The user group meeting is held at the Microsoft office (CIVICA Office Commons) at 205 - 108th Ave NE, Suite 400, Bellevue, WA 98004 . See http://www.psspug.org.