What is SharePoint ?

November 5, 2009

Having been priviledged enough to attend the second SharePoint conference this year and given the opportunity to see both Bill Gates and Steve Ballmer deliver the keynotes at these two events, one point became very clear. What is SharePoint? I have known the answer to this for some time and pleasantly surprised when Steve Ballmer did not have an answer to this that impressed me. It took to long for him to get the point across and by the time he did I had lost my will to live.

The point being that the CEO of Microsoft did not have the words to properly define his best selling product, where do we as mere mortals and sales people even start with this concept that at every release seem to consume more and more functionality and products under the banner of SharePoint.

Well I’m pleased to say that Steve’s lieutenants did not have difficulty in bringing the point across. The answer is pretty simple really. It is an Information Operating System. This might make it easier to help identify the types of problems customers currently have and can be suitably resolved on the SharePoint Platform

SharePoint can be viewed in two primary dimensions:

SharePoint as a Product

One as a product where the opportunities are broadly speaking directly related product core features. An example of this might be Document Management, Records Management, Search etc. These types of solutions often find themselves competing with best of breed products, and when compared on this basis more often than not it seems to be a relatively costly competitor. Depending on your licensing arrangements in place.

The following often misleading concept is that of using SharePoint product features and finding that they have shortcomings. Primarily this could be attributed to the design principles of the product not to be a best of breed but to provide a stable platform for building these types of solutions on top of.

These gaps are filled by ISVs focusing on a variety of areas including disaster recovery, migration and functional enhancements such as CRM and Project Management to name but a few. Considering al of these elements when evaluating the suitability of SharePoint for your needs will help inform your decision.

When extending the scope of the implementation you may indeed find that better ROI can be achieved, the following section considers this viewpoint.

SharePoint as a Platform

When we see SharePoint as the Information Operating System the opportunities are endless. Consider the Windows Platform, can we truly begin to name the number of solutions built on it each with a specific need and each with a set of requirements defined by a segment of the market that created the demand. These applications all have one thing in common, without the capabilities of the Operating System it would be impossible to build these in a cost effective fashion as each product would have to build their own mechanism of instructing the hardware on the appropriate instructions.

When taking into account the common elements that the applications in your organisation currently have and how many those are duplicated. Not only on the same platform but also across other platforms. Now consider the time and effort it took to construct these application features and add to that the overhead of managing them on a daily basis. Considering these elements to inform the design of single platform for implementation of enterprise wide applications might yield more returns than can be imagined. Simple and easy, however we should not under estimate the time and effort to get to this “nirvana”.

It does help to take step back and define clearly the objectives , formulate a strategy and subsequently a migration plan. Keeping all implementations aligned with benefits realisation against a Clearly Defined Business Case.

SharePoint_Business_Value.jpg


How to write technical documentation

November 4, 2009

This is absolutely brilliant. If only we could all use this approach.

Jeff Moser has written an excellent article describing how the Advanced Encryption Standard works. He uses an very accessible paradigm – the cartoon. He layers the description starting with a simple overview and progressively getting into more and more detail. Because the story is layered, it is complete at each stage before more detail is added. The audience has the opportunity to leave when they know enough.

[From How to write technical documentation...]

SOA and Why it Matters

November 4, 2009

Services, clouds, and mashups: Why buy enterprise software?

In previous ZapFlashes, we talked about how the emergence of services at a range of disparate levels combined with evolutions in location- and platform-independent, on-demand, and variable provisioning enabled by clouds, and rich technologies to facilitate simple and rapid service composition will change the way companies conceive of, build, and manage applications.

Instead of an application as something that’s bought, customized, and integrated, the application itself is the instantaneous snapshot of how the various services are composed together to meet user needs. From this perspective, enterprise software is not what you buy, but what you do with what you have.

One outcome of this perspective on enterprise software is that companies can shift their spending from enterprise software licenses and maintenance (which eats up a significant chunk of IT budgets) to service development, consumption, and composition.

This is not just a philosophical difference. This is a real difference. While it is certainly true that services expose existing capabilities, and therefore you still need those existing capabilities when you build services, moving to SOA means that you are rewarded for exposing functionality you already have.

Whereas traditional enterprise software applications penalize legacy because of the inherent cost of integrating with it, moving to SOA inherently rewards legacy because you don’t need to build twice what you already have. In this vein, if you already have what you need because you bought it from a vendor, keep it – but don’t spend more money on that same functionality. Rather, spend money exposing and consuming it to meet new needs. This is the purview of good enterprise architecture, not good enterprise software.

When you ask these people to show you their enterprise software, they’ll simply point at their collection of Services, Cloud-based applications, and composition infrastructure.
The resultant combination of legacy service exposure, third-party service consumption, and the cloud (x-as-a-service) has motivated the thinking that if you don’t already have a single-vendor enterprise software suite, you probably don’t need one.

