rss

Sharepointology

Sharepointology is the study and handling of Microsoft Office SharePoint Server

Change email address that Requests For Access get send to

Posted 20Oct08 by Erwin in Setup having 1 comment »

Whenever a user tries to access a page that he doesn’t have access to he get’s the following screen:
request access

At the bottom of the screen he can Request access. When he click’s the Request Access link he can enter a message that get’s emailed.

Reques Access Email

But where can you find/change the email address that get’s used to send these requests to?

When you are on a site, go to Site Settings and choose Advanced Permissions, click on the menu Settings and choose Access Requests. This will give you the email address used for requests from within that site.  Since you can grant access at Library and Item level, these Libraries and Items will inherit the setting from the site that they are on. You are not allowed to change the email address at those sub levels, but you can disable the feature on them (i.e. for a whole library disable the Request Access feature).

RSSIf you like this post then please consider subscribing to my full feed RSS. You can also subscribe by Email and have new posts sent directly to your inbox.

Customize the People Search Results – Part 2

Posted 12Oct08 by Erwin in Development having 6 comments »

In Customize the People Search Results – Part 1 we learned how to pimp the search results from looking something like this:

People Search Default Results

To something like this:

People Search New Results

In Part 2 we are going to learn how to add other fields (properties) to the Search results.

How do we do this?

Let’s first include the Mobile phone of a user into the XML list of results returned by the search service.

  • First you go to your People Search Page and execute a search on a certain name for wich you know you will find results.
  • On the results page you click on Site Actions / Edit page.
  • For the People Search Core Results web part you choose Modify Shared Web Part.

People Search Core Results Edit Web Part

  • Open the Results Query Options by pressing on the + sign in front of it.
  • Look up the Selected Columns field and press the [...] button and you’ll get this:
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Columns>
<Column Name="AccountName"/>
<Column Name="UserProfile_GUID"/>
<Column Name="PreferredName"/>
<Column Name="JobTitle"/>
<Column Name="Department"/>
<Column Name="WorkPhone"/>
<Column Name="OfficeNumber"/>
<Column Name="Fax"/>
<Column Name="AboutMe"/>
<Column Name="PictureURL"/>
<Column Name="WorkEmail"/>
<Column Name="WebSite"/>
<Column Name="Path"/>
<Column Name="HitHighlightedSummary"/>
<Column Name="HitHighlightedProperties"/>
<Column Name="Responsibility"/>
<Column Name="Skills"/>
<Column Name="SipAddress"/>
</Columns>
</root>
  • Now you’ll be able to include new columns based on the columns you can reference from the user profile database. For example if you wanted to include a person’s mobile phone you’ll want to include <Column Name=”MobilePhone”/>. After you’ve done that the XML getting returned by the Search has the MobilePhone column in it.
  • Where do you find these column names? Go to your Central Administration, click Shared Services, then Search Settings and click Metadata property mappings.

Meta Data Property Mappings

  • You’ll find the column names in the column Property Name.

Metadata Property Mobilephone

Now we’ll have to change the XSLT to include the MobilePhone column as output.

  • Choose Modify Shared Web Part for the People Search Core Results web part. If you don’t know how to do this look up a few lines.
  • Just below Data View Properties you see a XSL Editor button. Press it.
  • Search for “Phone” and you’ll find a line containing  <xsl:with-param name=”phone” select=”workphone” />.
  • Copy that line and change the new line to  <xsl:with-param name=”mobile” select=”mobilephone” />.
  • Keep searching for “Phone” and you’ll find the following line <xsl:param name=”phone” />.
  • Copy it and change the new line to <xsl:param name=”mobile” />.
  • Search again and you’ll find:
<xsl:if test='string-length($phone) > 0'>
<tr>
<td><b>Telefoon nr: </b></td>
<td><xsl:value-of select="$phone" />  </td>
</tr>
</xsl:if>
  • Copy and change to:
<xsl:if test='string-length($mobile) > 0'>
<tr>
<td><b>Mobiel nr: </b></td>
<td><xsl:value-of select="$mobile" />  </td>
</tr>
</xsl:if>
  • Save it, publish the page and retry your Person Search and you’ll get something like this:

People Search New Results Mobilephone

Dropdown to change the View disappeared

Posted 19Sep08 by Erwin in General, Setup having 29 comments »

When you go to a document library or list in Sharepoint 2007, you see a dropdown in which you can select a different view or create a new view if you have the right permissions.

If you ever find yourself thinking “Where did the change the view dropdown go?”

Change view disappeared

Don’t worry, one of two things could have happened.

  1. You added a second document library webpart on your page, but this would be obvious because you would see two webparts, one with a dropdown and one without it.
  2. Your user (or yourself) -closed- the webpart and added it again, leaving the closed webpart on the page, but hidden. This one is harder to detect, because you only see the webpart without the dropdown.

Close webpart

How do you fix this?

In the first case there isn’t much of a problem, you -delete- the second webpart from the page or you leave it on there (but without the dropdown).

