Welcome to MSDN Blogs Sign in | Join | Help

Service Pack 2 Update

The public update for the Service Pack 2 expiration date issue is now available for download. 

The update can be applied before or after Service Pack 2 installation.  If the update is applied prior to installing Service Pack 2 it will prevent the expiration date from being improperly activated during installation of Service Pack 2, if it is applied after Service Pack 2 it will remove the expiration date incorrectly set during installation of Service Pack 2.

More info here

 

Important Information on MOSS 2007 Service Pack 2

If you are planning to install MOSS 2007 SP2 or already installed it please read the following important announcement which just posted by SharePoint Team Blog:

Attention: Important Information on Service Pack 2 

 

 

 

Posted by AMazaheri | 1 Comments
Filed under: ,

IIS 7.0 and RequestLimitsElement

As we all know in ASP.NET we can configure the maximum length of the request using httpRuntime's  "maxRequestLength" attribute (By default this is set to 4KB and SharePoint uses 50MB as a default value). While this setting works with IIS 6.0, in IIS 7.0 a new attribute "RequestLimitsElement" needs to be configured as well to allow uploading files larger than 30 MB through HTTP.

More information can be found here and KB944981.

 

 

WSS 3.0 and MOSS 2007 SP2

Just a quick note that the SP2 for WSS 3.0 and MOSS 2007 will be available on April 28th 2009! More information can be found here.

Microsoft Certified Master program for SharePoint 2007

I just wrapped up an intensive Three week MCM training up in Redmond and wanted to share couple of posts on the program from colleagues who attended the R2 (Beta) for folks who are interested:

As soon as I get a chance I will share my experience as well, also Arpan Shah had a great post on MCM which can be found here.

Update:

I just found out today that I am officially a MCM for SharePoint 2007!

 

Developing a custom MySite host site definition using VSeWSS 1.3

In MOSS 2007 as part of the SSP provisioning process “SPSMSITEHOST” site definition is being used to provision the MySite host (Root site) which provides access to user profile information through “person.aspx” and “SPSMSITE” site definition used to provision a personal site collection for each individual user.

One thing to consider is while each user owns a seperate site collection as personal site, MySite host is shared among all users and changes to “Person.aspx” will affect all users. Feature Stapling is my method of choice for customizing or extending the OOB “SPSMSITE” features as explained in this great post by Steve Peschka. As for customizing the MySite host, in most cases changes should be applied directly to “Person.aspx” file or the related "ONET.XML”. As best practice it is always recommended not to modify the OOB site definitions and although SharePoint Designer can be used to apply changes to “Person.aspx”(which leaves the page as un-ghosted) in scenarios where changes should be deployed from one environment to another (e.g. from Development to QA and eventually Staging and Production) leveraging a custom site definition wrapped in a solution package is a better approach.

