Welcome to MSDN Blogs Sign in | Join | Help

Another CRM -> Sharepoint integration

Here is my first blogpost in English since I received requests from non speaking Swedes. The MSCRM team, Kjell-Sverre Jerijærvi (Integrating team-sites into MSCRM (part II)) and allot of others has published different ways of integrating MSCRM with Sharepoint. Guess what! Here is another solution actually made back in 05’ as a Proof of concept solution… Each Account has its own sharepoint library structured under an alphabetic label (dummy library). This is done initial on setup of libraries A,B,C,D etc. A custom Sharepoint template is used for MSCRM look and feel (not in scope of this blogpost)

For example Alfa Demo Account is stored as own library under letter A with it's url stored on the MSCRM.

SPSite site = null;

try

{

           site = new SPSite(wssServerUrl);

          

           SPSite newSite = site.SelfServiceCreateSite(rootUrl, siteName,

                      description, 1053, "STS", @"custom\mscrm", "Admin",

                      "mscrm@custom.local", @"custom\mscrm", "Admin", "mscrm@custom.local");

          

           SPWeb web = newSite.OpenWeb();

           web.Webs.Add(nextLevelSiteName, nextLevelSiteName, description, language, template, false, false);                                                   

}

catch (SPException err)

{

           System.Diagnostics.Debug.WriteLine(err.Message);

           throw;

}

 

catch (Exception err)

{

           System.Diagnostics.Debug.WriteLine(err.Message);

           throw;

}

finally

{

           site.Dispose();

}

 

 

A new chrome remover file is stored under its own web.


MSCRM_iframe.aspx cleaner removes chromes from library files

 

<%@ Page Language="C#" %>

<%string sUrl = Context.Request["url"];%>

<!DOCTYPEHTMLPUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

<head>

<title>MSCRM Integration</title>

<scriptlanguage="Jscript">

var iNavCount=0;var strValidPages="AllItems.aspx,Upload.aspx,Checkin.aspx,EditForm.aspx,DispForm.aspx,Versions.aspx,SubNew.aspx";var strOriginalUrl="<%=sUrl%>";function evReadyStateChange()

{var oFrm=document.frames.mscrmShowPage;var ofrmElement=event.srcElement;try{var sDoc=oFrm.location.pathname;sDoc=sDoc.substring(sDoc.lastIndexOf("/")+1);if(ofrmElement.readyState=='loading'){ofrmElement.style.display="none";oFrm.onerror=function(){return true;}}else if(ofrmElement.readyState=='complete'){var bValid=false;iNavCount++;var arrTmp=strValidPages.split(",");for(var s in arrTmp)if(arrTmp[s]==sDoc)bValid=true;if(!bValid){document.location.assign("MSCRM_error.aspx?rUrl="+location.href);}else{try{var oTable=oFrm.document.all.tags("table")[0];oTable.rows(0).style.display="none";oTable.rows(1).style.display="none";oTable.rows(2).cells(0).style.display="none";oFrm.document.all("diidEditInGridButton")[0].parentNode.parentNode.style.display="none";oFrm.IMNShowOOUI=function(){return false;};}catch(e){}

oFrm.document.body.insertAdjacentHTML("beforeEnd","<a href='#' onclick='window.open(location.href)' class='ms-formdescription' style='position:absolute;top:10px;right:10px;color:blue'>In new window</a>");ofrmElement.style.display="inline";}}}

catch(e)

{}}

</script>

  </ head >

  < body style ="margin:0 0 0 0">  

<%if (sUrl!=null) {%>

           <iframeid="mscrmShowPage"frameborder="0"height="100%"width="100%"onreadystatechange="evReadyStateChange()"style="display:none"src="<%=sUrl%>"></iframe>

<%}%>

  </ body >

</html>

 

On MSCRM server a new virtual directory (or new web according to ISV rules) holds files to link it all to WSS or Sharepoint side.

<divclass="tab"id="tabBody1"style="DISPLAY: inline">

<tableid="Table0"style="TABLE-LAYOUT: fixed"height="100%"cellSpacing="0"cellPadding="3"width="100%">

<tr>

<td>

<iframeid="Iframe0"frameborder="0"width="100%"height="100%"src="<%Response.Write(ConfigurationSettings.AppSettings["PathToMSCRM"].ToString());%>/SharePointConnector/_redirect.aspx?<%Response.Write(Request.QueryString);%>&Folder=1"></iframe>

</td>

</tr>

</table>

</div>

Clip from AccountCreateFrame.aspx .


I added 2 keys in MSCRM’s web.config for dynamic settings

<appSettings>

<addkey="PathToMSCRM"value="http://crm/Beta.Crm.Sharepoint/"/>

<addkey="SharePointServerIframe"value="http://sharepoint/_layouts/CRM/MSCRM_iframe.aspx?url="/>

</appSettings>

 


I prefer to add everything on the leftside navigation and that could be easily done by modification of ISV.config  or by injecting js script in from onLoad



Documents added in ISV.config pointing <PathToMSCRM> Accountcreateframe.aspx

 

You can download all files here and hopefully everything is clearer when you look at the code J

NOTE!!! You are required to have licenses for SharePoint server

Published Saturday, March 24, 2007 1:36 PM by Jonas Deibe
Attachment(s): Not Supported example code.zip

Comments

# " + title + "

Saturday, March 24, 2007 10:40 AM by " + title + "

# http://google.com/search?hl=en&rls=gglg,gglg:2006-19,gglg:en&q=iframe+response.write+readystate

Monday, May 14, 2007 2:47 PM by TrackBack

# context.Request.SaveAs

I have a HTTP handler as shown below. It works for one user (that's me), but not for other users on the fareast.corp.microsoft.com domain. I am on the same domain. What the problem could be?

public class SyncHandler : IHttpHandler

   {

       byte[] fileBytes = new byte[256];

       public bool IsReusable

       {

           get { return false; }

       }

       public void ProcessRequest(HttpContext context)

       {

           context.Request.SaveAs(@"c:\\request.txt", true);

           context.Response.Write("From main handler ");

       }

   }

COuld it be that the handler dll, in which this class is defined, doesn't allow other users to access "c:\"? Please advise. I couldn't find another place for this query. My apologies for any inconvenience.

I am using handler to process POST requests for a SP site. So I have set WSS trust settings properly.

Saturday, October 06, 2007 7:58 AM by prasadrn

# Vikodine and valium.

Drug valium. Buy valium. Valium. Valium causing depression. Valium liquid form.

Saturday, July 26, 2008 12:30 AM by Buy valium.
Anonymous comments are disabled
 
Page view tracker