For the second case you’ll have to edit the page (Site Actions, Edit Page), press Add a Web Part. At the bottom of the dialog is a link “Advanced Web Part gallery and options“, click it. A side bar “Add Web Parts” appears. Below the “Select the collection you want to browse.” is a link called “Closed Web Parts“, when you click it the Web Part List with closed Web Parts appears. Select the Document Library Web Part and click the “Add” button on the bottom of the screen. The page will show the two Web Parts, -delete- the one without the dropdown and you’re back in business.

Why? A web part which shows a list is supposed to display only one view of the list at a time. But you can definitely change the view by modifying the shared web part properties.

Customize the People Search Results – Part 1

Posted 30Aug08 by Erwin in Development having 6 comments »

Out of the box:

First of all let’s start off with showing how the default People Search Results look like:

People Search Default Results

In my opinion not really something you can give to your users to work with. No labels, no design, no clear layout.

This article will try to show you how you can beautify these results a bit.

Preparation:

Let’s try and get ourselfs something to work with for starters. The list of results returned by the search service is in XML format and get’s transformed by using an XSLT. If we can get the XML before it gets translated by the XSLT we can use that XML as input for our custom XSLT.

How do we do this?

  • First you go to your People Search Page and execute a search on a certain name for wich you know you will find results.
  • On the results page you click on Site Actions / Edit page.
  • For the People Search Core Results web part you choose Modify Shared Web Part.

People Search Core Results Edit Web Part

  • Edit the XSL by pressing the XSL Editor button.
  • Save the existing source into a backup XSL file, you can use it later on.
  • Replace the existing XSL by the folowing code:
<?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>
  • Save, press OK button on Properties of web part, choose Save and stop editing from the menu.
  • Retry your search and the results will look something like this:
<All_Results>
    <DummyResult>
      <Everyone />
    </DummyResult>
    <Result>
      <id>1</id>
      <accountname>MOSS\Sharepoint-Test</accountname>
      <userprofile_guid>07BEF018-AE22-495E-B8B5-0EF167B46C90</userprofile_guid>
      <preferredname>Sharepoint Test</preferredname>
      <jobtitle>Sharepoint Tester</jobtitle>
      <department>ICT</department>
      <workphone>+32 14 76 78 90</workphone>
      <officenumber>+32 14 76 45 67</officenumber>
      <aboutme></aboutme>
      <pictureurl></pictureurl>
      <workemail>Sharepoint-Test@moss.com</workemail>
      <website></website>
      <url>http://moss2007:17212/Person.aspx?guid=07BEF018-AE22-495E-B8B5-0EF167B46C90</url>
      <urlEncoded>http%3A%2F%2Fmoss2007%3A17212%2FPerson%2Easpx%3Fguid%3D07BEF018%2DAE22%2D495E%2DB8B5%2D0EF167B46C90</urlEncoded>
      <hithighlightedsummary>moss\<c0>Sharepoint</c0>-<c1>Test</c1>  <ddd /> <c0>Sharepoint</c0> <c1>Test</c1>  <ddd /> <c0>Sharepoint</c0>-<c1>Test</c1> </hithighlightedsummary>
      <hithighlightedproperties>
        <HHTitle />
        <HHUrl>http://moss2007:17212/Person.aspx?guid=07BEF018-AE22-495E-B8B5-0EF167B46C90</HHUrl>
      </hithighlightedproperties>
      <responsibility>Testing Sharepoint</responsibility>

      <skills>sharepoint;C#</skills>
      <sipaddress></sipaddress>
      <imageurl imageurldescription="File with extension: aspx">/_layouts/images/html16.gif</imageurl>
      <addtomycolleaguesurl>javascript:AddToColleagues('moss\\sharepoint-test')</addtomycolleaguesurl>
      <EveryOne />
    </Result>
  </All_Results>
  • Copy the XML and save it in a file.

Create the XSL:

Now that we have the XML, we can this data as input for our XSL. I will explain how to create a simple XSL with Sharepoint Designer 2007. If you have experience with making XSL using another tool, be my guest.

  • Open up your Sharepoint Designer 2007 and open the site (File, Open Site) you are working with.
  • Make a new ASPX page (File, New, ASPX).
  • Insert a Data View on the page (Data View, Insert Data View).
  • After you add the Data View, the Data Source Library window opens.

Data Source Library

  • Expand the node that says XML Files, as seen above, and choose Add an XML file. Browse to your XML file that contains the XML data we saved before and hit ok. Hit Yes on the question about importing the XML.
  • Click the dropdown of your file, and choose Show Data.
  • A nice way to get you started is by using the default XSL that Sharepoint uses to display the People Search Results. We saved it earlier on in this article into a backup XSL file. Open this backup file in Notepad or some other text editor, copy the XSL source code, go to your ASPX file in Sharepoint Designer and copy the XSL source code between the <XSL> and </XSL> tags.
  • Go to the Split view in Sharepoint Designer, this will show you the code and the resulting page.
  • Now you can edit the result, you can add labels to your data. Make stuff bold, italic, use tables to design the results.