We’ve had first-hand experience with new companies that have started and grown operations to multiple millions of dollars without buying a penny of enterprise software. Likewise, we’ve seen billion-dollar companies dump existing enterprise software investments or start divisions and operations in new countries without extending their existing enterprise software licenses. When you ask these people to show you their enterprise software, they’ll simply point at their collection of services, cloud-based applications, and composition infrastructure.

Some might insist that cloud-based applications and so-called software-as-a-service (SaaS) applications are simply monolithic enterprise software applications deployed using someone else’s infrastructure. While that might have been the case for the application service provider (ASP) and SaaS applications of the past, that is not the case anymore. Whole ecosystems of loosely-coupled service offerings have evolved in the past decade to value-add these environments, which look more like catalogs of service capabilities and less like monolithic applications.

Want to build a website and capture lead data? No problem — just get the right service from Salesforce.com or your provider of choice and compose it using web services or REST or your standards-based approach of choice. And you didn’t incur thousands or millions of dollars to do that. [From You'll be far better off in a future without enterprise software | Dana Gardner’s BriefingsDirect | ZDNet.com]

Publish InfoPath 2007 Form as PDF Programmatically C#

December 19, 2008

Simple way to publish a Infopath Form to PDF using C# and VSTA

Clients require the following download:

namespace Template_Test

{


///


///


///


public
partial
class
FormCode

{


///


/// Internal Startup


///


public
void InternalStartup()

{

EventManager.FormEvents.Submit += new
SubmitEventHandler(FormEvents_Submit);

}


///


/// Form Submit Event


///


///


///


public
void FormEvents_Submit(object sender, SubmitEventArgs e)

{


//SUGGEST WE FIND A SAFE AND PERSONAL PLACE TO STORE THE FILE, NO MUCKING WITH PERMISSIONS


string fileName = string.Format(@”{0}\{1}.pdf”, System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData), “TestFile”);


//CHANGE THE VIEW TO THE REPORT VIEW (IF SUCH A THING IS DEFINED)


this.Application.ActiveWindow.XmlForm.ViewInfos.SwitchView(“Public”);


//EXPORT THE FILE TO PDF


this.CurrentView.Export(fileName, ExportFormat.Pdf);


//CONVERT THE FILE TO BINARY READING IT FROM THE APPLICATION DATA FOLDER


string base64 = ConvertPDFtoBinary(fileName);


//STORE THE FILE BLOB IN THE CURRENT XML DOCUMENT

StoreFileData(base64);


//TEST METHOD TO PERSIST THE FILE FROM BASE64

ConvertBinaryToPDF();

}


///


/// Store the File Data in the current xml structure as base64


///


///
string containing base64 data


public
void StoreFileData(string base64)

{


XPathNavigator navigator = this.MainDataSource.CreateNavigator();


XPathNavigator field = navigator.SelectSingleNode(“//my:assetTracking/my:fileStorage”, this.NamespaceManager);


//CHECK IF “nil” ATTRIBUTE EXISTS ON THIS NODE

DeleteNil(field);

field.SetValue(base64);

}


///


/// Check if the “nil” attribute exists on this node


///


///
Node to check


public
void DeleteNil(XPathNavigator node)

{


if (node.MoveToAttribute(“nil”, “http://www.w3.org/2001/XMLSchema-instance”))

node.DeleteSelf();

}


///


/// Convert PDF file to Binary string base64


///


///
Name of the file


///


public
string ConvertPDFtoBinary(string fileName)

{

System.IO.FileInfo fileInfo = new System.IO.FileInfo(fileName);


byte[] buffer = new
Byte[fileInfo.Length];


using (System.IO.FileStream fileStream = fileInfo.OpenRead())

{

fileStream.Read(buffer, 0, buffer.Length);

}


return System.Convert.ToBase64String(buffer);

}


///


/// Convert Binary base64 string back to a file and save in application data


///


///


/// This is simply a test method to prove the concept


///


public
void ConvertBinaryToPDF()

{


XPathNavigator navigator = this.MainDataSource.CreateNavigator();


XPathNavigator field = navigator.SelectSingleNode(“//my:something/my:fileStorage”, this.NamespaceManager);


string base64 = (field.Value as
string);


if (base64 is
string)

{


byte[] buffer = System.Convert.FromBase64String(base64);


using (FileStream fileStream = new
FileStream(string.Format(@”{0}\{1}.pdf”, System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData), “TestFileFromBinary”), FileMode.CreateNew))

{

fileStream.Write(buffer, 0, buffer.Length);

fileStream.Close();

}

}

}

}

}

Using Isolated Storage and a Singleton to store a history

February 8, 2007

The Challenge

  • Store some search results for a custom application on the users desktop.
  • Find a tidy way to maintain state whilst maintaining performance.

The Solution

Use the Isolated Storage to persist the data you wish to maintain whilst keeping it alive using a Singleton class to avoid multiple I/O.

The sample

Principles of Good Software Architecture

December 5, 2006

Why is this one of the hardest things for software

Model View Controller and a good friend…

December 4, 2006

I had the pleasure of working with Robbie Gibbon , he managed to recently get some of his thoughts published on MVC and his own creation.

Have a look…

Nice work !