Friday, April 23, 2010

SharePoint 2010 is out!

I tweeted about this yesterday when the bits actually appeared, but here are the URLs from SharePoint MVP Sean Wallbridge:

SharePoint 2010 is on MSDN.

Microsoft SharePoint Designer 2010 (32 bit)

Microsoft SharePoint Designer 2010 (64 bit)

Reminder: SharePoint Designer 2010 only connects to SharePoint 2010 sites. You will want to continue to use SharePoint Designer 2007 to connect to your WSS/MOSS sites.

Also note that you can't mix 32bit and 64bit Office versions, so you’ll want to download either Office 32bit and SPD 32bit or the 64bit versions of both.

Microsoft SharePoint Foundation 2010

image

Also, you might want to read the SharePoint 2010 hardware and software requirements

image 

- a shout out to the MCMS folks

Tuesday, April 20, 2010

Silicon is Not Religion

If blogs from the 60s existed, I’m willing to bet that there would be plenty of lamentations about how people tend to lose all sense of rational thought when they start debating computer preferences.

Another example popped up a while ago in a blog post called From MSFT evangelist to Mac enthusiast. In this post, the author suggests that he’s writing about the difference between Apple and Microsoft. In reality, as you read through each argument, it’s clear that logic is taking a back stage to opinions.

Just so you don’t think I’m falling into the same trap, here’s my viewpoint upfront. I used to work at Microsoft, I own an iPhone. I don’t have a Mac, but my wife does. I wrote about the problem of criticizing Microsoft in my post The Microsoft Paradox. I’m perfectly willing to have a good argument with someone about hardware or software—in fact, I encourage it—but I hate to see bad arguments applied to technical topics. Technology should be free of such indiscretions.

Argument #1: “The most obvious distinction between Microsoft and Apple is design”
This is when I knew I had to write this post. In a classic case of comparing apples to oranges, the writer has decided to ignore the fact that Microsoft didn’t design his computer. “My Windows machine was a Lenovo X301” he writes.

Argument #2: “End to end experience”
”One of the major advantages Apple has is controlling the end to end user experience. This means the hardware works perfectly with the software.” I’m willing to grant that if you make both the hardware and the software, this can be an advantage. However, since Apple is the only major computer manufacturer that decided to maintain this level of  “control,” you also have to acknowledge that an open system that encourages competition amongst peripheral vendors also has its advantages—like price for one.

Argument #2: “Functional differences”
The author uses multi-touch as his main functional difference between his new Mac and his old PC: ”Finally someone tipped me off that the Mac does many of the same ‘right click’ function by holding two fingers on the touchpad.” Unfortunately, this argument is exactly that, a comparison between an old computer and a new computer. As anyone who attended PDC can attest, multi-touch Windows machines have been available for some time.

The post really falls apart with the assertion “From a functional point of view you can do anything on a Mac that you can do on a PC…and vice versa.” This would have been a great chance for him to point out differences between the software available on the two systems, but he doesn’t do it. Unless he’s abstracting to the fact that one can run Windows on a Mac—I don’t think that’s where he wanted to go. I can’t use iLife on my PC and I can’t run Visual Studio on my wife’s Mac. That’s the sort of thing that a logical person would think about.

Friday, April 09, 2010

Windows Live Messenger Translation TBot

This is a very cool feature that I’ve started to use. It’s called Tbot and it will translate whatever you type into a Windows Live Messenger conversation. All you have to do is add the bot (mtbot@hotmail.com) to your messenger contacts and then start typing. Tbot will translate what you write almost instantly.

Description from Microsoft: “Tbot is an automated buddy that provides translations for Windows Live Messenger. It was first launched in 2008 as a prototype and has since become immensely popular. You can have one-on-one conversations with Tbot or invite friends who speak different languages with Tbot translating for you.
Simply add mtbot@hotmail.com to your Messenger contacts. Simply add mtbot@hotmail.com to your Messenger contacts. ”

image 
- using Tbot in Windows Live Messenger

Here are the Tbot commands:

1  TBot lang - Show the current language pair
2  TBot change - Select translation languages
3  TBot stop - Stop translations
4  TBot start - Start translations again
5  TBot set - Set your preferred language
6  TBot detect - Detects the language of the text
7  TBot ? - Show this list of commands

See also: http://translator.live.com

Tuesday, April 06, 2010

SharePoint Designer 2010 Beta and Office 2010

If you’re looking to download both the SharePoint Designer 2010 beta and the Office 2010 beta, you may have discovered that there is a 64bit public beta for SPD, but the public beta for Office 2010 is 32bit.

I installed SPD 64bit first--only to find that the 32bit Office beta wouldn’t install if a 64bit Office application was already installed.

The solution is to download the Office 2010 64bit beta from MSDN downloads.

Monday, March 29, 2010

Augmented Reality Interview for AOL News

I recently did an interview about Augmented Reality for an AOL News site (www.asylum.com). A few years ago, I co-wrote a book about Augmented Reality that was based on the work of Dr. Mark Fiala—an old friend of mine and creator of the ARTag marker system.

The writer was interested in a number of AR applications that have started to make it into mainstream culture. For example, AR tattoos are apparently gaining popularity (see video below).

- Augmented Reality tattoo

Friday, March 19, 2010

SharePoint 2010 Config Wizard Error