Testing the new XSL:

  • When you are satisfied with the result copy everything between the <XSL> and </XSL> tags and paste it into your Sharepoint site. Where exactly? Look at the “Preparation” part of this article and search for “pressing the XSL Editor button” that will explain where to paste the XSL source.
  • Save, press OK button on Properties of web part, choose Save and stop editing from the menu.
  • Retry your search and the results will look something like this:

People Search New Results

It’s not much, but it’s a start. I’ll show you what i changed to the Default XSL source, search for DisplayOfficeProfile and compare it with the next source, the differences are the things I changed.

<xsl:template name="DisplayOfficeProfile">
  <xsl:param name="title" />
  <xsl:param name="dep" />
  <xsl:param name="phone" />
  <xsl:param name="skills" />
  <xsl:param name="responsibility" />

  <table>
  <span class="psrch-Metadata">
  <xsl:if test='string-length($title) > 0'>
  <tr>
   <td><b>Functie: </b></td>
   <td><xsl:value-of select="$title" /></td>
  </tr>
  </xsl:if>
  <xsl:if test='string-length($dep) > 0'>
  <tr>
   <td><b>Afdeling: </b></td>
   <td><xsl:value-of select="$dep" />  </td>
  </tr>
  </xsl:if>
  <xsl:if test='string-length($phone) > 0'>
  <tr>
   <td><b>Telefoon nr: </b></td>
   <td><xsl:value-of select="$phone" />  </td>
  </tr>
  </xsl:if>
   <xsl:if test='string-length($skills) > 0'>
  <tr>
   <td><b>Skills: </b></td>
   <td><xsl:value-of select="$skills" />  </td>
  </tr>
  </xsl:if>
  <xsl:if test='string-length($responsibility) > 0'>
  <tr>
   <td><b>Responsibility: </b></td>
   <td><xsl:value-of select="$responsibility" />  </td>
  </tr>
  </xsl:if>
  </span>
  </table>
  <br/>
</xsl:template>

I also removed the following part of the XSL:

<div class="psrch-Description">
          <xsl:choose>
            <xsl:when test="hithighlightedsummary[. != '']">
              <xsl:apply-templates select="hithighlightedsummary" />
              <br/>
            </xsl:when>
            <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:text>Responsibilities: </xsl:text>
                  </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:text>Skills: </xsl:text>
                  </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>

Microsoft System Center Data Protection Manager

Posted 19Jul08 by Erwin in General having 3 comments »

Database administrators, e-mail managers, and other IT implementers and developers are looking for a better way to protect and recover data from key business applications like SQL Server, Microsoft Exchange, Windows SharePoint Services or file shares on Windows Server 2003 and Windows Server 2008. Microsoft has heard from our customers and partners and delivered a complete solution with System Center Data Protection Manager (DPM) 2007.

DPM 2007 continuously protects the core Microsoft server workloads to a DPM server or appliance, which then provides disk-based recovery and tape-based, long-term archival storage for a complete data protection and recovery solution.

Microsoft System Center Data Protection Diagram

DPM 2007 is designed for the application stakeholder, a SQL or Exchange Administrator, or an IT generalist, and uses wizards and workflows to help ensure that you can protect your data—without requiring an advanced degree, training, or certification in storage and backup technologies.

Protect SharePoint

If your company relies on Microsoft Office SharePoint 2007 or Windows SharePoint Services 3.0 to manage and deliver information, who will you trust to maximize its protection and recovery?

SharePoint administrators are looking for a better way to protect and recover their collaboration infrastructures. Microsoft has listened to its customers and has delivered a complete solution with System Center Data Protection Manager (DPM) 2007.

How does DPM 2007 protect SharePoint data? After the initial baseline copy of data, DPM routinely performs “express full” backups which utilize the SharePoint VSS writer, and underlying component VSS writers, to identify which blocks have changed in the entire production farm and content databases—and only sends the updated blocks or fragments.

With only a few mouse clicks and DPM 2007, you can: Restore the SharePoint Farm, Restore a Content Database, Copy to a network folder or tape for archival purposes.

In addition, perhaps the most exciting features of DPM2007 for SharePoint are a supported way to recover site collections, individual sites, or documents.

Protect SQL Server

How does DPM 2007 protect SQL Server? DPM 2007 uses a combination of transaction log replication and block-level synchronization in conjunction with the SQL Server VSS Writer to help ensure your ability to recover SQL Server databases. After the initial baseline copy of data, two parallel processes enable continuous data protection with integrity:

  • Transaction logs are continuously synchronized to the DPM 2007 server, as often as every 15 minutes.
  • An “express full” uses the SQL Server VSS Writer to identify which blocks have changed in the entire production database, and sends just the updated blocks or fragments. This provides a complete and consistent image of the data files on the DPM server or appliance.

Source: http://www.microsoft.com/systemcenter/dataprotectionmanager/en/us/default.aspx.

About

My name is Erwin Bastiaensen and I am a Software Architect from Belgium, with a huge interest in technology. Lately I have been involved in some Java projects and implementing, interfacing and extending a Sharepoint portal.

You can contact me at sharepointology[@]gmail.com.

View Erwin Bastiaensen's profile on LinkedIn