Following explains the steps to create and deploy a custom MySite host site definition based on the OOB “SPSMSITEHOST” site definition using Visual Studio 2008 extensions for Windows SharePoint Services v 1.3 and STSADM command:

  1. Create a new project using “Blank Site Definition” template 
    image
  2. In VS 2008 copy over “ONET.XML”, “Person.aspx”, “Default.aspx”, “Discussion.aspx” and “Blog.xsl” files from “12\Templates\SiteTemplates\SPSMSITEHOST” folder under “CustomMSITEHost"\Site Definition”
    ScreenHunter_03 Feb. 18 14.58
     
  3. Make sure to add the required namespaces to the <Project> element in the new “ONET.XML” file and change other sections if required

    ONET.XML

    <?xml version="1.0"?>

    <Project  Revision="2" xmlns:ows="Microsoft SharePoint" xmlns="http://schemas.microsoft.com/sharepoint/" SiteLogoUrl="/_layouts/images/mysite_titlegraphic.gif">

    </Project>

  4. Change the “ID” value from 1 to 0 in “WebtempCustomMSITEHOST.XML” so it references the default configuration in “ONET.XML”

    webtempCustomMSITEHOST.XML

    <?xml version="1.0" encoding="utf-8"?>

    <Templates>

      <Template Name="CustomMSITEHOST" ID="10001">

        <Configuration ID="0" Title="CustomMSITEHOST" Description="" Hidden="FALSE" ImageUrl="/_layouts/images/stsprev.png" DisplayCategory="Development" />

      </Template>

    </Templates>

  5. Modify the “Person.aspx” file (In this example a border attribute is added to the html table for “Business Card” section)

    Person.aspx

    <!-- business card -->

    <table cellspacing=0 cellpadding=0 width="100%" style='table-layout:fixed;word-wrap:break-word;' border=”1”>

    <tr>

    <td class="ms-vb ms-announcementtitle ms-profilevaluelarge" id="ProfileViewer_ValueTitleDept">

     <SPSWC:ProfilePropertyValue PropertyName="Title" class="ms-profilevalue" runat="server" /><SPSWC:ProfilePropertyCheckValue PropertyNames="Title,Department" runat="server" Text=", "/><SPSWC:ProfilePropertyValue PropertyName="Department" class="ms-profilevalue" runat="server" />

    </td>

    </tr>

    <tr>

    <td class="ms-vb ms-announcementtitle" id="ProfileViewer_ValueOfficePhone">

    <span class="ms-profilevaluesmall"><SPSWC:ProfilePropertyValue PropertyName="Office" class="ms-profilevalue" runat="server" /><SPSWC:ProfilePropertyCheckValue PropertyNames="Office,WorkPhone" runat="server" Text=" &nbsp; "/><SPSWC:ProfilePropertyValue PropertyName="WorkPhone" dir="ltr" class="ms-profilevalue" runat="server" /></span>

    </td>

    </tr>

    <tr>

    <td valign=top class="ms-descriptiontext" id="ProfileViewer_ValueAboutMe">

  6. Switch to WSP view and make sure that all the elements and files included in solution package
    ScreenHunter_07 Feb. 20 14.19

  7. From “Solution Explorer” tab, build and deploy the package
       ScreenHunter_11 Feb. 20 21.39
  8. Confirm that the solution package has been deployed successfully, at this point "My Profile" information should be displayed via OOB “Person.aspx”
    ScreenHunter_10 Feb. 20 21.37
  9. Delete the root MySite host site collection and provision a new site collection based on the custom template (i.e. CustomMSITEHost)
    ScreenHunter_12 Feb. 20 21.50
  10. Refresh the profile page and notice the change
    ScreenHunter_13 Feb. 20 21.51
Posted by AMazaheri | 7 Comments

Troubleshooting team site's default page errors caused by adding faulty web part

In cases when SharePoint cannot load the default page for a team site caused by adding a faulty web part, "Web Part Maintenance" page can help the site admin to remove the fault web part or reset the page to its default setting. While a link to this page is available on the "Edit Item" form for pages added to document library, adding "?contents=1" to the end of the URL for default page will cause a redirect to the "Web Part Maintenance" page for default.aspx.

 

More info can be found at : Customize Web Parts

 

Unable to refresh the external connection via browser when Excel Services running in Trusted Subsystem mode

On standalone configuration where ECS (Excel Calculation Services) and Microsoft SQL server reside on same machine, external resources such as tables and cubes should be accessible via Office Data connections (ODC) in Trusted Subsystem mode (Default settings) using SSO authentication (In farm scenarios where ECS resides on a dedicated machine Constraint Kerberos delegation is required for Integrated windows Auth and ECS access mode should be modified from Trusted Subsystem to Delegation via STSADM -o set-ecssecurity command).

In cases that separate accounts are being used for SSP and SSO service/admin/configuration, you will get the following error while trying to refresh a connection:

image

image

