24 July 2012

Welcome to SharePoint 2013 Apps

Along with the Farm solution and sand solution we are familiar with SharePoint 2013 another 3 mode of hosting for SharePoint 2013, this are app hosting model which will be running 100% out of the Farm in either in browser or in a webserver or in cloud.
App model are much cleaner simpler and upgrade process.
App Communicate with SharePoint via REST/OData/CSOM
App are granted permission to SharePoint via OAuth.
SharePoint hosted app – Run at browser implemented using JavaScript-client side app model.
Developer hosted app – Run in the web server or cloud, server side code. Using this model other language implementation says Eclipse or LAMP can be done.
Azure auto hosted app-   similar to developer hosted app but create its own database and web application for each tenant in the multitenant mode.

8 June 2012

Why SharePoint Solutions Fails

SharePoint applications are best suit for bucketed solutions.
SharePoint is powerful, but need to be used for what it is intended for. For All type of web applications SharePoint is not an answer. SharePoint should be best suited for bucketed solutions. Where the major processing take pace beyond SharePoint and SharePoint provides the results of that processing .SharePoint is not a good option for large data processing, large content management, complex ORM models etc. Using SharePoint for a small percentage of what SharePoint is capable of doing will be poor on ROI.
SharePoint is not a closed application but a frame work.
One of the myths on SharePoint is SharePoint is a finished Product capable of doing our entire requirement. Out Of Box is a common terminology that got popular with SharePoint. Many people think that SharePoint is a finished product and don’t need any tweaking or customization to fit our need. This is not absolutely true. For example If a Customer ask us can we have a Document Management System in SharePoint without any customization we will say yes and this is true to an extent , but without customization like applying the policies , retention logics the Document management system in SharePoint  can’t stay for long. Because governance is an important part of SharePoint Solution. A SharePoint solution without a governance plan can’t survive for long or can end in disaster.
SharePoint Capacity planning is important factor
Lack of proper capacity planning A SharePoint solution can fail, SharePoint internally use different patterns and ORM models to make the functionalities. Some of them add complexity if we don’t follow the capacity plans benchmarked by Microsoft. Like any other application servers from Microsoft stack proper infrastructure resources are required for SharePoint for its optimum performance. We also need to consider optimizing the use of servers and the application services running on them in a Farm.  
Performance Tuning and SharePoint
There is lot of room for optimizing SharePoint application from the way OOB SharePoint provides. It include thinning  master pages / web pages, using optimized model, throttling mechanisms, proper and best coding practices while customizations, using best and optimal cashing mechanisms that suit the application. Users will abandon SharePoint applications if it won’t have the expected  performance.
SharePoint is all about delegation
Unlike a.net application SharePoint is a framework that can be extended by the end user for the needs. An end user with the proper permission can extend the functionalities of the SharePoint application by adding new features web parts etc. Lack of knowledge on this will results in using SharePoint as .net application. In most companies SharePoint applications are used AS –IS delivered from a project. If a minor change need to be done like adding an OOB web part or in co-operating an in-house functionality in SharePoint involvement of a developer is not required. Not using the delegation capabilities of SharePoint again is not proper utilization of the SharePoint.
SharePoint is not a permanent storage solution so retention must be in consideration.
SharePoint uses Sql server to store its content, so if we are planning to use SharePoint to store the documents or other assets by time it will impact the Storage and Performance. So we need to implement retention policies for the content, archiving mechanisms etc. to withstand the content growth adhere to the business requirement. There should be proper plan and policy for what should be retained and kept and what duration it should be kept.
Governance in SharePoint is important.
Governance in SharePoint should be an outcome of standard policies, rules and regulation to keep the SharePoint intact optimal and durable. Governance comprises three areas: IT governance, information management, and application management. Training users and users adoption is also a part of Governance. Inadequate or nil governance will end up in SharePoint solution failures.

28 March 2012

Reporting in the SharePoint without SSRS integration

One way to create report in the SharePoint with source as list or external data sources is using rdlc files.
To create report using rdlc files the first thing we need is a rdlc template of the report. Using visual studio we can create a rdlc file referring to a particular data source.
To create a rdlc based report do the following steps.
  • Open the vs create a visual web part project and add a report viewer to the ascx page.
  • Now the next step is to create an rdlc file , for this add a new rdlc file from the Add > New Item > Reporting.
  • Drop a table in the rdlc file this will open a data source selection wizard.
  • Create a data Set and in the data source select sharepoint (in case the data source is from sharepoint)
  • Once this reference is added reselect the Object (where you selected the SharePoint option )in the selection and select particular lineitem template required, this can be a line item template of an existing list , or a new list we create to get the report template (once the rdlc file is created we can remove this list also).
