Sunday, October 16, 2011

SharePoint Online Hybrid Architecture Whitepaper

There is a new SharePoint Online Hybrid Architecture Whitepaper that has been published - http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27580. It is definitely worth a read and has some good stuff. I think it is a good place to start but there is a lot more too this.
I will be working on some SharePoint architecture blogs that discuss this along with general SharePoint Governance and Information Architecture. I have been having way too conversations with clients where people confuse the real spirit of governance making it too authoritative. It is not about locking down SharePoint; it is about setting up business services and service level agreements and then delivering capabilities on them. It is about setting up a real Information Architecture! More to come I promise.

Create InfoPath Form Instance through Workflow

Issue

Have you ever wanted to have an InfoPath form generated by a workflow? Well I thought it would be a simple task but I had to do some extra things to make it happen correctly.

I recently wanted to be able to generate an InfoPath form based on an event on a SharePoint Designer workflow. So I published my InfoPath form to a Form Library, added an action to create a list item and then ran the workflow. I believed this would work because I have created Word templates, associated them to content types and the word file would be created just fine with the appropriate template. The net result in this situation does not work. Instead the InfoPath form template (.xsn file) is created as a file instance. The InfoPath xml that I had expected was not there.

Solution

I found this article (http://www.bizsupportonline.net/blog/2009/06/create-infopath-forms-sharepoint-designer-workflow/) which I reviewed. My solution is a little bit different because I was building this solution in SharePoint Online in Office365 and I was not able to implement this exact solution. However I was given some clues and came up with the following.

My solution was to:

  • Publish the InfoPath form the same way I did before.
  • Then I created an instance of the InfoPath form xml and saved it to my desktop.
  • Then went to the form library configuration, advanced settings and turned on “Allow management of content types”.
  • Then clicked on the default Form Content Type.
  • Then clicked on Advanced Settings for the Form Content.
  • Then I selected Upload a new document template and selected xml template I saved locally.

The following is what I had.

image

The InfoPath form template (.xsn file) is still there behind the scenes and the form will render correctly through InfoPath form services.

There are a few limitations of this solution:

  • The user will not be able to create a new InfoPath form instance through the browser using the New Document button in the ribbon. What will happen is the InfoPath client will launched. This is not such a big deal because in my situation InfoPath forms will always be created through the workflow.
  • If the InfoPath form changes, you will have to publish the InfoPath form template (.xsn file) and then go through these steps again.

Monday, September 5, 2011

Happy Four Years Old

Thanks
It is amazing to see that I have been able to keep this blog going for the past 4 years. Through change jobs two times, continue being a top performer at work, having a second child, writing a book, etc. I have kept it going. I have to say thank you to all the readers, your feedback keeps me wanting to write.
Birthday Gift
As a reward, Google Blogger has given me a new interface as this month to write blogs. I had been using Windows Live Writer for the past year to format the blog better. However Google Blogger would continue to foul up the HTML and jack up the presentation for which I have dumped hours into fixing however still can never make perfect. The tool seems better now. I have not moved off Google because it is just too much work given that this is something I do in my personal time.
Stats
I started using Google Stats in May 2009. Here is how I have been doing, pretty happy.
clip_image001
Most popular posts since May 2009 are the following. The Silverlight series I wrote is mind boggling. I had no clue that would become what it did. It is funny because I got put on a contracting engagement for about 9 months doing all Silverlight project with no SharePoint work. Now I am back to really only focusing on SharePoint since I am working at Microsoft now. I am happy to see how popular my SharePoint 2010 architecture series has been as well.
clip_image003
What’s Next?
Expect to see a lot over the next few months on architecture, enterprise patterns and such for Office365 with a focus on SharePoint Online. There are a lot of smart people who are out there who know SharePoint well, but are missing the bigger picture and the strategic thinking of how to align SharePoint Online to create more architecturally sound solutions that save money for organization. A lot more to come there.

Friday, August 26, 2011

SharePoint 2010 Independent Market Analysis

Updated - 3/2012 - View new blog posting here

I get asked a lot about reasons to move to SharePoint 2010. I simply state, look at the how the market evaluates SharePoint.
Here is a great link managed by Microsoft that showing Gartner and Forrester reports - http://www.microsoft.com/presspass/itanalyst/default.mspx

As of right now, I recommend reading the following:
I suggest stay up to date with this site to find the latest reports.

Saturday, August 20, 2011

SharePoint 2010 SQL Server Encryption

I have been asked several times what SharePoint ability to encrypt data that resides the SQL Server databases. I was answering this question when I ran across this awesome presentation that I highly recommend. “SQL Transparent Data Encryption for SharePoint Content Databases” at http://technet.microsoft.com/en-us/edge/Video/ff711430. Just want the first few minutes of the video.

Smaller notes I usually bring up are:

· Row level encryption is not really possible as we do encryption at the database level.

· An important note is that the SQL connection from the SharePoint application layer to SQL server is done through a service account. Users are not directly authenticating and accessing data in the database.

· Documents themselves can have rights management applied so the BLOB is encrypted when it is stored in SharePoint. However metadata associated to the document is not encrypted and documents will not be searchable.

Using Transparent Data Encryption really is a great solution.

SharePoint 2010 Architecture Introduction

Introduction
I recently had a client ask be about how to get started on understanding the SharePoint 2010 architecture and how they should deploy. Unfortunately the answer is it depends based on your business requirements.
Gartner recognizes the SharePoint platform as a best of breed across all major workloads like web portal, enterprise content management (document management, web content management, records management, etc.), business intelligence, workplace social computing, search/enterprise search, and as an application development platform. Knowing this, the SharePoint platform delivers a single platform that is managed together helping agencies consolidate costs in people, process and technology. Plus SharePoint is tightly aligned to Office and Lync (instant messaging, sharing, meeting, and phone solution).
Now depending on what you will implement will depend on how you scale SharePoint 2010. Plus with many agencies, there is never just on SharePoint farm. There will be multiple SharePoint farms which will be configured to support the business requirements.
References
If you are trying to get an initial understanding of the SharePoint 2010 architecture, here are some good references:
· SharePoint 2010 Architecture - http://msdn.microsoft.com/en-us/library/gg552610.aspx - this is a good starting place if you are not familiar with SharePoint.
· SharePoint 2010 Technical Diagrams - http://technet.microsoft.com/en-us/library/cc263199.aspx - all the big picture of both physical and logical architecture.
· Hardware and Software Requirements - http://technet.microsoft.com/en-us/library/cc262485.aspx - I suggest reading this right off the bat.
Performance, scaling, business continuity topics always come up when starting to learn about SharePoint 2010. Here is a good place to start.
· Performance and capacity technical case studies (SharePoint Server 2010) http://technet.microsoft.com/en-us/library/cc261716.aspx - More good case studies.
· SharePoint 2010 Performance and Capacity whitepapers - http://technet.microsoft.com/en-us/library/ff608068.aspx - Whitepapers on specific workloads.
· SharePoint 2010 Capacity boundaries - http://technet.microsoft.com/en-us/library/cc262787.aspx - This is pretty detailed discussion on testing.
Now if you are familiar with SharePoint 2007 architecture:
· I have written a multiple part series on SharePoint 2010 architecture here- http://www.astaticstate.com/2010/01/sharepoint-2010-service-architecture.html
· I have another blog on scaling SQL Server because this is a critical component to SharePoint - http://www.astaticstate.com/2010/12/sharepoint-2010-high-availability-with.html.
· Here is a series on SharePoint 2010 Search - http://www.astaticstate.com/2010/12/sharepoint-2010-search-architecture.html
· Here is a series on FAST for SharePoint 2010 - http://www.astaticstate.com/2011/01/part-1-fast-for-sharepoint-2010.html
Office365
Finally it is also IMPORTANT to know when reviewing all these architectures, that SharePoint 2010 is the only portal technology on the market that software as a service (SaaS) cloud offering called Office365. This ultimately means major reduction on hardware and software that must be installed and managed, better service level agreements to your users, quicker deployment of solutions, better ability to scale, better ability to support telework and external collaboration, and the list really just goes on. Be in the business of creating business solutions.
I say the best way to learn about SharePoint Online Service is read the service level agreements which I have linked to here - http://www.astaticstate.com/2011/07/office365-slas.html

Thursday, August 18, 2011

BCS Connection to WCF Web Service

Introduction

I recently needed to connect BCS to some WCF services. The goal was show how I can then use the data out of those WCF services as a data source for FAST. Creating a WCF service and publishing it out through IIS was a pretty simple task. For search you only really need two web methods. First you will need a method that returns a full collection of the dataset which will be used as part of the indexing process. The second method you will need is a get item method that will get the details of a record in the data set.

Issue I ran into

However I ran into a challenge with getting the connection to work initially. When filling in the WCF connection window I would get errors like:

clip_image002

clip_image004

In the Event Logs I had some more detailed errors which really did not help much.

Could not obtain a proxy to WebService for LobSystem 'Default' in App Domain 'ConnectionDomain'. The full exception text is: Metadata contains a reference that cannot be resolved: 'http://demo2010a:8000/SoftwareService/SoftwareService.svc'.. The inner exception text is: <?xml version="1.0" encoding="utf-16"?><Fault xmlns="http://www.w3.org/2003/05/soap-envelope"><Code><Value>Sender</Value><Subcode><Value xmlns:a="http://schemas.xmlsoap.org/ws/2005/02/sc">a:BadContextToken</Value></Subcode></Code><Reason><Text xml:lang="en-US">The message could not be processed. This is most likely because the action 'http://schemas.xmlsoap.org/ws/2004/09/transfer/Get' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding.</Text></Reason></Fault>.

Could not obtain a proxy to WebService for LobSystem 'Default' in App Domain 'ConnectionDomain'. The full exception text is: There was an error generating the XML document.. The inner exception text is: The type System.Web.Services.Discovery.DiscoveryDocument was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically..

Resolution

After playing around with the configuration I finally found the following worked. Notice the “mex” extension added to the end of the Service Metadata URL. Once I had that done, just wire up the web methods like you would anything else in BCS.

clip_image005

Now here is another way to do this. Any service that has a wsdl description can be integrated as well. Notice here how I put the wsdl address for the Service Metadata URL.

clip_image006