In order to resolve this issue, I usually create an AD group (e.g. SSOAdmin) and add the SSP and SSO admin accounts as members and set the group as SSO and Application definition administrators in SSO configuration page as follows:

image

More detail on this issue can be found on Ten Tips for Using SharePoint Server 2007 with Excel Services.

Posted by AMazaheri | 0 Comments
Filed under: ,

Server Upgrade and Migration Tool for Microsoft Office InfoPath

The Server Upgrade and Migration tool allows a SharePoint farm administrator to change hard-coded URLs in InfoPath form templates, UDC files, and content types to ensure that the form templates continue to work correctly in the following circumstances:
  • When performing a gradual upgrade from Microsoft Windows SharePoint Services 2.0 to Microsoft Windows SharePoint Services 3.0 or from Microsoft Office SharePoint Portal Server to Microsoft Office SharePoint Server 2007.
  • When migrating InfoPath forms and form templates from one Windows SharePoint Services 3.0 or Office SharePoint Server 2007 or Web site collection to another.
And can be downloaded here.

December Cumulative Update for MOSS 2007 and WSS 3.0 is now available for download!

December Cumulative Update for Office SharePoint Server 2007 and Windows SharePoint Services 3.0 is now available for download: 

December Cumulative Update for Windows SharePoint Services 3.0
December Cumulative Update for Microsoft Office Servers

More information can be found here.

 

Support for WSS 3.0 and MOSS 2007 withouht SP1 will end on January 13th 2009

Per our "Lifecycle Supported Service Packs" link the support for WSS 3.0 and MOSS 2007 without SP1 will end on January 13th 2009 and it is recommended to apply SP1 before the deadline to be in supported state.

Quick Deploy link is disabled even when user is a member of Quick Deploy group and Quick Deploy job is enable for the Content deployment path

I was asked by couple of my customers, why the "Quick Deploy" link under Tools on Page Editing toolbar is disabled even though the user is a member of "Quick Deploy Users" group and Quick Deploy job is already enabled for the Content Deployment path:

image

 

Solution:

  1. After modifying the change make sure to approve and publish the page
  2. From "Site Actions" menu select "Show Page Editing Toolbar"
    image
  3. "Quick Deploy" option should be enabled under Tools
    image
  4. To verify that the Quick Deploy job is created check the following hidden list: http://[site name]/Quick%20Deploy%20Items/AllItems.aspx
    image
Posted by AMazaheri | 0 Comments
Filed under:

Customizing High Confidence Search Result for People search in MOSS 2007

OOTB when searching for a person using "PreferredName", "WorkEmail", "UserName" and "AccountName", along with the core search result (Displayed via Search Core Result webpart) person's information is also displayed using "Search High Confidence Results" webpart (Same webpart used for Best bet) as exact match.

image

By default following properties are included in the high confidence search result:

  • Title
  • Skills
  • Work Email
  • Work Phone
  • Department
  • Office
  • About Me
  • Responsibility

Following steps allows administrators to add additional information (e.g. Cell Phone or any custom profile property) to the resultset.

Step 1

From "Metedata Property Mapping" page select and edit any of the available High Confidence Display Properties (HighConfidenceDisplayProperty12-HighConfidenceDisplay15):

image

And from "Edit Managed Property" page map it to the desired profile property:

image

Step 2

Run a full crawl on a content source which contains sps3://[Mysite web application url] as one of the entries in start addresses list:

image

Step 3

On "results.aspx" or "peopleresults.aspx" replace the "Search High Confidence Results" webpart's XSLT with the following:

XML

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xmp><xsl:copy-of select="*"/></xmp>
</xsl:template>
</xsl:stylesheet>

And make sure that the profile property added in step 1 is included in the resultset:

image

Note: Make sure to save the original XSLT before applying the above change. 

Step 4

Add a reference to the "highconfidencedisplayproperty12" in the original XSLT as follows:

XML

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:param name="BBLimit">3</xsl:param>

<xsl:param name="DisplayDefinition">True</xsl:param>