Now map the columns in them as required.
So the design of the template is done.
  • Keep this rdlc file in the app root path.
  • Now the next steps is to bind the data .
//populate the data in a data table either using caml query or linq  (using caml is good for the performance)
DataTable items = dt;
//use server.mappath to direct to the rdlc file.
this.ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/po.rdlc");
// assign the datatable , note that the name parameter (first) will be same as that in the rdlc file(and should be unique for each report to avoid data mapping conflict.)
ReportDataSource rds = new ReportDataSource("PoData", items);
// and add the report data source to the reportviewer control as below.
this.ReportViewer1.LocalReport.DataSources.Add(rds);

  • Deploy the visual webpart to the desired webpart zone.

In case you need parameters to the report design it at the visual webpart so the query will filter out the data.

Happy reporting without sharepoint ssrs integration.

7 February 2012

Multilingual in SharePoint 2010

To Mutliligual Support
1. Install Language pack on all (wfe & app) servers in the farm.
2. Run PSConfig wizard on all servers.
3. Go to Site actions à site settings à site administration à Language Settings 
   and check the required language.
4. New language selection menu in the welcome menu.
To Modifiy Content
 To modify the content with different language export the resource file of that particular site language and import it after modifying the resource file. 
1. Site Actions à Site Settings à Site Administration à Export Translations.
2. Download the .resx file. Open it in a resource editor in vs.
3  After modifying the .resx file import it to the SharePoint website . While uploading make sure to select the exact language.
   Click on Site Actions à Site Settings à Site Administration à Export Translations 

5 October 2011

Accessing web service in SharePoint Online (Cloud –Office 365)

Accessing web service in SharePoint Online (Cloud –Office 365).
It was an end of a tiring day where I tried to consume a web service in the SharePoint online and finally I succeeded. Thanks to Sajid Mohammad who redirected me to the blog of Wictor , and a great thanks  to him for providing  MsOnlineClaimsHelper class.Un like in  Wictor’s  example  my requirement was to consume a web service.
So All need to do is that assign my webservice’s cookicontainer class to the claims helper’s cookiecontainer as follows.
objLists.CookieContainer = claimsHelper.CookieContainer;
The whole code will look like below.
try
{
MsOnlineClaimsHelper claimsHelper = new MsOnlineClaimsHelper("http://......./teamsite/_vti_bin/Lists.asmx", @"<username>", "<password>");
FileGET.Lists objLists = new FileGET.Lists();
objLists.CookieContainer = claimsHelper.CookieContainer;
objLists.Url = "http://dev22.sharepoint.com/TeamSite/_vti_bin/Lists.asmx";
XmlDocument xmlDoc = new System.Xml.XmlDocument();
XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");
XmlNode ndListItems = objLists.GetListItems("test", null, null, null, null, ndQueryOptions, null);
XmlTextReader reader = new XmlTextReader(ndListItems.OuterXml, XmlNodeType.Element, null);
//to display in my windows application
DataSet ds = new DataSet();
ds.ReadXml(reader);
dataGridView1.DataSource = ds.Tables[1];
}
catch (Exception ex)
{
 MessageBox.Show(ex.ToString());
}

----------------------------------------------------------------------------------------------------------------------------
Note : In case you are calling this with in a firewall dont forget to put the following ahead of the script.

if (WebRequest.DefaultWebProxy.Credentials == null)WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;

1 September 2011

File Tagging Folks + Taxonomy = Folksonomy

File tagging folks+ taxonomy= folksonomy.
Recently I came across a scenario where individual files need to be tagged by multiple people. So that tag based routing or audience targeting can be done. My initial idea was to add taxonomy to the file.
Using managed metadata column.
But here arise a problem that it is difficult to track that who tagged. The Alternative was to take out the tagging mechanism from the content, but still use the folksonomy taxonomy feature extent to a different list.
The approach is as follows:
Create a separate list with columns like file URI, tag, user who tagged it. There should be a mechanism to make the folksonomy to add to the term store on identification  of new term.my idea here is to travers e the existing taxonomy tree with a like search, or similar. And add valid terms, So added folksonomy will be emerged as taxonomy and help in the file tagging and classification.
Another issue was how to do automatic file tagging, this means by reading the content how a document can be tagged. This can be achieved to an extent only; the base to start with this is the term store management only. By traversing the terms in the hierarchy and hitting no of counts of the same in the file a file can be given an automatic tag. But this reading process may end up with deterministic result too.