I was getting this error when trying to run the configuration wizard for the SharePoint 2010 RC Hyper-V Image.

clip_image002

In the wizard, I was specifying a domain account with sufficient permissions, but I still got the access denied error. The solution was quite simple, I had forgotten that I was logged into the machine as the local admin account—not a domain account. The config wizard needs to read some info about the domain account you’re using for the setup. When I switched users to my own domain account, the wizard ran successfully.

Here’s a snipped from the install log:

Task configdb has failed with an unknown exception 03/19/2010 06:38:14  9  ERR                    Exception: System.InvalidOperationException: An error occurred while getting information about the user SharePointAdmin at server internal: Access is denied

at Microsoft.SharePoint.Win32.SPNetApi32.NetUserGetInfo1(String server, String name
at Microsoft.SharePoint.Administration.SPManagedAccount.GetUserAccountControl(String username)
at Microsoft.SharePoint.Administration.SPManagedAccount.Update()
at Microsoft.SharePoint.Administration.SPProcessIdentity.Update()
at Microsoft.SharePoint.Administration.SPApplicationPool.Update()
at Microsoft.SharePoint.Administration.SPWebApplication.CreateDefaultInstance(SPWebService service, Guid id, String applicationPoolId, SPProcessAccount processAccount, String iisServerComment, Boolean secureSocketsLayer, String iisHostHeader, Int32 iisPort, Boolean iisAllowAnonymous, DirectoryInfo iisRootDirectory, Uri defaultZoneUri, Boolean iisEnsureNTLM, Boolean createDatabase, String databaseServer, String databaseName, String databaseUsername, String databasePassword, SPSearchServiceInstance searchServiceInstance, Boolean autoActivateFeatures)

Wednesday, February 10, 2010

Live Blogging from SPTechCon

I’m here in San Francisco live blogging for EndUserSharePoint.com at SPTechCon (#SPTechCon).

I’m currently in the SharePoint developer workshop being run by Phil Wicklund. It’s a full day overview of SharePoint development.

clip_image001

Wednesday, February 03, 2010

SharePoint Game of Life

I’m sure some SharePoint community folks will remember John Conway’s Game of Life population simulation (cellular automaton) from comp. sci. For my SharePoint 2010 Enterprise Metadata Management (EMM, or taxonomy) talk at SharePoint Saturday in New York last weekend, I decided to create my own version for testing the performance of the new SharePoint taxonomy API.

Update: I have posted the source code for the SharePoint Game of Life web part on CodePlex. If you’re interested in SharePoint taxonomy, you can also check out my blog series on Enterprise Metadata Management (EMM).

Using the rules of the Game of Life, I created a SharePoint 2010 Visual Web Part that creates a new taxonomy term for each organism spawned during the simulation. When the creature dies, the term is deleted from the term store.

SharePointGameofLife

- SharePoint Game of Life running a glider

I actually did this back in 1999 for the NCompass Resolution Publishing API (the software that eventually became Microsoft Content Management Server), so I also had an interesting exercise of porting ASP script to C# code. The SharePoint Game of Life web part tracks the number of terms created and the time it took to run. I’m planning to use this web part as a sample for a SharePoint 2010 book project.

Here are the rules of the game (from Wikipedia):

  • Any live cell with fewer than two live neighbours dies, as if caused by under population.
  • Any live cell with more than three live neighbours dies, as if by overcrowding.
  • Any live cell with two or three live neighbours lives on to the next generation.
  • Any dead cell with exactly three live neighbours becomes a live cell.
  • The most famous pattern in the game is called a glider. This pattern is interesting because over iterations, it will simply continue to move across the grid. The glider configuration has been adopted as the hacker emblem.

    clip_image002

    - the glider starting position

    For dramatic effect, I decided to add an image for a dead organism—as you can see in the animation. This isn’t normally done, so for the Game of Life purists, I’ll probably add an option to disable it in the release version of the code.

    The code isn’t ready for prime time yet, so I don’t have perf numbers to publish yet. But hopefully, I’ll get a chance to polish it up soon.

    BTW – The creature is an homage to Mazogs. A ZX-81 (Timex Sinclair 1000) game I played as a kid.

    Thursday, January 21, 2010

    Paul Quarrington

    It’s truly a tragedy that Canada has lost one of its best novelists at such a young age. Paul Quarrington passed away yesterday.

    I had the good fortune to have Paul as my mentor for a writing course and his book, Boy on the Back of the Turtle, helped inspire my wife and I to go on a trip to the Galapagos Islands.

    If you want to read a truly great novel, find a copy of Quarrington’s Whale Music.

    Tuesday, January 19, 2010

    Office Ribbon Hero

    Further to my previous post Games are the Way to Test Software, I wanted to mention the new Office Ribbon Hero game. Score points by using the ribbon, accept challenges and share your results with your Facebook friends.

    Can you imagine if you were new to Office how helpful this would be? It makes me think of the XT typing tutor game I played back in high school. It was similar to missile command--words falling down the screen and the player has to type them before they destroy bases. Great game.

    Monday, January 18, 2010

    Hyper-V Import Again Fails

    I ran into this Hyper-V subtlety, so I figure I’ll share it here and make it easier to find with a search. If you try to import a Hyper-V image and the import fails, you will not be able to use the same files to try the import again. Hyper-V actually deletes and alters files as part of the import process.

    image

    The error you’ll likely see is “Import failed. Import failed. Unable to find virtual machine import files under location … You can import a virtual machine only if you used Hyper-V to create and export it.” At face value this error is infuriating since you are trying to import a Hyper-V export, but the fact that you’re running the import for the second time means that Hyper-V does not consider your source to be valid.

    The lesson here is don’t try and import your exported Hyper-V image without first making a backup copy. If you have a backup, you can just copy over the small files again and not have to export or copy the large image files a second time.

    Friday, January 15, 2010

    Microsoft’s Free SyncToy

    I have been using the Mozy online backup service for a while now, and while it is an affordable and convenient way to backup my laptop, it’s not a solution for syncing folders between my laptop, my home desktop and my work desktop.

    In order to resolve the sync problem, I decided to try Microsoft’s free SyncToy PowerToy. I believe that Microsoft SharePoint Workspace 2010 is where I will eventually go for at least part of this functionality, but a quick—not to mention, free—resolution is appealing to me today.

    UPDATE: If you're interested in this utility, you should check out the new version: Windows Live Mesh.

    Backup vs. Sync

    While there certainly is a relationship between sync and backup, the two are not the same. The reason I want to backup my files is because I want to be able to recover something that was lost due to a failure such as a hard drive crash. The reason I want to sync my files is that I want to do things such as walk home from work and have the same file on my home machine that I was just editing at work. In fact, I don’t want it just to be the same file, it must be the same version of the file.

    Microsoft SharePoint can be useful for these scenarios, but I use it primarily for work. I use Mozy online backup to protect assets such as my vacation photos. I want to be able to sync because when I open my laptop on a plane (like I just did to write this post), I want the right versions of a bunch of files to be there. Furthermore, I may not know which files I want, so the sync is something that should happen automatically.

    What can SyncToy do?

    SyncToy is able to help with most of my files syncing needs. Using the tool, I can create a relationship between files shares on as many computers as I want and specify a few options for how I would like those files to be handled.

    CreateFolderPair - creating a folder pair for syncing

    Once I have my sync pairs created, I can run the operation and the files on my desktop at work will be synchronized with my files on my laptop.

    RunningSync - running a sync

    If you’re not sure what’s going to happen with the click the Run button, there is also a preview run feature that you can use to see what the operation will do before it runs.

    PreviewRun - previewing a sync run

    Note: Synctoy will write a file (.dat) to each folder that you add to a folder pair. If you delete this file, SyncToy will no longer be able to run the synchronization.

    Schedule SyncToy

    Since SyncToy does not have a way to configure a sync operation to run, you will need to use Windows Scheduler to automate the task. This is not ideal and doesn’t allow for real-time synchronization, but as you can see in the steps below, it’s trivial to set it up to run at a set time.

    From the SyncToy 2.1 Help:

    While you do not have to schedule SyncToy to use it, some users may find it helpful to schedule recurrent SyncToy runs. Perhaps you have a folder pair that takes a long time to sync and you want to run SyncToy in the middle of the night, for example.
    SyncToy does not provide a user interface to schedule folder pairs to run at designated times. However, there is a method to schedule tasks using the Microsoft© Windows© operating system.

    Windows Vista/ Win7
    To schedule a task using the operating system:
    1. From the Start menu, select All Programs - Accessories - System Tools - Task Scheduler.
    2. Select Create Basic Task in the Actions pane on the right.
    3. Add a Name and Description and select Next.
    4. Choose when you want the task to start and select Next.
    5. Choose date/times (if applicable) to run task and select Next.
    6. Choose Start a Program option and select Next.
    7. Select Browse and locate the SyncToyCmd.exe.
    8. Type "-R" in the Add Arguments textbox. –R all by itself will run all folder pairs that are active for run all. If you want to run just a single folder pair, add –R “My Pair” to the end of the command line.

    Note: If the folder pair name contains a space, surround it with quotation marks… "C:\Program Files\SyncToy 2.1\SyncToyCmd.exe" -R "My folder pair."

    The weakness of SyncToy comes to light in the ‘stepping on a plane’ scenario. Today, SyncToy does not have a UI option for scheduling synchronization and even if you use Windows scheduler, you’re still not in the Nirvana state because a lot could happen between the time that your scheduled sync runs and when you get onboard your flight. However, despite these limitations, I’m going to be using SyncToy for the time being.

    Try SyncToy 2.1 for free.

    Saturday, January 09, 2010

    History of SharePoint ECM Through Shirts

    I moved a while back and was amazed how many free shirts I still have kicking around. I thought I’d pick the most relevant ones and do a quick history of SharePoint ECM through clothing.

    SharePointHistoryShirts

    Note: If you want to do an animation like this, I recommend smiling. While no expression is easier to duplicate, there’s less chance that you’ll look like the psychotic killer in a Criminal Minds episode.

    1998 – 2001 (NCompass Labs t-shirt and leather jacket)
    NCompass Labs was located in Vancouver, Canada. NCompass Resolution was built to be a platform for creating websites with content management features and it would go on to become Microsoft Content Management Server (MCMS). MCMS was the basis of today’s SharePoint publishing sites functionality.

    2001 (e-biz hoodie, MCMS 2001 polo, Microsoft Portal Airlift windbreaker)
    SharePoint Portal Server 2001 and MCMS 2001 were released. At this point, SharePoint was an application designed to build Intranets. MCMS was built as a development platform for web content management. The fact that both could be used to build Intranets caused confusion—some people liked to say that SharePoint was for Intranets and MCMS was for public sites, but that wasn’t accurate. MCMS was moved to the newly created E-Business Servers division and SharePoint was in the Office Servers division.

    Aside: The “EBZ” hoodie was given out because the team that left Redmond building 1 before we moved in were so messy that the space “looked like a frat house.”

    2002 (E-Business Servers Hawaiian speaker shirt, MCMS 2002 t-shirt)
    MCMS 2002 was released primarily to add support for .NET developers. The marketplace confusion about the two content management products from Microsoft continued. The E-Business Servers division embarked on the Jupiter project which was a vision for an integrated suite of business products including BizTalk and MCMS.

    2003 (TechEd 2003 Speaker shirt)
    SharePoint Portal Server 2003 was released. SPS added key features and scalability. SPS also kicks off the SharePoint vision to be both a platform and an application.

    2004 – 2007 Metalogix Booth Staff polo and Colligo share shirt
    The E-Business group is dissolved (because of their taste in shirts?) and the MCMS team becomes part of the SharePoint team.

    From Microsoft: “Based on extensive customer feedback, we have integrated the Web content management capabilities of CMS 2002 into the new Microsoft Office SharePoint Server 2007”

    A key aspect of this timeframe is that the SharePoint partner ecosystem grows dramatically. Because of this, I threw in a couple of partner shirts. More ECM features are added to SharePoint.

    Aside: I left out the speaker shirt from TechEd New Zealand. As native South Africans, my brother would never forgive me if I published a photo of me wearing the silver fern. But to be fair, I had a fantastic time, met some great people, and hope to go again.

    2007 – 2009 SharePoint Conference Speaker shirt
    Microsoft Office SharePoint Server (MOSS) was released and SharePoint gains the impressive title as the fastest product to grow to 1B (in yearly revenue ) in Microsoft history. The market clearly demonstrates that it wants one solution that is both a platform and an application for building websites. Also, SharePoint gains significant mindshare as a solution for public internet sites. At the end of the decade, SharePoint 2010 Server and SharePoint Foundation are in public Beta—both receiving favourable reviews.

    Thursday, January 07, 2010

    SharePoint Managed Metadata End-User Experience

    This post is part two in a series that I’m writing about SharePoint 2010 Enterprise Managed Metadata (EMM or ‘taxonomy’). If you haven’t set up a SharePoint 2010 development environment yet, you may also want to check out SharePoint 2010 Beta 2 install.

    SharePoint Taxonomy Part One – Introduction to SharePoint Managed Metadata
    SharePoint Taxonomy Part Two – End-User Experience
    SharePoint Taxonomy Part Three – Administrator Experience
    (including Using SharePoint Term Stores and SharePoint Taxonomy Hierarchy)
    SharePoint Taxonomy Part Four – Developer Experience
    (including SharePoint 2010 Visual Web Parts and SharePoint 2010 Taxonomy Reference Issues)

    There are two types of tags in the new SharePoint 2010 taxonomy system: managed keywords and managed terms. I’ll cover each one and give example of how users can take advantage of the various features that each type enables.

    Managed Keywords

    Keywords are used to informally tag content within SharePoint. Instead of relying on a centrally managed store of terms that they must choose from, keywords allow users to add their own tags. This means that faculties such as folksonomy and informal tag clouds are enabled.

    Note: Managed keywords are stored in a separate single database and do not have a hierarchical structure.

    To add a managed term to a document, first select the document in the document library and select Edit Properties.

    image
    - Selecting a document for editing

    Once you have the edit document properties dialog open, find the Managed Keywords field and you can either start typing an existing keyword (which will prompt you with suggestions) or you can type in a new keyword.

    image
    - Adding a keyword to a document

    The Tag Cloud Web Part

    Once you’ve begun tagging things, you’ll probably want to be able to use that data in convenient ways. The tag cloud web part is a quick way to get a sense of the folksonomy being created on your SharePoint server.

    If you have sufficient permissions to create a web part page and add web parts, you’ll be able to add the tag cloud web part to web part pages.

    image
    - Adding the tag cloud web part to a page

    Once added, there are a number of options in the tag cloud settings.

    image
    - A tag cloud web part in edit page mode

    image

    - A tag cloud web part in published mode

    Note: A lot of features aren’t activated at the site collection level by default. Activating the “SharePoint Server Standard” feature enables the Tag Cloud web part. If you find that you’re not offered the Tag Cloud web part, ask your SharePoint admin to investigate.

    Managed Terms

    Managed terms are placed in a central repository of terms. This enables consistency across users, provides hierarchical organization, and allows for strict information architecture. In the SharePoint Term Store Management Tool, users with sufficient permissions are be able to perform many operations on terms in the hierarchy. However, most users will simply use the terms from the central store.

    As with keywords, terms can be added to many types of content within SharePoint. This example, will show how to add a term to a document within a document library that has already been enabled for tagging with terms. For more information about enabling a SharePoint 2010 Beta 2 document for tagging with managed terms, refer to SharePoint Taxonomy Part Three – Administrator Experience.

    To add a managed term to a document, first select the document in the document library and select Edit Properties. Once you have the edit document properties dialog open, find the managed metadata field and you can either start typing a term or click the “Browse for a valid choice” icon on the right.

    image
    - Browsing for a term to add to a document

    The screenshot below shows the suggest as you type feature which will show terms that match your partial input. Also, in the box below, you can see the labels (synonyms) and the description which helps users understand how different tags should be used.

    image

    Metadata-driven Navigation

    Managed Metadata can also be used to enable some cool navigational features within SharePoint 2010. For example, if you go to a list that has a managed metadata column, you’ll be able to filter the view by simply selecting one of the terms being used in the list. This enables the end-user to instantly filter lists without having to create a custom view.

    image
    - Filtering a document library using the Managed Metadata term “Cape Town”

    Once you apply the filter, the column heading will show a funnel icon to indicate that you’re not seeing the full list. This essentially allows you to see SharePoint through a simple parametric navigation mechanism—or as we used to say on the SharePoint team, “navigation goggles.”

    image
    - The filtered results

    Happy tagging!

    [Disclaimer: This information is based on SharePoint 2010 Beta 2 and may differ from the RTM build.]

    Tuesday, January 05, 2010

    SharePoint Managed Metadata Administrator Experience

    This post is part three in a series that I’m writing about SharePoint 2010 Enterprise Managed Metadata (EMM or ‘taxonomy’). If you haven’t set up a SharePoint 2010 development environment yet, you may also want to check out SharePoint 2010 Beta 2 install.

    SharePoint Taxonomy Part One – Introduction to SharePoint Managed Metadata
    SharePoint Taxonomy Part Two – End-User Experience
    SharePoint Taxonomy Part Three – Administrator Experience
    (including Using SharePoint Term Stores and SharePoint Taxonomy Hierarchy)
    SharePoint Taxonomy Part Four – Developer Experience
    (including SharePoint 2010 Visual Web Parts and SharePoint 2010 Taxonomy Reference Issues)

    As a SharePoint administrator, the first step when using the new EMM features is to learn how to use SharePoint Term Stores and research the details for creating a SharePoint Taxonomy Hierarchy. You’ll also want to read Microsoft’s best practices and make use of the managed metadata planning data sheets. You can find those links at the bottom of my post SharePoint Taxonomy Part One – Introduction to SharePoint Managed Metadata.

    After you have got your term store set up and you’ve decided how your taxonomy will be organized, you’ll need to set the permissions on your term store and enable various content for tagging. Remember that there are two types of tagging: managed keywords and managed metadata. Managed keywords are used for informal “folksonomy” style tagging and managed terms are used for centrally controlled and delegated hierarchical term structures.

    How to Enable Managed Metadata on Your Server

    Step 1: Add an administrator to your term store.
    I covered this process in Using SharePoint Term Stores.

    Step 2. Create some terms.
    I covered the details of this topic in SharePoint Taxonomy Hierarchy.

    Step 3. Add a column of type “Managed Metadata”
    I’m not sure if this will be the case when the RTM version of SharePoint 2010 ships, but despite the fact that the documentation suggests that many content types (inc. document) come with a managed metadata column for tagging, I have found that this column only works for keywords—not for managed terms. In Beta 2, the column that comes with a document library is called “Managed Keywords” and has the internal name “TaxKeyword.”

    To use managed terms, I had to add a new column to my document libraries. To do this, first go to the list you want to enable and choose the Library tab from the ribbon, then Library Settings from the Settings area. Once there, choose Create Column.

    image
    - Adding a new column to a list

    When the Create Column dialog opens, choose the Managed Metadata column type and give it a name. You’ll also be able to choose options such as whether you want to allow multiple values.

    image - Use the Managed Metadata column type for managed terms

    After adding this column, you should be able to edit the properties of a document in the document library and see a new option to choose managed terms to put into the new managed metadata field. Click on the little tags icon on the right of the field to browse your term store.

    image
    - After adding the managed metadata column, terms can be associated with the document

    Promoting a Managed Keyword to a Managed Term

    One philosophy for building a taxonomy is to let the users decide which terms are important. In SharePoint 2010, there are two ways to achieve this. First, you can allow “fill-in” keywords in your term sets. Secondly, you can allow users to tag with managed keywords and then choose to promote some (or all) of them to managed terms.

    To change a managed keyword to a managed term, you simply open the term store management tool (from central admin or site settings) and use the "Move” option to move the keyword into the term hierarchy.

    image
    - Moving a keyword to the term store will convert it to a managed term

    Note: It is not possible to move a managed term to the keywords store. In other words, you can promote a managed keyword to a managed term, but you can’t demote a term to a keyword.

    Polyhierarchy

    A polyhierarchy enabled tree can include leaves (nodes) that have more than one branch (parent node). In SharePoint Server 2010, you can create a polyhierarchical structure with the Reuse Terms action in the Term Store Management Tool.

    This example doesn’t really make sense, but let’s just imagine that I had used terms that weren’t as regimented as a geography. Say, for example, I had used people instead and the Term Sets defined teams to which they belong. In that case, a person could be on more than one team and therefore, you might want to reuse the term. For simplicity, the screen below shows the same hierarchy used in my other examples, but the Cairo term has been reused and it now appears in two different locations in the tree hierarchy.

    image

    - An example of polyhierarchy

    If you look at the properties of the term (see screen below), you can see that it now belongs to two term sets.

    image

    More Notes about EMM Administration

    - When you create a new term store, make sure the application pool is running.
    - the Term Store Management Tool (TSMT) is available in Central Administration (and site settings). This tool manages terms centrally for the whole farm and can be used to create, copy, reuse, move, duplicate (for polyhierarchy), deprecate, delete and merge terms. The TSMT is also used to manage permissions on term stores.

    image
    - Term management options

    - The Managed Metadata column can allow multiple values.
    - All managed keywords are stored in a single non-hierarchical term set called the keyword set.
    - Site collections can optionally use their own term sets at the column level rather than use the central term store.
    - You can enable fill-in choices with a submission policy, this enables folksonomy.
    - Multilingual (MUI) terms are available.
    - Terms can be labelled to create synonyms that help users figure out which term to use.

    [Disclaimer: This information is based on SharePoint 2010 Beta 2 and may differ from the RTM build.]

    Thursday, December 31, 2009

    SharePoint Taxonomy Hierarchy

    If you’re wondering how to organize your SharePoint 2010 Enterprise Managed Metadata (EMM), you should start by reading the TechNet article, Plan terms and term sets (SharePoint Server 2010). I’m going to highlight some of the key points of that article and also add a few points from other sources.

    While the TechNet article reminds us that you could simply allow your users to add keywords and then use their input to create your taxonomy—promoting keywords to managed terms—it seems likely that most organizations will want to start with an organized metadata hierarchy.

    As explained in SharePoint Taxonomy Part One – Introduction to SharePoint Managed Metadata, the SharePoint 2010 EMM is organized into a hierarchy. The objects within this hierarchy are term stores, groups, term sets, and terms.

    Note:
    Keywords are stored in a non-hierarchical fashion in there own storage space.

    These are the rules for the taxonomy hierarchy:
    When a Managed Metadata service is created, a term store will be created. Once you have a term store, you can create a group. A group is a security boundary.
    • Once you have a group, you can create a term set. A term set must be the child of a single parent group.
    • Under a term set, terms can be created. A term can be the child of a term set, or of another term.
    • A term can be added as a child of another term.
    • Terms can be nested to seven levels. [Update: this documented rule is not enforced in the RTM version]

    One of the key points of the TechNet article about planning your terms and term sets is that a group is a security boundary. A group contributor can manage the term sets in the groups and create new term sets. All users who have access to a term set under a group can see all of the other term sets—even if they don’t have rights to manage the other term sets. Based on this, you should organize your term sets into groups based on the groups of users who will manage them. For this reason, your taxonomy may correlate to your organizational structure. Let’s take a look at an example.

    image

    - Sample SharePoint 2010 EMM (taxonomy) hierarchy

    Term Store: In the sample hierarchy shown in the figure above, you can see that there is one term store (called “Taxonomy” for lack of inspiration for a better name). Remember that you can have multiple terms stores, but each term store is stored in a separate SQL Server database.

    Group:
    Under the term store are two groups: Africa and North America. The idea is that these could be significant geographical locations to this particular fictional organization. Remember that the groups are a security boundary, so the users assigned to the Africa group don’t have to have any access to the Egypt group. However, if users are given rights to a term set under one of the groups, they will be able to see the names of all the term sets under that group.

    Term Set: Inside the Africa group there are two term sets: South Africa and Egypt.

    Terms: At the top level, the South Africa term set contains the terms Cape Town, Johannesburg and Joburg. Terms can be nested seven levels deep. In this case, the Cape Town term contains the child term “Newlands” (a neighbourhood in Cape Town), and that term contains the child term “Ravensberg Avenue” (the street I lived on in Cape Town).

    When you’re creating your managed terms, you’re free to identify synonyms; you can also specify which is the preferred term so that when a user types in “Joburg,” she will be asked to assign the term “Johannesburg.”

    Here are a couple more quick points to keep in mind:

    - You can specify a custom sort order for terms, so it isn’t necessary to show them in alphabetical order.
    - Term sets can be open or closed. Open sets allow all users to add terms. Terms can only be added to closed sets by users who are contributors to the group.
    - In addition to terms, SharePoint 2010 EMM contains keywords. Keywords aren’t restricted, so they can be used informally to create “folksonomy,” but keywords can be promoted to managed terms.

    If you’ve been tasked with creating the taxonomy for your EMM hierarchy, keep these points in mind, but I strongly recommend that you also take advantage of the articles and the worksheets available on TechNet.

    Note: You can see the taxonomy terms in a hidden list: http://servername/Lists/TaxonomyHiddenList

    [Disclaimer: This information is based on SharePoint 2010 Beta 2 and may differ from the RTM build.]

    Wednesday, December 30, 2009

    Can't Paste into Blogger with IE8

    Over the last few weeks, I've found that I'm unable to paste text into the blogger web editor. This problem was actually the final straw that drove me to try Windows Live Writer for blog Authoring--which BTW is working out splendidly and I'm happy that I finally gave it a shot.

    But getting back to the topic at hand... I did find a way to resolve the pasting issue. Since the issue occurs on multiple machines, I wondered if it was an IE8 problem with the Blogger control. I tried switching IE8 to IE7 mode and sure enough, I can now paste this text:

    To run a webpage in IE7 mode in IE8, open Tools –> Developer Tools (or use the F12 key) to launch the developer tools window.

    And since images are so easy to work with in Windows Live Writer, I'm going to save this draft and paste in a screenshot using Live Writer.

    image

    SharePoint Managed Metadata Developer Experience

    This post is part four in a series that I’m writing about SharePoint 2010 Enterprise Managed Metadata (EMM or ‘taxonomy’). If you haven’t set up a SharePoint 2010 development environment yet, you may also want to check out SharePoint 2010 Beta 2 install.

    Update: I have posted a video demo on the Metalogix blog showing how to create a SharePoint 2010 Taxonomy Web Part.

    SharePoint Taxonomy Part One – Introduction to SharePoint Managed Metadata
    SharePoint Taxonomy Part Two – End-User Experience
    SharePoint Taxonomy Part Three – Administrator Experience
    (including Using SharePoint Term Stores and SharePoint Taxonomy Hierarchy)
    SharePoint Taxonomy Part Four – Developer Experience
    (including SharePoint 2010 Visual Web Parts and SharePoint 2010 Taxonomy Reference Issues)

    Opening Microsoft.SharePoint.Taxonomy in the Visual Studio Object Browser reveals a long list of objects, but you won’t need to worry about a number of them. In this post, I’m going to start with the most useful and then add others if I find that they’re worth covering.

    image
    - Exploring the Taxonomy DLL in the Object Browser

    But if you’re curious, here’s the full list:

    ChangedGroup
    ChangedItem
    ChangedItemCollection
    ChangedItemType
    ChangedOperationType
    ChangedSite
    ChangedTerm
    ChangedTermSet
    ChangedTermStore
    FeatureIds
    Group (used in the sample below)
    GroupCollection
    HiddenListFullSyncJobDefinition
    ImportManager
    Label
    LabelCollection
    MobileTaxonomyField
    StringMatchOption
    TaxonomyField
    TaxonomyFieldControl
    TaxonomyFieldEditor
    TaxonomyFieldValue
    TaxonomyFieldValueCollection
    TaxonomyItem (base class for classes such as Term and TermSet)
    TaxonomyRights
    TaxonomySession (used in the sample below)
    TaxonomyWebtaggingControl
    Term (used in the sample below)
    TermCollection
    TermSet (used in the sample below)
    TermItem
    TermStore (used in the sample below)
    TermStoreCollection
    TermStoreOperationException
    TreeControl

    TaxonomySession

    The first class to cover is TaxonomySession. To use the taxonomy API to manipulate managed metadata, you’ll first need to instantiate a TaxonomySession object. Microsoft describes the class in this way:

    “The TaxonomySession class creates a new session in which to instantiate objects and commit changes transactionally to the TermStore object. A TaxonomySession object can have zero or more TermStore objects associated with it. TermStore objects are associated with the Web application of the parent SPSite object.”

    I’m going to continue with the example I started in SharePoint 2010 Visual Web Parts, but don’t worry if you’re not interested in building a web part, I just happened to choose that as the example. You can use the same code from a number of different places (e.g., a Windows Form application). I won’t be covering remote access to the taxonomy API in this post since that will topic is worthy of its own attention.

    The starting point for this conversation is VisualWebPart1UserControl.ascx.cs from the simple web part example. I covered issues adding the references in SharePoint 2010 Taxonomy Reference Issues.

    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;

    // Added references
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.Taxonomy;

    public partial class VisualWebPart1UserControl : UserControl
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    using (SPSite site = new SPSite("
    http://localhost/"))
    {
    //Instantiates a new TaxonomySession for the current site.
    TaxonomySession session = new TaxonomySession(site);

    //Instantiates the connection for the current session
    TermStore termStore = session.TermStores["Managed Metadata Service"];

    // Write out the names of the term stores to a label
    Label1.Text = “”;
    foreach (TermStore termstore in session.TermStores)
    {
    Label1.Text += termstore.Name.ToString() + " … ";
    }

    // Write the name of the term store to a label
    Label1.Text += " Finished";
    }
    }
    }

    As you can see, this is a pretty straightforward example of how to get a TaxonomySession object and employ it. Once loaded, this web part will immediately write out the names of each term store available on the server.

    So let’s break it down. The first thing that happens inside the Page_Load method is getting an SPSite object. As mentioned above, TermStore objects are associated with the Web application of the parent SPSite object. By running the code within a using statement, you can rest assured that dispose() will be properly called on your objects. Since this web part project is using the SharePoint Visual Web part template, the only references I had to add were Microsoft.SharePoint (for the SPSite object) and Microsoft.SharePoint.Taxonomy (for the taxonomy objects).

    Now that you have a taxonomy session, you can start to use the taxonomy classes. In this case we’ll loop through each available term store on the server and write the results to a label. The label was simply dragged onto VisualWebPart1UserControl.ascx from the Toolbox onto design view for the web part.

    image
    - After dragging the label from the toolbox

    Pressing F5 will start the debugger and allow you to run the code as described in SharePoint 2010 Visual Web Parts.

    image
    - Running the web part to see the term store name

    In this case, there is only one term store, so only one name is returned. It’s a simple example but useful since you will need to know the name of your term store before you instantiate a term store object and start reading from or writing to your taxonomy.

    Note: If you get the name of your term store wrong, the error you see may not immediately tip you off that you’re fat fingered the text value. The error is:

    System.ArgumentOutOfRangeException was unhandled by user code
    Message=Specified argument was out of the range of valid values.
    Parameter name: index
    Source=Microsoft.SharePoint.Taxonomy
    ParamName=index
    StackTrace: at Microsoft.SharePoint.Taxonomy.Generic.IndexedCollection`1.get_Item(String index)

    The Hierarchy of Managed Metadata

    As explained in SharePoint Taxonomy Part One – Introduction to SharePoint Managed Metadata, the SharePoint 2010 EMM is organized into a hierarchy. The objects within this hierarchy are term stores, groups, term sets, and terms. For more info about the EMM hierarchy, refer to my SharePoint Taxonomy Hierarchy post.

    There are the rules for the taxonomy hierarchy (the latter three are from Microsoft):
    When a Managed Metadata service is created, a term store will be created. Once you have a term store, you can create a group. The Taxonomy API cannot create a term store (it is done through Central Administration or with a PowerShell script). However, the rest of the EMM containers can be created using the Taxonomy API.
    • After a Group object is created, the first TermSet object can be created. A TermSet object must be the child of a single parent Group object.
    • After a TermSet object is created, the first Term object can be created. A Term object can be the child of a TermSet object, or of another Term object.
    • After a Term object is created, another Term object can be created and added as a child Term object.

    Method to the Madness

    Here are some common methods that you’ll use when working with the EMM API:

    termStore.CreateGroup()
    group.CreateTermSet();
    termSet.CreateTerm()
    term.SetDescription()
    term.CreateLabel()
    term.Delete()
    termStore.CommitAll()

    Let’s start with the last one first: the CommitAll method. After performing write operations to a TermStore object, you must call CommitAll to commit the transactions. The taxonomy API is transactional so either every operation will be successfully committed, or none of the changes will be applied. As you saw in the list of classes above, the object model also includes changes. For example, ChangedItem and ChangedGroup. These are used to record what has happened.

    The SetDescription method allows you to create a description for the term and you can use CreateLabel to create synonyms. You can choose whether the label will be the default using a true or false Boolean. Of course, the Delete method will delete an object.

    Note that when creating a term or label, EMM provides the ability to supply the same term in different languages. This provides a number of multilingual features, but it also means that you’ll need to supply a Locale Identifier (LCID) when using some of the create methods. Windows uses the LCID to choose the language and culture when displaying information. The ID for English is 1033.

    Here’s a longer version of the using statement from above--it shows an example of these methods in action:

    using (SPSite site = new SPSite("http://localhost/"))
    {
    //Instantiates a new TaxonomySession for the current site.
    TaxonomySession session = new TaxonomySession(site);

    //Instantiates the connection named "Managed Metadata Service" for the current session.
    TermStore termStore = session.TermStores["Managed Metadata Service"];

    Group group = termStore.CreateGroup("Africa");
    TermSet termSet = group.CreateTermSet("South Africa");
    Term term = termSet.CreateTerm("Cape Town", 1033);
    term.SetDescription("This is the city term for Cape Town", 1033);
    term.CreateLabel("Cape of Good Hope", 1033, false);
    Term termChild = term.CreateTerm("Newlands", 1033);
    termChild.Delete();
    termStore.CommitAll();

    Label1.Text = " Finished";
    }

    image
    - The hierarchy has been created and the description and label were set

    [Disclaimer: This information is based on SharePoint 2010 Beta 2 and may differ from the RTM build.]

    SharePoint Conferences in 2010

    To help organize my time, I’m going to get started on my conference list early this year. I don’t have many details about which conferences Metalogix will exhibit at, or where I’ll be speaking, but at least I can put the dates in my calendar. I’ll add the missing information when it’s available.

    SharePoint Saturday New York (#spsnyc) – January 30, NY – Speaker (Enterprise Metadata Management (EMM), Taxonomy)
    SPTechCon (#SPTechCon) – February 10-12, San Francisco – Live Blogger for EndUserSharePoint.com
    Kollabria SharePoint Seminar series – February 11, San Francisco – Speaker (Migration)
    Microsoft MVP Summit - February 16-19, Redmond, WA - Speaker (Migration to SharePoint blogs)
    SharePoint Pro – March 16-19, Las Vegas
    Kollabria SharePoint Seminar series – March 23, Atlanta – Speaker (Migration)
    SharePoint Summit – April 12-14, Montreal
    SharePoint Pro Connections Deep Dive – May 10 – Speaker (EMM, Taxonomy)
    SharePoint Saturday Washington, DC (#spsdc) – May 15 – Speaker
    Microsoft TechEd – June 7-10, New Orleans
    Microsoft Worldwide Partner Conference – July 12–15, Washington, D.C. (Booth Staff)
    SharePoint Saturday New York (#spsnyc), July 31st, Microsoft Manhattan Office (Booth Staff)
    Microsoft PDC -- October 28-29, Redmond
    Microsoft SharePoint Conference – No conference in 2010
    SharePoint Connections (DevConnections) -- November 1-4, Las Vegas
    Microsoft TechDays in Halifax – November 2-3, Halifax, Canada. World Trade Centre
    TechEd Europe -- November 8-12, Berlin

    image

    Tuesday, December 29, 2009

    SharePoint Saturday New York Presentation

    I'll be speaking about SharePoint 2010 Managed Metadata (taxonomy) at SharePoint Saturday in New York (#spsnyc) on January 30th.

    website: http://www.sharepointsaturday.org/ny

    I’ve been digging into the new taxonomy features and I’m looking forward to showing off some code.

    image