<xsl:param name="DisplayDescription">False</xsl:param>

<xsl:param name="DisplayHCDescription">False</xsl:param>

<xsl:param name="DisplayHCImage">True</xsl:param>

<xsl:param name="DisplayHCProps">True</xsl:param>

<xsl:param name="DisplayHCTitle">True</xsl:param>

<xsl:param name="DisplayTerm">True</xsl:param>

<xsl:param name="DisplayTitle">True</xsl:param>

<xsl:param name="DisplayUrl">True</xsl:param>

<xsl:param name="ResultsPerTypeLimit">1</xsl:param>

<xsl:param name="DisplayST">True</xsl:param>

<xsl:param name="DisplayBB">True</xsl:param>

<xsl:param name="DisplayHC">True</xsl:param>

<xsl:param name="ResponsibilityText" />

<xsl:param name="SkillsText" />

<xsl:param name="HighConfTitle" />

<xsl:param name="IsFirstPage">True</xsl:param>

<xsl:param name="BestBetTitle"></xsl:param>

<xsl:template match="All_Results/SpecialTermInformation">

 <xsl:variable name="keyword" select="Keyword" />

 <xsl:if test="$DisplayST = 'True'" >

   <xsl:if test="($DisplayTerm = 'True'and string-length($keyword) &gt; 0) or ($DisplayDefinition = 'True' and string-length(Description) &gt; 0)" >

     <div class="srch-BB-SpecialTerm">

       <xsl:if test="$DisplayTerm = 'True'and string-length($keyword) &gt; 0"> 

         <span class="srch-BB-SpecialTerm">

           <img src="http://blogs.msdn.com/_layouts/images/star.gif" alt="" />

           <b>

           <xsl:value-of select="$keyword"/>

           </b>

         </span>

       </xsl:if>

       <xsl:if test="$DisplayDefinition = 'True'" >     

         <xsl:value-of disable-output-escaping="yes" select="Description"/>

       </xsl:if>  

     </div> 

   </xsl:if>  

 </xsl:if>

</xsl:template>

<xsl:template match="All_Results/BestBetResults/Result">

 <xsl:if test="$DisplayBB = 'True'" >

  <xsl:if test="position() &lt;= $BBLimit" >

  <xsl:variable name="url" select="url"/>

  <xsl:variable name="id" select="id" />

  <div class="srch-BB-Result">

  <xsl:if test="$DisplayTitle = 'True'" >

    <span class="srch-BestBetsTitle">

     <img src="http://blogs.msdn.com/_layouts/images/sts_site16.gif" alt="" />

     <a href="{$url}" id="{concat('BBR_',$id)}">

      <xsl:value-of select="title"/>

     </a>

    </span>

  </xsl:if>

  <xsl:if test="$DisplayDescription = 'True' and description[. != '']" >

      <div class="srch-BB-Description">

      <xsl:value-of select="description"/>

      </div>

  </xsl:if>

  <xsl:if test="$DisplayUrl = 'True'" >

     <span class="srch-BB-URL">

     <a href="{$url}" id="{concat('BBR_U_',$id)}" dir="ltr">

      <xsl:value-of select="$url"/>

     </a>

     </span>

  </xsl:if>

  </div>

  </xsl:if>

 </xsl:if>  

</xsl:template>