12 August 2011

Kind a Gotcha

Problem : Save the site as a template missing.
Resolution : If you have “SharePoint Server Publishing” feature turned active in a SharePoint site (this is a web feature). You cannot Save the site as a template. This is because SharePoint 2010 by default stops creating site definition of a publishing site A Publishing site may have interdependencies that cannot be incorporated in a template when a template is getting created.
Problem : You are geting error while creating a search center site.
 Please check In the site collection fetures "SharePoint Server Publishing Infrastructure is Active", Because when you use a site creation with a new site template that use a diffrent master page , this feature need to be activated, otherwise publishing of the master page wont happen and hence fail the site creation.
Problem :
You are getting message "The operation could not be completed" when you connect to SharePoint from InfoPath.
Reason : The Site You are connecting missing a Root Site.InfoPath works only when you have a root site in the site collection.
Resolution : Create a Root Site in the site collection.
Problem: Error at Microsoft.Office.Server.Administration.UserProfileApplicationProxy.get_PartitionIDs() and in the error log.Current time is '2012-04-10T13:16:33.496Z' and allowed clock skew is '00:05:00'.
Resolution: All servers in the Farm should have the same time.Check all the servers in the farm have the same clock timing and in synch.

Problem: 503 errors after the credential change.
Resolution: in the iis in the credential reset the password of the app domain account.
Problem:The CLR has been unable to transition from COM context 0x1bd54fb0 to COM context 0x1bd55200 for 60 seconds. The thread that owns the destination

Resolution:This is a configuration change required issue. and need to set in the project propertiesDebug > Exceptions > Managed Debug Assistants (MDA), and then unchecking the ContextSwitchDeadlock option

Problem:Operation is not valid due to the current state of the object
Resolution:In valid assembly reference , comma missing or public key not correct
Problem:Object reference not set to an intance of object - while creating site collection using object model.
Resolution:Use web service to create site colloction
Problem:CREATE DATABASE permission denied in database 'master'.
Resolution:Add the app pool a/c as database creater in sql server.
Problem:While uploading file while migration after a limit getting the error as follows
The URL 'DocVault Library/mail_Sending_wf.wsp' is invalid. It may refer to a nonexistent file or folder, or refer to a valid file or folder that is not in the current Web.
Resolution:This issue is due to the wrong version of sql server integarted with the share point.
Express edition of sql server does not support files beyond a limt.
Problem:'AllDocStreams_CI' in database 'WSS_Content_44444' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.
Resolution:This issue was due to the database growth parameters are not properly set in the development database server.Resolved by setting the correct version of database with proper growth ratio.
Problem:Diffrence of situvation using Static Name and Name with list.
Resolution:Static name will work with the list item , while Name works with after and before properties.
names are used insted of static Name in the code.
Problem:The field you are tying to update is read only,while trung to update Created By(Author).
Resolution:Code defect which is fixed by overriding the normal sharepoint default setting for the Author.
Problem-Resolution:UTC date need to be used while Updating from event reciver.

Problem:Trying to use a SPWeb object that has been closed or disposed and is no longer valid
Resolution: insted of using (SPWeb myWeb = SPContext.Current.Web)  use
Problem: Application error on the webpart page.
Resolution:Put ?content=1 to show which webpart is giving error or fix.
using (SPWeb myWeb = SPControl.GetContextSite(Context).OpenWeb()) (never close SPContext.Current.Web)

Problem: Not able to open webpart page.
Resolution: put <url>?content=1 and then edit and remove errored webpart
or if subsite is not able to open use
_layouts/spcontnt.aspx?url=/<site>/<subsite>/default.aspx to get the web part page of the subsite , edit and edit and remove errored webpart.
or finally try reset the page to site defnition in the sp designer.

Problem: People Search not returning result for https site
Resolution: for https sps3s:// and for http sps3:// on the search location of mysite.
Also reset the crawl and do full crawl.

Problem: People search people image url not set.
Resolution: use powershell script to reset the picture url of the profile for all profiles.

Problem: The text box disabled while adding web reference
Resolution:Add ?wsdl at the end or click the service discription (up to asmx does not create the proxy , need the wsdl)