in

SharePoint Blogs

The Best Place for SharePoint-related Blogs

Mirjam's blog

Blogging about SharePoint related stuff
  • SharePoint Web Services

    Building custom applications for the SharePoint 2007 platform can be done using the WSS and MOSS object model. However, if you can't or won't deploy your code to the WSS server you can also use the WSS Web Services. I must admit that I hardly ever use them, and that I always thought they were not very well documented, but I found some great information here.

    The WSS Web Services are part of the Microsoft.SharePoint.SoapServer namespace. The web services include methods to accessing and customizing SharePoint site content such as lists, site data, forms, meetings, document workspaces, and permissions. The table below shows the WSS web services, including a description of what they can be used for and the reference.

     

    MOSS 2007 also exposes a series of web services. The MOSS web services allow you to use the Business Data Catalog, document management, Enterprise Search, Excel Services, InfoPath Forms Services, and Web content management (WCM). The table below shows most of the web services, there use and the reference you need to use them.

     

    If you want to use one of the SharePoint web serrvices in your visual studio project you can simply add a Web Reference using the path of the SharePoint site for which you want to use the Web Service and add the web service reference to it. Your reference will then look something like this http://[servername]/[sites]/[sitecollectionname]/[sitename]/[subsitename]/_vti_bin/[webservicereference].asmx.

    For more information on WSS Web Service look here.

    More information on MOSS Web Services can be found here.

  • MOSS Development: Back to the Basics

    On October 6 and 7, the Software Development Network hosts the seventeenth SDN Conference in Noordwijkerhout in the Netherlands. During this two day conference several international speakers will share their knowledge about .NET, Information Worker, Usability, Architecture, DotNetNuke and many other topics.

    During this conference I will present two sessions, "MOSS Development: Back to the Basics" and "Exploring the Architectural Boundaries of MOSS". Right now I'm working on the first one, and while gathering information I came across this very interesting list of Visual How Tos for SharePoint. Donald Hessing pointed this site out to me, which also has a lot of useful information and examples on how to start developing SharePoint solutions.

    Combining the information on these two sites a .Net developer with no SharePoint knowledge can start building SharePoint solutions.
    ...And I've got more than enough inspiration to create a 75 minutes presentation!

  • Seven habits of highly effective bloggers

     

    I'm a fan of the book "Seven Habits of Highly Effective People" by Stephen Covey.

    While I was searching for a related consultants training I came across this blog post from Alison Cameron about the seven habits of highly effective bloggers. Like the book it's nothing new or shocking, but still it's good to remember the obvious once in a while.

  • The "datenoyear" field in the SharePoint user profiles

     

    At the moment I'm working on the new and improved version of the Macaw Birthday web part.

    This web part uses the Birthday field of the user profile to query for people who will have their birthday in the next "x" days. Where you can set "x" from the web part property pane. There's a bunch of other stuff that can be set from the pane, but that's not causing problems right now.

    The SQL queries you can perform against the MOSS 2007 index do not only support negative date comparisons on complete dates. This looks like (from the SDK):
    ...WHERE LastModifiedTime <=DATEADD (DAY, -5, GETGMTDATE())

    Which means that you can only compare against dates in the past, where I want to find dates from today till "x" days from now, and I want to disregard the year, which is also not possible.

    This is my next problem. Even though the class is called datenoyear it stores a year with it when you save it. And when you use the search objects to retrieve the field it returns a year with that. In my case it always returns the year 2000. If I can be sure that this is the year that is always added to a datenoyear field that would help a lot because then I would no that I need to query for a date between today in 2000 till today +"x" in 2000. But I can't find any documentation on that.

    Other possible approaches are the DataColumn Expressions and the DataView RowFilter, but that will only work if I know for sure that the year will always be 2000. In that case I can query for each day separately like:
    DataView.RowFilter = "Birthday = #5/13/2000# OR Birthday = #5/14/2000# OR Birthday = #5/15/2000# OR Birthday = #5/16/2000#"
    if "x" would have been four.

    Right now I think I'm just going to filter when writing the HTML, which means that I have a DataTable with all user profiles present on the environment, instead of just the user profiles of the people who have their birthday in the next "x" days, but I'm out of inspiration right now. If anyone has another suggestion I would appreciate that..
    Oh, and if anyone can tell me for sure that the year stored for datenoyear fields is 2000 than I would be grateful for that information as well...

  • Changing the language of an existing SharePoint site

    Recently we had a problem with a (pretty large) site. The problem was that the site was created in English, while it should have been created in Dutch.  All content was in Dutch of course, but for instance the Site Actions button still said Site Actions, and when adding a document the buttons were "New", "Upload" and "Actions".

    In order to solve this a couple of possible solutions were explored:

    • Saving the site as template didn't work, because you can only see the saved site when you create a site in the original language of the site
    • Using backup and restore didn't work, the site kept it's original language
    • Changing the language through the object model didn't work, because the Language property of the SPWeb object is read-only

    This last attempt did trigger me to think that the language of a site is stored at SPWeb level. It is also stored in the database in the Webs table. So I decided to do a little test with changing the language in de database. And it worked like a charm!

    Now I know you're not supposed to change data in the database, but this was a very simple solution. And the best thing was that it only took me 30 seconds to write the query and about 0.02 seconds to run it. Everything in the site is now Dutch, except of course for already created lists and libraries. So the name of the Pages library is still Pages and does not change to Pagina's. But the Site Actions button calls itself Siteacties, the Master Pages are Hoofdpagina's and View All Site Content is called Alle site-inhoud weergeven. You get the picture.. ;-) 

    For changing the language of all sites in the content database to Dutch the query would be:
    UPDATE dbo.Webs SET Language = 1043

    Changing the language of one site collection can be done with:
    UPDATE dbo.Webs SET Language = 1043 WHERE SiteId = [[SiteCollectionId]]

    And for changing the language of a single web or subsite you can use:
    UPDATE dbo.Webs SET Language = 1043 WHERE Id = [[WebId]]

  • I'm tagged for the blogging Meme

    Bart Wessels was probably curious about whether I have a life next to SharePoint development, when he tagged me for Blogging Meme. It's a funny concept that let's bloggers share random stuff about themselves that you would otherwise never know about.
    Although the original post said you need to come up with eight facts and eight other bloggers, I agree with Bart that five will do.

    These are the  'Meme rules':

    • Each player starts with five random facts/habits about themselves.
    • People who are tagged need to write a post on their own blog (about their eight things) and post these rules.
    • At the end of your blog, you need to choose five people to get tagged and list their names.
    • Don’t forget to leave them a comment telling them they’re tagged, and to read your blog.

    So here we go...five random facts about me:

    1. The first time I presented in public was at the SharePoint Conference in Berlin in 2007 with Bart Wessels for about 400 people
    2. I have a CBR 600 F and I love to ride it!
    3. The more sports the better, I play tennis, do rock climbing, running, bikram yoga and snowboarding.
    4. I love laying jigsaw puzzles
    5. My favourite event of the year (apart from vacations) is Lowlands

    And the five lucky bloggers that I tag for meme are:

    Serge van den Oever
    Sander de Koning
    Edwin Vriethoff
    Teun Duynstee
    Marianne van Wanrooij

  • Customizing the My Site look and feel

    As a reaction to my post about adjusting the top level navigation on My Sites I got an email asking how you go about adjusting the look and feel of a My Site. Since I also touch upon that topic in a lot of my presentations I decided to write it down.

    The problem with putting a design on My Sites is that you can't change the master page and the style sheet of your My Site through the user interface. This problem also occurs when you migrate a SharePoint 2003 environment with (a lot of) My Sites to SharePoint 2007. All these My Sites need to get the correct visual design and since all My Sites are site collections they can't inherit their master page and style sheets either.

    I wanted to create a solution to this problem for both existing sites and new sites. I will use this blog post to describe the solution.


    The basics

    For both the deployment of a design on existing My Sites and the activation of a design on new My Sites a feature with the master page is needed. Also a style sheet needs to be deployed. The design feature looks like this:

    The feature.xml file stores the metadata of the feature.

    The scope of the feature is "Web"(=sub site) where you might expect "Site"(= site collection), the reason I chose web was that if you have a site with a lot of sub sites and you want to save one of the sub sites as a template and the sub site inherits it's master page from the site collection it resides under it occasionally won't save the correct design in the template.

    There are two files that need to be deployed with this feature, the master page file and the element manifest file of the feature, design.xml. There is also a feature receiver for this feature that, on activation and deactivation will set the correct master page, style sheet and title graphic.

    The element manifest file design.xml describes the inner workings of the feature. In this case the main purpose of the feature is to deploy the custom master page to the master page gallery.

    The style sheet is deployed from a separate project that is used to deploy custom files to the MOSS 2007 12 directory (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\). The structure of this project is the same as the structure of the 12 directory.

    The featurereceiver will take care of assigning the correct master page and style sheet to each sub site the feature is activated on. If the feature is deactivated the default master page will be assigned again and no custom style sheet will be applied.

     


    New sites

    In order to activate the feature on all My Sites that are created from the moment you activate your feature on you can build a stapling feature. Feature stapling is a very cool thing in MOSS 2007 where you can build a separate feature to tie site definitions and features together.  Using feature stapling you can create an blank site (not based on the MOSS 2007 blank site!) and staple all functionality you want to that site definition. The features that are stapled to a site definition are activated when the site is created. Feature stapling can create n-to-n relations. One feature can be stapled to several site definitions and several features can be stapled to one site definition.

    The stapling feature also has a feature.xml for it's metadata. The most prominent setting in the feature.xml is the fact that the feature is activated at the "Farm" scope. This means that it will work on all web applications within the farm. This is fine, since in most environments only one web application is used for My Sites and the feature is only stapled to the My Sites site definition as you can see in the element manifest file of the stapling feature, DesignStapling.xml. This ensures that on every site that is created with the My Site site definition the design feature is activated.

     

    If you didn't want to create this functionality just for My Sites, but you would build it for all sites you could staple to the GLOBAL site definition. All other site definitions inherit from the GLOBAL site definition, so stapling the design feature to this will staple the design feature to almost all site types. A prominent exception on this is the blank site. In the site definition of the blank site it is defined that you can not staple anything to the blank site (AllowGlobalFeatureAssociations="False"). This is necessary, because SharePoint itself also staples features to the GLOBAL site definition and otherwise the blank site would not be blank.


    Existing sites

    Feature stapling will only have an effect on sites that are created after you stapled the feature to the site definition. This means that if you already have a lot of My Sites that you want the custom design activated on you need to think of something else.
    For this purpose I created a simple console application that loops through all sub sites within a web application and that activates the feature on all of them. This feature can also be used to deploy changes in the master page to already existing sites.

    The application application can both activate and deactivate the design on a specific web application. In order to start it you use on of the following options:

    • -o activatedesign -url [webapp url]
    • -o deactivatedesign -url [webapp url]

    Depending on whether you entered the activating or deactivating operation the application will go to the activating or deactivating function. The code for both of them is displayed below.

     

  • Office SharePoint Server Search keeps results to itself

    Instead of some information I'm posting a question today..

    We've build an application that uses the search functionality to roll up content. Only not all content gets returned in the way you would expect it to.

    A description of the problem can be found here:
    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2789944&SiteID=1&mode=1

    Any suggestions as to what's happening are greatly appreciated.

  • InTrack presentation about SharePoint deployment

    Today I gave Microsoft InTrack presentation about SharePoint deployment.

    This was the agenda:

    • Content Deployment
    • Content Migration API
    • Site Definitions
    • Features
    • Feature Stapling
    • Solution Deployment
    • Forms Deployment

    On forehand I thought that most people would probably already have tried to deploy either content or solutions, but that wasn't the case. It was clear that people still find it fuzzy what needs to be deployed and how this can best be achieved. I hope that I didn't only dazzle the attendants with the different types of deployment, but that the presentation also gave some clarity about the different deployment possibilities. I also hope that it will be easier for the attendants to start using solution deployment and that I was convincing enough that taking the time to set up a solution deployment will actually save you time when deploying your custom SharePoint solutions.

    The slides can be found here.

    Links on content deployment:
    Content Migration Package Explorer
    SharePoint Content Deployment Wizard
    Beware of Import/Export
    How to: Customize Deployment for Disconnected Scenarios
    SharePoint Content Migration Object Model and Content Migration Packages

    Link on Solution Deployment:
    WSPBuilder
    Creating a Solution

    [update]
    The presentation yesterday in the Microsoft Innovation Center in Barneveld was a lot of fun. There were more people that had already worked with SharePoint deployment.
    I used a slightly adjusted set of slides that can be found here.

     

  • Lock down application pages on a public web site

    If you are creating public web sites and anonymous users have access to the site all anonymous users will have read access. By default this means that all users can also access the application and forms pages like for instance the allitems.aspx of the pages library. Now it's true that you would need to know the url to get there, but it still doesn't look very professional.

    Microsoft felt the same way and has thought of a solution for this, the ViewFormPagesLockDown. Donald Hessing has written more about it on his brand new blog. Check it out!

  • Using SPWeb.EnsureUser(loginName) to add a new SPUser to a web

    It happens quite often that I have to write a piece of code to set user permissions on a SharePoint site. One of the challenges you encounter when doing so is that you need to have a valid SPUser object, that is known in the site collection to be able to do this.

    If you want to create a new subsite or web you can start out like this:

       // Open an existing site collection
       SPSite portalSite = new SPSite("
    http://portal");
       // Create a new subsite (web)
       SPWeb newWeb =
        portalSite.AllWebs.Add("
    http://portal/newweb", "My New WebSite", "This is my new web site", 1033, "STS#0", true,
                               false);
       // Get the default roledefinitions known on the new web
       SPRoleDefinitionCollection roleDefinitions = newWeb.RoleDefinitions;
       // Get the roleassignments collections of the new web
       SPRoleAssignmentCollection roleAssignments = newWeb.RoleAssignments;

    Next you want to get an SPUser object, so you can give this person the right permissions on the site. Unfortunately there is no way of telling whether you can get this user from the site collection. If the user is known on the site collection there are three ways to get it:

       SPUserCollection users = portalSite.RootWeb.AllUsers;

    The description in the SDK for this function is:
    "Gets the collection of user objects that represents all users who are either members of the site or who have browsed to the site as authenticated members of a domain group in the site."
    This means that if you have a site collection where you have authenticated all domain users by using an Active Directory group and the user we want to give the permissions to has never browsed to the site before this function won't return our user.

    Next try:

       SPUserCollection users = portalSite.RootWeb.SiteUsers;

    The SDK about this one:
    "Gets the collection of all users that belong to the site collection."
    Which means users explicitly added to the site collection.

    And the last one:

       SPUserCollection users = portalSite.RootWeb.Users;

    The SDK about this one:
    "Gets the collection of user objects that are explicitly assigned permissions on the Web site."
    So this only gets us the users that are explicitly to the web. And since we are actually trying to assign our user to the web we won't find him in this collection.

    The way to solve this problem is to user SPWeb.EnsureUser(loginName) (I have to thank Donald for finding the solution!). The description in the SDK for EnsureUser is:
    "Checks whether the specified login name belongs to a valid user of the Web site, and if the login name does not already exist, adds it to the Web site." Which happens to be exactly what we want!
    Now we can finish our code:

       SPUser newUser = newWeb.EnsureUser(@"domain\username");
       newWeb.AllowUnsafeUpdates = true;

       // Create the new roleassignment that we want to add to the collection of roleassignments of the new web
       SPRoleAssignment roleAssignment = new SPRoleAssignment(newUser);
       SPRoleDefinitionBindingCollection roleDefBindings = roleAssignment.RoleDefinitionBindings;
       // Add the binding to the correct roledefinition to the roleassignment
       // This can also be Contribute for contributor rights.
       // Keep in mind that in sites in other languages this needs to be translated
       roleDefBindings.Add(roleDefinitions["Read"]);
       roleAssignments.Add(roleAssignment);
       
       newWeb.AllowUnsafeUpdates = false;

       newWeb.Dispose();
       portalSite.Dispose();

     Happy programming!

  • Tasks in a (SharePoint Designer) workflow

    For a customer I have created a SharePoint Designer workflow that is linked to a Forms Library. The workflow needs to start whenever an item added AND when an item is changed.
    One of the steps in the workflow includes assigning a task to someone. This person needs to change a field in the form, after which the workflow needs to start again. However, if you assign a task (or To-do Item as it is called in SharePoint Designer) the workflow waits until the task is marked complete before it consideres the step finished. This means that if the person changes the value in the form and then marks the task complete (the most logical order) the workflow doesn't start again.

    A kind of dirty trick to get around this is to add an action to the workflow that assigns a field in the form with it's own value after the To-do item action.

  • Displaying a file or a folder in the Page Viewer Web Part

    Today I tried to do something very easy. Or at least I thought it would be. I tried to display a file in with the Page Viewer Web Part.

    The first steps are actually really easy:

    • Go to the correct site
    • Select "Edit Page" under the "Site Actions"
    • Click "Add a Web Part" in the section you want the web part to be displayed in
    • Click "Modify Shared Web Part"
    • If you want to display a web page it's very straight forward. Just select "Web Page" and type in a url under link and the url will be displayed.

    Unfortunately I didn't want to display a web page, I wanted to display a file. And I was struggling with the way I was supposed to format the path to a file or folder in order to get it to display. Searching on Live or Google didn't get me anything, but eventually I found it:

    • If you want to display a folder or a file you should enter a network path for a folder it would look like file://\\pc158\temp, for a file it would be file://\\pc158\temp\test.txt
    • Displaying a file or a folder will only work in Internet Explorer
    • The file opens either in a separate browser window or inside the Web Part if the application that opens the file supports inline activation for that file in the browser window. 

    Some information about the Page Viewer Web Part can be found here:
    http://office.microsoft.com/en-us/sharepointserver/HA100240451033.aspx

    I haven't seen the browse button that should appear if you select "File" on either of the three environments I tried this on. I'm wondering whether it actually exists, or whether it was supposed to be there and then left out at the last moment..

  • Setting item level security in an eventhandler

    Last week I was building a solution for a customer that involved setting item level security on a document in a document library the moment it is added to the document library.
    I'm not a big fan of item level security, because it can create chaos from a maintenance perspective, but sometimes it's simply the best, or even the only solution.

    I started out be creating the feature that will contain the eventhandler.

    The Feature.xml is very straightforward:

    <Feature Scope="Web"
        Title="Set Security Eventhandler"
        Id="7B2CB0DC-8F27-4252-A4F2-89729DF9331B"
        xmlns="http://schemas.microsoft.com/sharepoint/">
        <ElementManifests>
            <ElementManifest Location="Elements.xml"/>
        </ElementManifests>
    </Feature>

    The Elements.xml looks like this:

    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
        <Receivers ListTemplateId="101">
            <Receiver>
                <Name>AddedEventHandler</Name>
                <Type>ItemAdded</Type>
                <SequenceNumber>10000</SequenceNumber>
                <Assembly>Macaw.Custom.Moss2007.Portal.Business.Components, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6bdc41c2016ac3e3</Assembly>
                <Class>Macaw.Custom.Moss2007.Portal.Business.Components.SetSecurityEventHandler</Class>
                <Data></Data>
                <Filter></Filter>
            </Receiver>
        </Receivers>
    </Elements>

    So you can see that I created an eventhandler that will fire when an item is added to the library. By setting the ListTemplateId I'm linking the eventhandler to document libraries. This means that the eventhandler will be linked to every document library on the web where this feature is activated. It would be better to create a feature with your own custom type of document library and link to that, so you can make sure that the eventhandler will only fire when it's supposed to.

    Now that the feature is created it's time to move on to the actual code for the eventhandler.

        // First create a new class that inherits from the SPItemEvenReceiver class
        public class SetSecurityEventhandler : SPItemEventReceiver
        {

            // Override the ItemAdded event and add your own code
            public override void ItemAdded(SPItemEventProperties properties)
            {
                SetSecurityForNewItem(properties.ListItem.File, properties.ListItem.ParentList);
            }

            // The function in which I actually set the item level security on the newly added document
            private void SetSecurityForNewItem(SPFile newFile, SPList docLib)
            {
                SPListItem newItem = newFile.Item;
                newItem.BreakRoleInheritance(false);

                SPRoleDefinitionCollection roleDefinitions = docLib.ParentWeb.RoleDefinitions;
                SPRoleAssignmentCollection roleAssignments = newItem.RoleAssignments;

                SPUserCollection users = docLib.ParentWeb.AllUsers;

                try
                {
                    SPUser userToAdd = users.GetByEmail(newFile.Properties["MailTo"].ToString());
                    SPRoleAssignment roleAssignment = new SPRoleAssignment(userToAdd);
                    SPRoleDefinitionBindingCollection roleDefBindings = roleAssignment.RoleDefinitionBindings;
                    roleDefBindings.Add(roleDefinitions["Contribute"]);
                    roleAssignments.Add(roleAssignment);
                }
                catch (Exception ex)
                {
                    ExceptionPublisher.PublishInternalException(ex);
                }
            }
        }

    The interesting bit of code can be found in the SetSecurityForNewItem function.

    The function starts of by resolving the SPListItem from the SPFile and by breaking the role inheritance on the item. A necessary step to enable item level security on this item. The false means that the security as it is set on the parent document library is not being copied into the item before breaking the inheritance.

    Next step is to get the roledefinitions from the parentweb and the roleassignments from the item. The roledefinitions are only assigned to webs, and not to document libraries, lists or items.

    Now I need to get the collection of users from the web, these are all the users that are members of the site, or that have browsed to the site. I need this collection of users in order to resolve the user belonging to the email address that is added in one of the properties of the document. The document is a postal item, and the user belonging to the email address is the addressee. To get the address from the document property I use newFile.Properties["MailTo"].ToString(). Using newItem["MailTo"].ToString() would have produced the same result.

    Next I add the user to a new roleassignment and get the collection of roledefinitionbindings from the roleassignment, The roledefinitionbindings are used to bind roledefiitions to a roleassignment. Now add a roledefinition (in this case I add the Contribute definition) to the roledefinitionbindings. The last step is to add the new roleassignment to the collection of roleassignments of the document.

    Setting security in WSS 3.0 from code is quite complicated. There are roleassignments, roledefinitions and roledefinitionbindings. Roleassignments are used to add users and to link them to sites, webs, libraries or items. Roledefinitions are used to determine the level of security, it can for instance be Read, or Contribute, or you can create your own definition, I'll write another post about that later on. Roledefinitionbindings are used to bind roledefinitions to roleassignments. I must say that I do not completely understand why we can't just bind roledefinitions directly to roleassignments, but we can't, and there is probably an explanation, I just don't know what it is.
    I can however very easy change the above code to add the same user with conbribute roledefinitions to the document library instead of the item. The only line that needs to change in order to achieve this is:

                SPRoleAssignmentCollection roleAssignments = docLib.RoleAssignments;

    In order to give the user read instead of contribute rights I would use:

                    roleDefBindings.Add(roleDefinitions["Read"]);

    Basically all you have to do to use the object model to set security in WSS 3.0 is remember the piece of code. You don't need to understand the "why" to build great solution with it..

  • We've just implemented our first Microsoft RoundTable!

    Macaw has implemented the Microsoft RoundTable as part of a complete online meeting system based on the Microsoft Unified Communications platform for a customer and has become a RoundTable reseller.

    The RoundTable creates a 360-degree, panoramic video of side-by-side images of everyone who is taking part in the meeting and that tracks the person who is speaking and highlights this person's image. If you might want to review a conference later, the RoundTable can also record the complete meeting.
    RoundTable works with Office Communications Server 2007 and Office Live Meeting, allowing companies to integrate virtual presentations, shared whiteboards and file sharing into their audio/video conferences.  

    For Dutch readers the customer case can be reviewed here and more information about the RoundTable can be found here.

     

  • Versioning settings on document libraries

    Yesterday we got a question from a customer whether is was possible to have versioning on a library, and at the same time disabling the check in/ check out option. I didn't know, but after a view minutes of looking around, my colleague Casper found the settings in the document library settings under Versioning Settings.

    You can actually configure a couple of interesting settings on this page.

    • Require content approval for submitted items? This is a setting you will especially use on development environments to prevent having to approve every change in for instance a master page or a page layout.
    • Create a version each time you edit a file in this document library? Here you can choose between no versioning at all, just major version and minor and major versions. You can also limit the number of versions to retain.
    • Who should see draft items in this document library? This setting is especially usefull in live environments with sensitive data.
    • Require documents to be checked out before they can be edited? So you can actually turn off the check in/ check out feature. Something I would advice against, because it would bring you back to the SharePoint 2003 functionality where it is possible to work in the same document at the same time with several people and thus when the second person saves his or her changes overwriting the changes the first person made.
  • Running the Dam-tot-Dam from Amsterdam to Zaandam

    Last Sunday me and about 30 colleagues ran the dam-tot-dam run. A 16 km run from the dam in Amsterdam to the dam in Zaandam. We've been training for a couple of months, under the guidance of a professional trainer and an enthusiastic runner himself. I've always been running, but I always felt that 10 km was far enough for me. The first time we met Michel he showed a presentation about running and about the dam-tot-dam. I knew then that I would break the 10 km boundary, Brilliant how he was able to motivate the whole group just by talking about it.

    After all training for a couple of months the run Sunday was really great. The weather was good, it was sunny and 24°C (which was even a bit too hot for some people). I was aiming for a time around 1 hour 36 minutes, 6 minutes per km, based on the fact that I can run 10 km in 50 minutes. The atmosphere was great right from the beginning, a lot of people cheering, bands and orchestras playing, it all really made a difference. A special thanks to Linda is in place, who had first run the 4 mile and then cheered the rest of us on at 4 different places along the track. Thanks Linda!

    After 1 hour and 32 minutes I completed the 16 km, which I was really pleased with. My race was level, without any big speed differences. In the schema below the overview of my race is shown.

    And now on to more 10 kilometers, hopefully sometime next year I will finish one in a time under 50 minutes!

    If you're able to read Dutch you can read Lisette's post at the Macaw Corporate blog.

    Posted Sep 25 2007, 09:19 PM by Mirjam with no comments
    Filed under: ,
  • Whitepaper about Microsoft Web Conferencing Choices

    Bart Wessels just posted a blog about a whitepaper that enables you to make a choice between LiveMeeting and Office Communications Server. This is great since it's a choice that several of our customers are actually thinking about this right now.

    Brief Description

    Compare Microsoft Web Conferencing Choices

    Overview

    This white paper reviews common business requirements for Web conferencing and describes how Microsoft is helping businesses meet these requirements with two enterprise-class Web conferencing solutions:
    • Microsoft Office Live Meeting
    • Microsoft Office Communications Server 2007

    The white paper also provides information to help organizations determine how they can best use either one or both of these Microsoft Web conferencing solutions to meet their requirements.

    The whitepaper can be downloaded here.

  • Microsoft Surface: Wow!

    Yesterday I had a look at the promos about Microsoft Surface, and wow! This is cool stuff.

    Here is what they say about it:

    Microsoft Surface represents a fundamental change in the way we interact with digital content.
    With Surface, we can actually grab data with our hands, and move data between objects with natural gestures and touch.
    Surface features a 30-inch tabletop display whose unique abilities allow for several people to work independently or simultaneously. All without using a mouse or a keyboard.

    Check it out!

    Posted Sep 22 2007, 02:38 PM by Mirjam with 1 comment(s)
    Filed under: ,
  • Renaming a MOSS Server

    Renaming a MOSS server is meticulous job. If anything goes wrong along the way chances are that you need to reconfigure your whole MOSS environment.

    Here are the steps to take, and the order in which to take them if you want to rename a server that has MOSS already installed and configured on it:

    *** NOTE: Use only letters, digits and minus for the machine name (so no underscores), max 15 characters.

    • Change each alternate access mapping for your MOSS/WSS deployment in Central Administration:
      • Open Central Administration, "Operations" Tab, "Alternate access mappings" link
      • Modify each mapping item to reflect your newly chosen server name
    • Use stsadm.exe to invoke the "renameserver" command option:
      • Open a command prompt window
      • cd "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN"
      • stsadm -o renameserver -newservername <newname> -oldservername <oldname>
    • Rename your Server via Change Name Operation in Windows Server 2003:
      • Start Menu | Control Panel | System, "Computer Name" tab, "Change" button.
      • Input your new server name
    • Reboot the server NOW.
    • After reboot, open command prompt
      • cd C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN
      • stsadm -o updatefarmcredentials -userlogin <domainuser> -password <password>
      • iisreset /noforce
    • Check all application pool identities in IIS, update where the old machine name is still there.
    • If you already have a search index drop this, and rebuild it

    Your server is now renamed.

  • Adjusting the top level navigation on all My Sites

    Last week when talking to a customer about their new MOSS 2007 environment I was asked whether it was possible to adjust the top level navigation on all My Sites.

    In general it is possible to adjust the top level navigation by going to the Site Settings page.
    Under Look and Feel you can select Top link bar. Here you can add a new link. Unfortunately doing so in your My Site would mean that you would have to repeat that for every user's My Site.

    In order to adjust the top level navigation in all My Sites you should go the Central Administration and to the SharedServices. Here you will find the link Personalization site links under User Profiles and My Sites.
    You can add new links here that will be added to the top level navigation between the My Home link and the My Profile link.

    You can also target these links, so you could for instance put a link in there that would point to "My Business Unit". This can be realized by adding a link with the title "My Business Unit" for each of the business unit homepages. These links would then be targeted to audiences that are generated for each business unit. This way a user would only see his or her own business unit link displayed in the My Site.

    Of course if you work for two separate business units and if you are in more than one business unit audience the link would be displayed twice, pointing to the two different business unit homepages. So it might be smarter to use the name of the business unit as the title for the link. Oh well, this was just an example.. ;-)

  • Finding expertise with the Knowledge Network

    The Knowledge Network tool is a cool add on for MOSS 2007. The Microsoft Search vision is all about empowering people to find the information and expertise they need to get their job done. The Knowledge Network extends the search functionality of MOSS 2007 with expertise finder functionality.
    It helps users collaborate more effectively by automating the discovery and sharing of undocumented knowledge and relationships.

    The Knowledge Network is based on three core beliefs:
    1. Most information is undocumented, studies reveal that only 20% of knowledge within an organization is documented. The rest of it is individual knowledge that is stored in people's minds.
    2. It’s difficult to connect to the right person. Finding the right person often involves a referral by an intermediary.
    3. “Weak ties” deliver significant value. People in our inner circle know basically the same people and the same things that we know, but people in their extended circle, and people around that have different knowledge and ideas.

    In order to determine someone's expertise a client side tool will extract keywords by scanning email messages and will determine contacts from outlook and instant messaging tools. A user can check what the tool found and decide what can be published to the server and what can not. If the user agrees the profile will be published to the server.

    The data found by the Knowledge Network can be found on three extra tabs that will be added in the My Site. The tabs are My Colleagues, My External Contacts and My Keywords. Information found by the Knowledge Network will also be indexed by the SharePoint search and can be found by using the page behind an extra tab named External People in the search center.

    Tonight Dirk Zekveld and I gave a presentation about the Knowledge Network for the DIWUG. Everyone present was very enthusiastic about the possibilities of the Knowledge Network and almost everyone would either want to install it in their own company or for one or more customers. 

    One of the questions that was asked was about the privacy model, which is very well taken care of. No information will leave a user's computer without the user's explicit approval. 

    Another question that keeps popping up, with our customers as well as the people present tonight is the one about official releases. Right now the RC 0 can be downloaded. This is a technical preview, so it can be installed free of charge, but Microsoft will give no technical support on it. There won't be an official release anytime soon, since the final release of the Knowledge Network will be part of, or an add on to the next Office release.

    If you want to download the Knowledge Network and start using it you can do so here. We have done so at Macaw and we will also start a Knowledge Network pilot for one of our customers on a large scale world wide intranet. I'll keep you posted on the feedback we get on that one.

    The last question that I get quite often is when support for other languages than English will be integrated in the Knowledge Network. The answer is that I don't know..there definitely will be support for other languages eventually.

    For more information about the Knowledge Network take a look at the Knowledge Network team blog.

  • Microsoft InTrack Session about SharePoint Search

    Yesterday, Wednesday April 25th, I gave an InTrack presentation about SharePoint Search in the Microsoft Innovation Center in Barneveld in The Netherlands. There were about 50 people, that got to see a presentation about:
    • Enterprise Search Challenges
      Enterprise Search is not just about searching, it's mainly about empowering employees to find the data and expertise they need to do their jobs.
    • Microsoft Search Vision
      Microsoft's search solutions should make it possible for people to easily find, use and share information. To support this Microsoft has search solutions on the Internet, the desktop and the intranet.
    • SharePoint End-User Improvements
      Search functionality in MOSS 2007 has been improved in many ways compared to the one in SPS 2003. Search results have become more relevant, the user interface has been improved with query correction ("Did you mean?"), hit highlighting, security-trimmed search results and viewing your search results as an RSS feed. The Search Center has also got a lot of improved functionality.
    • Knowledge Network
      Knowledge Network in MOSS 2007 is a tool for social networking that helps users to collaborate more effectively by automating the discovery and sharing of undocumented knowledge and relationships. This knowledge can than be search for in MOSS.
    • Administration Improvements
      The MOSS Search Administration has been greatly improved compared to the one in SPS 2003. The maintenance of Content Sources and Scopes has been simplified and using the extensive query logging you can determine whether the relevance of the search results can be improved by making some configuration changes like for instance using Best Bets and Authorative Sites.
    • Performance and Capacity Planning
      When using a good infrastructure a MOSS Search index can contain up to 50 million items and still perform well.
    • Customizing the Search UI
      The user interface of the search center can be adjusted in several ways. You can add, delete or change web parts and new tabs can be added, for instance based on scopes. You can also adjust the way results are displayed by changing the XSLT.
    • Developing Search Solutions
      Like all MOSS functionality the search functionality can be accessed through the object model. By using the object model you  can build your own custom web parts that use for instance query or results properties. You can use a custom web part to search for a specific query and display the results in a highly customized manner.

    On Wednesday May 2nd I will give the same presentation again at Microsoft at Schiphol-Rijk. If you would like to register for this you can do here (note that the presentation will be in Dutch).

    The presentation can be downloaded here. The slides are in English.

     

  • Comparing SPS 2003 and MOSS 2007

    MOSS 2007 has a lot of features that weren't there in SPS 2003 or that didn't work that well in SPS 2003. Having a list of these features can really help to make the decision to migrate to MOSS 2007.

    Here on Office Online you can find a great comparison between SPS 2003 and MOSS 2007 features.

    Some things of the great new features in MOSS 207 are:

    • Social Networking web part (especially when combined with Knowledge Network)
    • Wikis
    • Blogs
    • Mobile device support
    • Easy customizeable navigation
    • Aggregation web parts like the Content Query web part to roll up data and documents
    • Integration with Outlook 2007 and the ability to take documents offline
    • Showing business data in SharePoint with the Business Data Catalog
    • And lots and lots more... ;-)

     

  • More presentations

    After presenting at the SharePoint Conference 2007 in Berlin more presentations are coming up. They will all be relatively close to home in the Netherlands.

    On March 23th I'm presenting at the SDE together with Dirk Zekveld. Our presentation will be on behalf of the Dutch Information Worker User Group (DIWUG).
    The session will be about: "Using the Windows SharePoint Services Feature Model to create and deploy custom solutions".
    Other people from DIWUG that are presenting are Marianne van Wanrooij and Rolf Eleveld on "Extending your Microsoft Office System: Word 2007" and Mart Muller on "ECM in MOSS 2007: Site Columns en Content Types".
    For more information please check the site:
    http://www.sdn.nl/Default.aspx?tabid=260

    On May 16th Dirk and I will present for the DIWUG about the Knowledge Network. The location for this presentation is still unknown.

    Last but not least I will give two presentations for TechNet on Search. One will be in Schiphol-Rijk, the other one will be in Barneveld. I'm not sure about the dates for these yet, but I will update this post as soon as more information becomes available.

More Posts Next page »

Need SharePoint Training? Attend a SharePoint Bootcamp!

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