<xsl:template match="All_Results/HighConfidenceResults/Result">

 <xsl:if test="$DisplayHC = 'True' and $IsFirstPage = 'True'" >

  <xsl:variable name="prefix">IMNRC('</xsl:variable>

  <xsl:variable name="suffix">')</xsl:variable>

  <xsl:variable name="url" select="url"/>

  <xsl:variable name="id" select="id"/>

  <xsl:variable name="pictureurl" select="highconfidenceimageurl"/>

  <xsl:variable name="jobtitle" select="highconfidencedisplayproperty1"/>

  <xsl:variable name="workphone" select="highconfidencedisplayproperty2"/>

  <xsl:variable name="department" select="highconfidencedisplayproperty3"/>

  <xsl:variable name="officenumber" select="highconfidencedisplayproperty4"/>

  <xsl:variable name="preferredname" select="highconfidencedisplayproperty5"/>

  <xsl:variable name="aboutme" select="highconfidencedisplayproperty8"/>

  <xsl:variable name="responsibility" select="highconfidencedisplayproperty9"/>

  <xsl:variable name="skills" select="highconfidencedisplayproperty10"/>

  <xsl:variable name="workemail" select="highconfidencedisplayproperty11"/>

  <xsl:variable name="cellphone" select="highconfidencedisplayproperty12"/>

  <div class="srch-HCMain ">

  <span class="srch-HCSocDistTitle">

    <xsl:value-of select="$HighConfTitle" />

  </span>

  <table class="psrch-HCresult" CELLPADDING="0" CELLSPACING="0" BORDER="0" width="100%">

    <tr>

      <td class="psrch-imgcell" width="0%">

        <xsl:if test = "$DisplayHCImage = 'True'">

          <table class="psrch-profimg" CELLPADDING="0" CELLSPACING="0" BORDER="0" WIDTH="77px" HEIGHT="77px">

            <tr>

              <td align="middle" valign="middle">

                <a href="{$url}" id="{concat('HSR_IMGL_',$id)}" title="{$url}">

                  <xsl:variable name="imgid" select="concat('HSR_IMG_',$id)"/>

                  <xsl:choose>

                    <xsl:when test = "string-length($pictureurl) &gt; 0">

                      <img id="{$imgid}" src="{$pictureurl}" alt="{$preferredname}" border="0" onload="resizeProfileImage('{$imgid}')"/>

                    </xsl:when>

                    <xsl:otherwise>

                      <img id="{$imgid}" src="http://blogs.msdn.com/_layouts/images/no_pic.gif" alt="{$preferredname}" border="0" onload="resizeProfileImage('{$imgid}')"/>

                    </xsl:otherwise>

                  </xsl:choose>

                  <script>

                    window.setTimeout("resizeProfileImage('<xsl:value-of select="$imgid"/>')", 1)

                  </script>

                </a>

              </td>

            </tr>

          </table>

        </xsl:if>

      </td>

      <td valign="top" class="psrch-propcell" width="100%">

        <span class="psrch-Title">

          <img border="0" height="12" width="12" src="http://blogs.msdn.com/_layouts/images/imnhdr.gif" onload="{concat($prefix, $workemail, $suffix)}" ShowOfflinePawn="1" id="{concat('HSRP_',$id)}" />

          <a href="{$url}" id="{concat('HSR_',$id)}">

            <xsl:value-of select="$preferredname"/>

          </a>

        </span>

        <br/>

        <div class="psrch-Description">

          <xsl:call-template name="DisplayOfficeProfile">

            <xsl:with-param name="title" select="$jobtitle" />

            <xsl:with-param name="dep" select="$department" />

            <xsl:with-param name="phone" select="$workphone" />

            <xsl:with-param name="office" select="$officenumber" />

            <xsl:with-param name="cell" select="$cellphone" />

          </xsl:call-template>

        </div>

        <div class="psrch-Description">

          <xsl:choose>

            <xsl:when test="$aboutme[. != '']">

              <xsl:value-of disable-output-escaping="yes" select="$aboutme"/>

              <br/>

            </xsl:when>

          </xsl:choose>

          <xsl:choose>

            <xsl:when test="$responsibility[. != ''] or $skills[. != '']">

              <xsl:choose>

                <xsl:when test="$responsibility[. != '']">

                  <span class="psrch-PropLabel">

                    <xsl:value-of disable-output-escaping="yes" select="$ResponsibilityText"/>

                  </span>

                  <span class="psrch-PropValue">

                    <xsl:value-of select="translate($responsibility,';',',')"/>

                    <xsl:text> </xsl:text>

                  </span>

                </xsl:when>

              </xsl:choose>

              <xsl:choose>

                <xsl:when test="$skills[. != '']">

                  <xsl:if test="$responsibility[. != ''] and $skills[. != '']">

                    <br/>

                  </xsl:if>

                  <span class="psrch-PropLabel">

                    <xsl:value-of disable-output-escaping="yes" select="$SkillsText"/>

                  </span>

                  <span class="psrch-PropValue">

                    <xsl:value-of select="translate($skills,';',',')"/>

                  </span>

                </xsl:when>

              </xsl:choose>

              <br/>

            </xsl:when>

            <xsl:otherwise><span /></xsl:otherwise>

          </xsl:choose>

        </div>

      </td>

    </tr>

  </table>         

  </div>

 </xsl:if>  

</xsl:template>

<!-- XSL transformation starts here -->

<xsl:template match="/">

    <xsl:call-template name="dvt_1.body"/>    

</xsl:template>

<xsl:template name="DisplayOfficeProfile">

  <xsl:param name="title" />

  <xsl:param name="dep" />

  <xsl:param name="phone" />

  <xsl:param name="office" />

  <xsl:param name="cell" />

 

  <span class="psrch-Metadata">

  <xsl:if test='string-length($title) &gt; 0'>  

   <xsl:value-of select="$title" /> 

   -

  </xsl:if>

  <xsl:if test='string-length($dep) &gt; 0'>  

   <xsl:value-of select="$dep" /> 

   -

  </xsl:if>

  <xsl:if test='string-length($phone) &gt; 0'>  

   <xsl:value-of select="$phone" /> 

   -

  </xsl:if>

  <xsl:if test='string-length($office) &gt; 0'>  

   <xsl:value-of select="$office" /> 

    -

  </xsl:if>

  <xsl:if test='string-length($cell) &gt; 0'>

<xsl:value-of select="$cell" />

</xsl:if>

  </span>

  <br/>

</xsl:template>

<xsl:template name="dvt_1.body">

  <xsl:apply-templates />

</xsl:template>

<!-- End of Stylesheet -->

</xsl:stylesheet>

Replace the customized XSLT with the original version and check in the page to apply the changes.

image

Posted by AMazaheri | 3 Comments
Filed under: ,

Patterns and practices for SharePoint is published on MSDN

This guidance helps architects and developers design, build, test, deploy and upgrade SharePoint intranet applications. A reference implementation that is named the Contoso Training Management application demonstrates solutions to common architectural, development, and application lifecycle management challenges.

This guidance discusses the following:

  • Architectural decisions about patterns, feature factoring, and packaging.
  • Design tradeoffs for common decisions many developers encounter, such as when to use SharePoint lists or a database to store information.
  • Implementation examples that are demonstrated in the Training Management application and in the QuickStarts.
  • How to design for testability, create unit tests, and run continuous integration.
  • How to set up different environments including the development, build, test, staging, and production environments.
  • How to manage the application life cycle through development, test, deployment, and upgrading.
  • Team-based intranet application development.

 

check for publisher's certificate revocation slowing down SharePoint

While working on an engagement deploying a medium farm on Windows 2008 with no internet connection I noticed a considerable performance hit causing by check for publisher's certificate revocation which is on by default.

Basically by having this option set, all managed code go through a cert check against crl.microsoft.com (Certification revocation check) by .net runtime before startup. While disabling this option is not recommended for security reasons, for a development environment with no internet connectivity turning off this check should increase the overall performance.

In order to disable this option simply go to Internet Options and uncheck "Check for publisher's certificate revocation" under advanced tab.

Note:

As an alternative, adding the following line to Hosts file should also resolve the issue (Thanks to my friend Ashkan for the hint):

127.0.0.1 crl.microsoft.com

 

More Posts Next page »
 
Page view tracker