in

SharePoint Blogs

The Best Place for SharePoint-related Blogs

The SharePoint Redemption

Saving Us from Collaboration Hell
  • VMware and SharePoint

    So it looks like Microsoft is finally providing support for virtualization products.  I have included some links specific to VMware since I had to perform some research for a client.

    This link from Microsoft: http://support.microsoft.com/kb/909840 states that “In addition to the Microsoft hardware virtualization software products, support for third-party hypervisor technology is supported for hypervisor technologies that are certified by Microsoft through the Server Virtualization Validation Program (SVVP)”.

    This link from VMware: http://www.vmware.com/solutions/whitepapers/new_msoft_policies.html states that VMware is SVVP certified as of August 2008.

    This link from Microsoft: http://support.microsoft.com/kb/957006 states that “Microsoft Office SharePoint Server 2007 Service Pack 1 and later versions are supported” in virtualized environments.

    This link from Microsoft: http://support.microsoft.com/kb/944987/ states that Microsoft and VMware have established a joint support relationship (although they do not guarantee performance).

    And one more for good measure: http://www.microsoft.com/presspass/press/2008/aug08/08-19EasyPathPR.mspx

     
  • Updated: Antivirus Solutions for MOSS

    I have rewritten this post now that there are more solutions available on the market.  See links below:

    Microsoft ForeFront for SharePoint (with SP1)
    http://www.microsoft.com/technet/prodtechnol/eval/fssp/default.mspx

    TrendMicro PortalProtect
    http://us.trendmicro.com/us/products/enterprise/portalprotect/

    Symantec Protection 5.1 for SharePoint Servers
    http://www.symantec.com/business/products/overview.jsp?pcid=2241&pvid=829_1 

    McAfee PortalShield for Microsoft SharePoint
    It does not list SharePoint 2007 under the system requirements on their site but it does in the datasheet PDF so who knows...
    http://mcafee.com/us/enterprise/products/email_web_security/portalshield_microsoft_sharepoint.html

    Jeff

  • Exception occurred. (Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION))

    I started running into this error when attempting to create a site collection in a different language.  I would browse to Central Administration and choose a different language and immediately receive "there was an error in the callback".  If I continued on and ignored the error I would receive "Exception occurred. (Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION))" after clicking Create.  After lots of time wasted scouring the net I found a random post that said they ran into this error when they had a badly formatted webtempXXX.xml file.

    http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!126.entry

    I had missed a closing quote around my hidden parameter (looked like this: HIDDEN="TRUE).  I fixed it, did an iisreset, and it fixed the problem.

    Jeff

  • Redirect SharePoint Site to New Location

    I recently had a request to move a SharePoint subsite to a new location under a different site collection.  The site was moved over after performing the standard import/export stsadm commands.  However, the customer also wanted the old location to perform an automatic redirect for anyone still pointing to the old location.  I wanted to be able to do this without having hack up pages using designer (or other tool) or having to allow for code blocks within the default.aspx by opening my web.config up to vulnerabilities.  I found the easiest way to do this was with Javascript and a Content Editor Web Part.

    1. Add a Content Editor Web Part to the Main Page of the site.
    2. Modify the Web Part and click on Source Editor.
    3. Paste in the following code while changing the URLs to match your target.

      <HTML>
      <HEAD>
      <SCRIPT language="JavaScript">
      <!--
      function redirectsp()
        {
          top.location="
      http://sharepoint";
         }
         if (top.frames.length==0)
          {
           setTimeout('redirectsp()',0);
           }
      //-->
      </SCRIPT>
      </HEAD>
    4. <body>
      Redirecting you to the new location.  If you are not redirected, click <a href="
      http://sharepoint">HERE.</a>
      </body>
      </html>

    5. I set the redirect time to 0, but you can set it higher if you like.  1 sec = 1000, 2 sec = 2000, etc.
    6. Save the code changes.

    The fun part of this solution is the fact that the code tries to load no matter what view you are in (i.e. Standard view, Edit Page, etc).  So, if you have to make changes to the code you have to let the page load but then time a press of the ESC key to keep the Javascript from loading each time.

    Jeff

  • WSU Windows Mobile Theme - Go Cougs!!

    In the spirit of my alma mater, Washington State University, and the great basketball season they are having I am posting the Windows Mobile theme I created.  It has the Cougar logo on the vertical today screen and a shot of Pullman with Bryan Tower on the horizontal today screen.

    Screenshot:

    WSU Theme

    Download:  http://cid-65b4663a2e1f48a3.skydrive.live.com/self.aspx/Public/WSU%20Theme.tsk

    Go Cougs!!

    Jeff

     

  • Patch to Fix Presence in SharePoint and Outlook 2007

    I ran into presence not appearing in SharePoint or Outlook 2007 after my upgrade to Communicator 2007.

    Microsoft recently released a patch to fix this issue.

    http://www.microsoft.com/downloads/details.aspx?FamilyID=1ad57f8f-78f7-45f6-a8c0-805936f46645&displaylang=en

    Thought I would pass it along...

    Jeff

  • Crawling a Content Source Requiring Basic Authentication

    As much as I fight basic authentication, there are still people out there who want to use it.  SharePoint Enterprise Search can crawl a site requiring basic authentication through the use of Crawl Rules.

    1. Browse to the Shared Services Provider page within Central Administration.
    2. Click on Search Settings -> Content sources and crawl schedules.
    3. I recommend adding the source as a new content source.
    4. Once you have created the new content source return to the Search Settings screen.
    5. Click on Crawl Rules -> New Crawl Rule.
    6. Enter the path this rule will affect.  Using wildcards is the easiest way to make sure the enter server is being crawled with the account specified.
    7. Change the crawl configuration to 'Include all items in this path'.  Specify other settings if necessary.
    8. Change the authentication to 'Specify a different content access account'.
    9. DO NOT CHECK 'Do not allow Basic Authentication'.
       
    10. Click OK to save the settings and your new crawl rule will appear in the list.
    11. Kick off a full crawl of the content source for the rule to take effect.

    Simple I know.  But I was hit up for this multiple times so I figured I would write a post on it.

    Jeff

     

  • Who Doesn't Love Free Online Disk Space?

    So I was just playing around with Windows Live Writer to test it out for posting to my blog and discovered Windows Live SkyDrive.  Free 5 GB worth of disk space and you can store personal files, share with your Live Messenger friends, or share out to the general population.

    The interface is very easy to use.

    SkyDrive

    Windows Live SkyDrive Site: http://skydrive.live.com/

    SkyDrive Team Blog: http://skydriveteam.spaces.live.com/

    SkyDrive Viewer from ScottIsAFool on CodePlex: http://www.codeplex.com/SkyDriveViewer

    Jeff

  • Hide Edit Page in Site Actions Menu

    I had a request from a client to hide the Edit Page option under the Site Actions menu for all users without Full Control permissions.  I performed the following steps to remove the edit page option for user's without the managesubwebs right.

    1. Open the master page for the site.
    2. Find the following lines of code:

             <SharePoint:MenuItemTemplate runat="server" id="MenuItem_EditPage"
              Text="<%$Resources:wss,siteactions_editpage%>"
              Description="<%$Resources:wss,siteactions_editpagedescription%>"
              ImageUrl="/_layouts/images/ActionsEditPage.gif"
              MenuGroupId="100"
              Sequence="200"
              ClientOnClickNavigateUrl="BLOCKED SCRIPTMSOLayout_ChangeLayoutMode(false);"
              />

    3. Add to the following lines to the code:
              PermissionsString="ManageSubwebs"
              PermissionMode="Any"

    4. The code should now look like:
             <SharePoint:MenuItemTemplate runat="server" id="MenuItem_EditPage"
              Text="<%$Resources:wss,siteactions_editpage%>"
              Description="<%$Resources:wss,siteactions_editpagedescription%>"
              ImageUrl="/_layouts/images/ActionsEditPage.gif"
              MenuGroupId="100"
              Sequence="200"
              ClientOnClickNavigateUrl="BLOCKED SCRIPTMSOLayout_ChangeLayoutMode(false);"
              PermissionsString="ManageSubwebs"
              PermissionMode="Any"
              />
    5. Save the master page and login with an account that does not have Full Control, but is not read only either...  The Site Actions drop down should now resemble:

    Hide Edit Page

  • MOSS/WSS 2007 SP1 Released!

    Service Pack 1 for Microsoft Office Servers 2007 has finally been released!

    The updates apply to:

  • Microsoft® Office SharePoint® Server 2007
  • Microsoft® Office Project Server 2007
  • Microsoft® Office Forms Server 2007
  • Microsoft® Office Groove® Server 2007, 64-Bit Edition
  • Description: http://support.microsoft.com/kb/936984.

    The download link for the List of Changes is currently wrong (sure it will be fixed soon), but works if you click it and remove the x off the end so it ends with .xls.  Should look like: http://download.microsoft.com/download/D/5/0/D50AB4D9-D184-4927-A065-0512EE271357/2007%20Office%20Servers%20Service%20Pack%201%20Changes_all.xls.  Download it and rename it back to .xlsx.

    There are many steps involved in applying this update (http://support.microsoft.com/kb/945013).  I will supply an updated post after implementing the Service Packs myself with steps and any other fun issues I may have encountered...

    Resource Links:

    Service Pack 1 Resource Center: http://technet.microsoft.com/en-us/office/sharepointserver/bb735839.aspx 

    WSS 3.0 SP1: http://www.microsoft.com/downloads/details.aspx?FamilyId=4191A531-A2E9-45E4-B71E-5B0B17108BD2&displaylang=en

    Microsoft Office Servers 2007 SP1: http://www.microsoft.com/downloads/details.aspx?FamilyId=AD59175C-AD6A-4027-8C2F-DB25322F791B&displaylang=en

    If you are running Language Packs there are also updates for 32-bit and 64-bit versions:

    32-bit: http://www.microsoft.com/downloads/details.aspx?FamilyID=3A6C26FD-0BEB-40D5-8CBA-15164FAAB150&displayLang=en
    64-bit: http://www.microsoft.com/downloads/details.aspx?FamilyID=56681742-7D2C-4A6F-9178-DACD32AADC6C&displayLang=en

    Jeff

     

  • Adoption of SharePoint

    This post is more in and around business analysis and adoption of SharePoint.  Business units typically know they need some type of communication and collaboration tool (or an upgrade to an existing one), but have no idea what to ask for or how to get there.  If SharePoint is just thrown up with no input from the End-Users you will typically have a very low rate of adoption.  If the lines of business are included in the process they are more apt to use the solution once implemented.  The following is a partial set of questions that I have found very useful when attempting to extract this information from lines of business. 

    1. What functionality exists in the current solution (if one exists) that you need in the new SharePoint solution?
    2. Explain Metadata and how it works for organization and search.  What categories make sense for metadata? (i.e. Risk Management might have: Claim Loss Reporting, Contractor Services, Emergency Assistance, Insurance, Risk Management Services and Travel Related Services)
    3. Is a private departmental site needed with corresponding rights for storing sensitive data?
    4. How many people can: add new content, change content or delete content? (Contributors)  Who are they?  Will content require approval?
    5. How do they handle document versioning?  If versioning is to be used, how many major and minor versions should be stored?
    6. Do they have an established workflow for document submission / approval?  Is this a manual process that can be changed into an automated one with workflow?
    7. Have they thought about Site Administration? – someone needs to Administer the site
    8. Do they have any look and feel requirements?  Decide whether they will have the ability to change the look and feel or if a standard is going to be used from the top down.
    9. Are there any standards that they have to conform to?
    10. Is there a committee or someone controlling the content / look and feel?
    11. Do they need any Managerial or Operational Statistics displayed on the site (i.e. KPIs)?

    As I said before this is just a partial list.  Feel free to submit your own ideas.

    Jeff

     

  • Display CSS Classes within SharePoint

    I'm posting this just because I'm getting tired of losing the script... This is a great script written by Microsoft to reveal CSS classes within SharePoint.

    Taken from: (http://msdn2.microsoft.com/en-us/library/ms438349.aspx)

    <script language="jscript">
    function ClassInfo()
    {
        if (window.event.srcElement.className != null)
        {
            stsclass.innerText = window.event.srcElement.className;
        }
        else
        {
            stsclass.innerText = "";
        }
    }
     
    window.document.body.onmouseover = ClassInfo;</script>
     
    <div style="border-style:solid;border-width:1px; width: 281px; height: 34px;
    position: absolute; left: 286px; top: 41px; z-index:15; padding-left:4px;
    padding-right:4px; padding-top:2px; padding-bottom:2px; background-color:#EEEEF4">
    <p id="stsclasstitle"><font face="Tahoma" id="stsclasstitle">Classname: </font>
    <font face="Tahoma"id="stsclass">&#xa0;</font>
    </p></div>

    Microsoft mentions including this within a ASPX page.  Why mess with that?  Just create a content editor web part, open the source editor, and paste the above code in.

    You will notice that the CSS codes now appear in the top middle-left of the screen as you scroll over the SharePoint page.

    If you wish to change the location of the box displaying the codes just alter the following to suite your needs: position: absolute; left: 286px; top: 41px; z-index:15

    The following example shows it changed to: position: absolute; left: 100px; top: 0px; z-index:15

    This will help to alleviate some of the branding stress when you are ready to pull your hair out.  Always remember to check Heather Solomon's GREAT CSS Reference Chart as well: http://www.heathersolomon.com/content/sp07cssreference.htm

     

  • Creating a New Document Template

    When multiple content types are used, Document Templates are managed one per content type.  The following steps walk through uploading a new document template for a content type and assigning it to a document library.

    1. Go to Site Actions à Site Settings à Modify All Site Settings.
    2. Click on Site Content Types under Galleries.
    3. Click on the Content Type that is to be changed.
    4. Click on Advanced Settings under Settings.
    5. Choose to upload a new document template and browse out and select the file.  Click Ok to save changes.
      Step 5
    6. If the content type has not been added to the document library, browse to the Document Library where the Content Type will be used and go to the settings of the library.
      Step 6
    7. Select to Add from existing site content types under Content Types.
      Step 7
    8. Add the content type and click Ok.
      Step 8
    9. Browse back to the document library.  The new document template associated with the added content type now appears under the New Button.
      Step 9

     

  • Delete Files with Workflow Using Duration

    This is just a quick little tidbit.  Out-of-Box workflows in MOSS, unless manually kicked off, require an event to be triggered.  I was trying to figure out a way to automatically delete files from a document library 3 days after they were uploaded.  The doc library was being used strictly as a transfer point and needed to be kept clean.  Thanks to Sean S. for the idea...

    So as simple as it is:

    1.       Start a new workflow using SharePoint Designer by going to File -> New -> Workflow.

    2.       Give the Workflow a name and select the target doc library or list.

    3.       Set the start event.  I set mine to automatically start when the item is created or changed.  Click Next.
    Step 3

    4.       Enter a name for Step 1 such as ‘Pause for 3 days’

    5.       Do not select a condition because we want it applied to all items.

    6.       Under Actions select ‘Pause for duration’.

    7.       Change to 3 days, 0 hours, and 0 minutes.
    Step 7

    8.       On the right choose to ‘Add workflow step’
    Step 8

    9.       Once again, give the step a name and no condition.

    10.   Select Delete Item under Actions and set it to Current Item.
    Step 10

    11.   Click Finish to save the workflow.

    NOTE: A good way to test this first is to set the duration to a low count like 1 minute.  Once you are sure it works properly, set it to your desired time frame.

     

  • Changing Custom Site Definition Template IDs - SharePoint 2003

    The following steps walk through changing custom template IDs so they are greater than 10000 per documented best practices.  Always make sure to backup all databases and files prior to making any changes.

    NOTE: Microsoft does not support editing SharePoint SQL tables directly...

    • Make a backup copy of all %programfiles%\common files\microsoft shared\web server extensions\60\Template\1033\XML\webtempXXX.xml on all front-end web servers.
    • Open each webtempXXX.xml.  Below is an example webtempXXX.xml file with custom templates.

    <Templates>

    <Template Name="SPSCONTOSOSERVICES" ID="37">

        <Configuration ID="0" Title="Area Template" Type="0" Hidden="TRUE" ImageUrl="../images/spshome.gif" Description="Contoso Services Template."><!-- _locID@Title="webtemp_title_spstopic0" _locComment="{StringCategory=HTX}" --> <!-- _locID@Description="webtemp_desc_spstopic0" _locComment="{StringCategory=HTX}" --></Configuration>

     </Template>   

     <Template Name="SPSCONTOSOBUSINESSES" ID="38">

        <Configuration ID="0" Title="Contoso Businesses Template" Type="0" Hidden="TRUE" ImageUrl="../images/spshome.gif" Description="Area Template."><!-- _locID@Title="webtemp_title_spstopic0" _locComment="{StringCategory=HTX}" --> <!-- _locID@Description="webtemp_desc_spstopic0" _locComment="{StringCategory=HTX}" --></Configuration>

     </Template>   

     <Template Name="SPSCONTOSOTOPICS" ID="39">

        <Configuration ID="0" Title="Contoso Topics Template" Type="0" Hidden="TRUE" ImageUrl="../images/spshome.gif" Description="Area Template."><!-- _locID@Title="webtemp_title_spstopic0" _locComment="{StringCategory=HTX}" --> <!-- _locID@Description="webtemp_desc_spstopic0" _locComment="{StringCategory=HTX}" --></Configuration>

     </Template>   

    </Templates>

    • Replace the IDs with numbers over 10000.  It is easiest just to add a 1 and 0 or 00 in front of the existing template IDs.

    <Templates>

    <Template Name="SPSCONTOSOSERVICES" ID="10037">

        <Configuration ID="0" Title="Area Template" Type="0" Hidden="TRUE" ImageUrl="../images/spshome.gif" Description="Contoso Services Template."><!-- _locID@Title="webtemp_title_spstopic0" _locComment="{StringCategory=HTX}" --> <!-- _locID@Description="webtemp_desc_spstopic0" _locComment="{StringCategory=HTX}" --></Configuration>

     </Template>   

     <Template Name="SPSCONTOSOBUSINESSES" ID="10038">

        <Configuration ID="0" Title="Contoso Businesses Template" Type="0" Hidden="TRUE" ImageUrl="../images/spshome.gif" Description="Area Template."><!-- _locID@Title="webtemp_title_spstopic0" _locComment="{StringCategory=HTX}" --> <!-- _locID@Description="webtemp_desc_spstopic0" _locComment="{StringCategory=HTX}" --></Configuration>

     </Template>   

     <Template Name="SPSCONTOSOTOPICS" ID="10039">

        <Configuration ID="0" Title="Contoso Topics Template" Type="0" Hidden="TRUE" ImageUrl="../images/spshome.gif" Description="Area Template."><!-- _locID@Title="webtemp_title_spstopic0" _locComment="{StringCategory=HTX}" --> <!-- _locID@Description="webtemp_desc_spstopic0" _locComment="{StringCategory=HTX}" --></Configuration>

     </Template>   

    </Templates>

    • Open Query Analyzer on the SQL Backend and perform a query resembling the following on all Content Databases:

    update webs set webtemplate = 10038 where webtemplate = 37;

    update webs set webtemplate = 10038 where webtemplate = 38;

    update webs set webtemplate = 10039 where webtemplate = 39;

    GO

    Replace the numbers in the query with ones specific to the environment.  These numbers must match the ones included in the webtempXXX.xml file(s).

    • Perform an iisreset /noforce on all front-end servers.
    • Launch the portal to verify that the templates are still working properly.
  • Restore Production SharePoint 2003 Databases to Test Servers

    This entry is designed to walk through the steps needed to backup and restore production SharePoint 2003 databases to test servers.  These steps have worked well for me especially when preparing for a SharePoint 2003 to MOSS 2007 Upgrade.  (This example is based on Microsoft SQL Server 2000.)

    1. In production, backup the primary Inetpub directory used by IIS.
    2. Backup C:\Program Files\Common Files\Microsoft Shared\web server extensions\60
    3. Copy SQL database backups (typically *.bak files) and the Inetpub and 60 folders to a temporary area on the target test server for use later.
    4. Log out of Production.
    5. Launch ‘Enterprise Manager’ on the target test SQL server.
    6. Expand Microsoft SQL Servers à SQL Server Group à (local) (Windows NT).  Right click on “Databases” and select “All Tasks” à “Restore Database…”
    7. Choose “From device”.
    8. Click on “Select Devices…”
    9. Click on “Add…”
    10. Click on the button with the three dots to browse.
    11. Browse to the temporary location where the database backup, Inetpub directory, and 60 directories were copied to from Production.
    12. Select the Profiles database.
    13. Select the name of the database embedded in the backup filename and copy it to the clipboard.
    14. Click ‘OK’ three times.
    15. Paste the name of the database into the “Restore as database:” field.
    16. Click on the options tab.
    17. Set the physical filename and path to the new target destination (i.e. d:\MSSQL\data\”Servername”.mdf and d:\MSSQL\data\”Servername”.ldf.)
    18. Click ‘OK’ to begin restore.
    19. When complete, the following message will appear:
    20. Repeat Steps 6 – 19 for the Services and Sites databases.
    21. Log back into the web front-end.
    22. Shutdown all SharePoint and IIS Services.
    23. Rename or move the existing Inetpub directory on test.
    24. Copy the backed up InetPub directory from Production to the location on test that was moved or renamed.
    25. Rename or move the existing C:\Program Files\Common Files\Microsoft Shared\web server extensions\60 directory on test.
    26. Copy the backed up 60 directory from Production into test.
    27. Restart the services stopped in Step 22 or just reboot the server.
    28. Open SharePoint Central Administration.
    29. Click on ‘Create portal site’ under ‘Portal Site and Virtual Server Configuration’.
    30. Choose “Restore a portal”.
    31. Set the names of the databases and select “Default Web Site”.  Click ‘OK’ to continue.
    32. Click ‘OK’ to begin creation.
    33. A successful creation will cause a message resembling the following to appear:
    34. Click on Go to SharePoint Portal Server central administration.
    35. Click on Configure virtual server settings from the Virtual Server List page.
    36. Click on Default Web Site.
    37. Click on Manage content databases.
    38. Click on Add a content database.
    39. Choose “Specify database server settings” and enter the additional content database name (i.e. DB2_SITE).
    40. Set the number of site before a warning to a high number initially (i.e. 90000).  Set the max number of sites to a high number as well (i.e. 100000).
    41. Click Ok to restore the additional database and attach it to SharePoint.
    42. Repeat for all additional content databases.
    43. Reset IIS.
    44. Reinstall any custom web parts that may not be functioning.

Need SharePoint Training? Attend a SharePoint Bootcamp!

Posts (c) their respective authors. Everything else (c) 2007 SharePoint Experts