3/04/2010

SharePoint Events in 2010

 

Joel Oleson has a nice comparison of SharePoint events here:
http://www.sharepointjoel.com/Lists/Posts/Post.aspx?ID=299

 

 

SharePoint Events in 2010

 

SPTechCon

http://www.sptechcon.com/

Feb 10-12, San Francisco

 

Central Region SharePoint Conferences

http://www.sharepointconferencecentral.com

St. Louis  April 12-16, 2010
Omaha April 27, 2010
Kansas City April 29, 2010
Nashville May 10, 2010

 

SharePoint Summit 2010

http://www.sharepointsummit2010.com

April 12-14, 2010 Montreal

 

SharePoint Conference .Org 2010

http://www.sharepointconference.org

April 18-21, 2010 Baltimore, Maryland

 

SharePoint 2010 Evolution Conference

http://www.sharepointevolutionconference.com/

April 19-21 London, UK

 

Best Practices Conference

http://www.bestpracticesconference.com/

August 24-27, 2010 - Washington, DC

 

Experts Conference 2010

http://www.theexpertsconference.com

April 25-28, 2010 Los Angeles

 

Microsoft Tech-Ed North America

http://www.microsoft.com/events/techednorthamerica/

June 7-10  New Orleans

 

Australia SharePoint Conference

June 16-17, 2010 – Sydney, Australia

 

SEA SPC – South East Asia SharePoint Conference – Singapore

www.sharepointconference.asia

October 26 and 27 2010

 

 

 

And in 2011

AUS SPC – Australian SharePoint Conference 2011 – Sydney, Australia

http://spevents.co.nz/AUSPC2011/default.aspx

March 8 and 9

NZ SPC – New Zealand SharePoint Conference 2011 – Wellington, New Zealand

http://spevents.co.nz/NZSPC2011/default.aspx

March 16 and 17

tech-ed 2011!  

http://northamerica.msteched.com/registration?fbid=PUo2p5_ZYzO

May 16-19 in Atlanta

 

SharePoint Conference 2011

October

It’s June 2010 and Microsoft SharePoint Team is announcing SharePoint Conference 2011:

http://blogs.msdn.com/b/sharepoint/archive/2010/06/08/save-the-date-sharepoint-conference-2011.aspx

(Maybe it’s a way of saying… no SharePoint Conference 2010!)

The conference site is already online!  http://www.mssharepointconference.com/Pages/default.aspx

2/19/2010

SharePoint Certification

 

Update (yet again)… Microsoft has updated the  “Skill Measured” sections on two more of the SharePoint 2010 exams. See here:   70-667 and  70-668

Update (again)… Microsoft has updated the  “Skill Measured” sections on two of the SharePoint 2010 exams. See here:   70-573 and  70-576

Update… Microsoft has posted some news on the SharePoint 2010 Exams… but still no links or date. They do state that there are no “upgrade” exams for those who already have the 2007 certs.  See here.

 

Below is a list of the SharePoint exams, the certification you get from the exam and classes to prepare for the exam. Both SharePoint 2007 and 2010 have two exam paths with two exams each. Each of the 2007 exams have hyperlinks to details on Microsoft.com. I will update the 2010 links when they are available.

 

SharePoint 2007

 

Exam Cert

Microsoft Official Curriculum:

 

70-631

MCTS:Microsoft Windows SharePoint Services 3.0, Configuring

5060A: Implementing Microsoft Windows SharePoint Services 3.0 (2 Days)

or

6438A: Implementing and Administering Windows SharePoint Services 3.0 in Windows Server 2008 (2 Days)

 

70-630

MCTS: Microsoft Office SharePoint Server 2007 – Configuration

5061A: Implementing Microsoft Office SharePoint Server 2007 (3 Days)

 

70-541

MCTS: Microsoft Windows SharePoint Services 3.0 – Application Development

None from Microsoft.

I recommend: MA-1038  (I wrote it!)

 

Follow my progress in preparing for this exam here.

 

Are you already 2007 certified? If not, see here,

 

70-542

MCTS: Microsoft Office SharePoint Server 2007 – Application Development

None from Microsoft.

I recommend: MA-1038  (I wrote it!)

 

 

 

SharePoint 2010

These exams will not be available until summer (July 12th?) 2010.

(I get a kick out of the “brain dump” sites that are already advertising “dumps” and “actual test questions” for exams that don’t exist yet!)

Links are not available yet to official MS Pages. All of the following may change…

Exam Cert

Microsoft Official Curriculum:

 

70-667

TS: Microsoft SharePoint 2010, Configuring

10174 - Configuring and Managing Microsoft SharePoint 2010

Will cover configuration of SharePoint 2010 including deployment, upgrade, management, and operation on a server farm.

 

70-668

PRO: SharePoint 2010, Administrator

10231A - Configuring and Managing Microsoft SharePoint 2010

Will cover advanced SharePoint 2010 topics including capacity planning, topology designing, and performance tuning.

 

70-573

TS: Microsoft SharePoint 2010, Application Development

10175A Developing and Customizing Applications for Microsoft SharePoint 2010

Five-day instructor-led course designed for developers with six months or more of .NET development experience. Course covers what you need to know to be an effective member of a SharePoint development team using Visual Studio 2010.

 

70-576

PRO: Designing and Developing Microsoft SharePoint 2010 Applications
 

10232A - Designing Applications for Microsoft SharePoint 2010

Five-day instructor-led training course designed for development team leads who have already passed the Developing on SharePoint 2010 technical specialist exam. The course covers choosing technologies for and scoping a SharePoint project, best practices for SharePoint development, configuring a SharePoint development environment, advanced use of SharePoint developer features, and debugging of code in a SharePoint project.

 

 

70-667 + 70-668 will get you SharePoint 2010 MCITP (Microsoft Certified IT Professional). (according to here)

70-573 + 70-576 will get you SharePoint 2010 MCPD (Microsoft Certified Professional Developer). (according to here)

2/16/2010

SharePoint: How to move a Data View Web Part to another site or server

(Tested for SP 2007 only)

 

A Data View Web Part (DVWP) is a web part created using SharePoint Designer that can display data from just about any kind of data source, inside or outside of SharePoint.  Moving the web part from site A to site B or from server A to server B should be as simple as exporting it from one site and importing it into the other. Should be…

 

If the DVWP is not using data from a SharePoint list, then moving it is pretty easy.

From the site where you created and tested the DVWP:

  1. Click the dropdown arrow in the web part's title bar, click Export and save the file
  2. Move the file to the other server if needed
  3. Open the new site and the page for the web part
  4. Click Site Actions, Edit Page
  5. Click Add a Web Part
  6. At the bottom of the popup window click “Advanced Web Part gallery and options”
  7. Now for the tricky part… find the Import button!
    In the “Browse” bar at the top of the panel there is a dropdown arrow. Click it and click Import
  8. Browse to your exported file and click Upload
  9. Drag the uploaded web part (usually a yellow bar with the name of the web part) to the desired web part zone

 

If the DVWP is using data from a SharePoint list then you have a little more work.

Your web part will have a Globally Unique ID (GUID) to indentify the list. This ID will be different for every list you create.

First get the GUIDs (There are several ways to do this, here’s one…)

  1. Go to the list in the site where you created the DVWP and go to the list or library
  2. Click Settings and List (or library) Settings
  3. Look in the browser’s address bar and you will see something like this:
    http://maxsp2007/sites/training/_layouts/listedit.aspx?List=%7B81588B61%2D860D%2D4487%2DB81F%2DA1846A37954B%7D
  4. Copy everything after the “List=” and paste into Notepad 
    You should now have something like this in Notepad:

    %7B81588B61%2D860D%2D4487%2DB81F%2DA1846A37954B%7D
     
  5. The GUID you copied is encoded. You now need to clean this up
    1. Delete the “%7B” at the beginning
    2. Delete the “%7D” at the end
    3. Do a search and replace and change “%2D” to “-“  (a dash)
  6. Export the DVWP - click the dropdown arrow in the web part's title bar and click Export and save the file
  7. Open the exported file in another Notepad
  8. Search for the GUID you just cleaned up and replace with the name of your web part (“Announcements”)
  9. Search for “ListId” and replace with “ListName”   (capitalization is important here)
  10. Save the file and then import the web part using steps 3-9 in the first set of instructions above.

If you see “Unable to display this Web Part. To troubleshoot the problem…” then you messed something up with the GUID, the ListId vs ListName, or maybe the source list has a column the destination list does not.

 

.

2/13/2010

SharePoint 2010: VHDs Now Available - Updated

 

Updated again!  The RTM (the official release version) is now available… see here: http://techtrainingnotes.blogspot.com/2010/05/sharepoint-2010-evaluation-vhd-download.html

 

Updated: http://techtrainingnotes.blogspot.com/2010/02/sharepoint-2010-vhds-now-available.html

 

I have updated this article with more info about the SharePoint 2010 VHD download…

  • I have added some more info on the install process
  • I have added a list of what I “found” in the VHDs (password, software installed, etc)
  • I have documented some version and setup info (IPs etc)

2/11/2010

SharePoint: Application page to display all sites a user can view

 

This sample project works for both SharePoint 2007 and 2010!

This project is for educational purposes and is to be used at your own risk…

 

 

Display a list of all sites a user has rights to…

The following is a “demo” project to show the workings of several SharePoint API features:

  • Iterating through all sites in a farm
  • Checking user rights
  • Using an application page and the application master page
  • and using a SharePoint grid control (SPGridView)

What’s interesting is that the majority of the code ended up supporting the SPGridView!

 

image

With only a change to the master page (application.master to applicationV4.master) it looks like this in SharePoint 2010 (beta).

image

 

Deployment

Deploy the two files to the LAYOUTS folder on each web front end server. Best practice is to create a folder with a unique name and put your files there. Something like:

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\techtrainingnotes\mysites\

 

Then you can test the pages from any site like this:

http://maxsp2007/sites/training/_layouts/techtrainingnotes/mysites/Default.aspx

 

 

MySites.aspx

Here’s the ASPX file. Just two content tags, a dropdown list, two labels and the grid control. Note the @Register for Microsoft.SharePoint.WebControls needed for the SPGridView control.

For SharePoint 2010 you should change application.master to applicationV4.master.

 
<%@ Page Language="C#" MasterPageFile="~/_layouts/application.master" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" %>
 
<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
    Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
 
<asp:Content ID="Content2" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server">
    Site Access List
</asp:Content>
 
<asp:Content ID="Content1" ContentPlaceHolderID="PlaceHolderMain" runat="server">
 
    <asp:DropDownList ID="ddlScope" runat="server" AutoPostBack="True">
        <asp:ListItem Value="Site">The current Site Collection</asp:ListItem>
        <asp:ListItem Value="WebApplication">The current application</asp:ListItem>
        <asp:ListItem Value="Farm">The entire farm</asp:ListItem>
    </asp:DropDownList>
    <br />
 
    <asp:Label ID="lblCount" runat="server" Text=""></asp:Label>
    Sites available to:
    <asp:Label ID="lblUserName" runat="server" Text=""></asp:Label>
 
    <SharePoint:SPGridView runat="server" ID="SPGridView1" AutoGenerateColumns="false" />
    <SharePoint:SPGridViewPager ID="SPGridViewPager1" GridViewId="SPGridView1" runat="server" />
 
</asp:Content>

 

MySites.aspx.cs

Here’s the code for that finds the sites the user has access to. The code that does to real work here is pretty simple. The key methods are:

  • GetSiteCollectionSites(SPSite) – this iterates through the web.AllWebs collection of the SPSite and checks to see if the user has at least the “ViewPages” permission 
     
  • GetApplicationSites(SPWebApplication) – this iterates thorough the Sites collection and calls GetSiteCollectionSites for each site found
     
  • GetFarmSites() – this iterates through all of the WebApplictions in the farm and calls GetApplicationSites for each SPWebApplication found. (Note that this requires higher permissions that most users have so it has to be run using RunWithElevatedPrivileges

The rest of the code is used to setup the SPGridView.

 

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.WebControls;
using System.Data;
 
public partial class _Default : System.Web.UI.Page
{
    DataTable dt = new DataTable();
    SPUser user;
 
    protected void Page_Load(object sender, EventArgs e)
    {
        //get the logged in user
        user = SPContext.Current.Web.CurrentUser;
        lblUserName.Text = user.Name;
 
        //setup the datatable
        dt.Columns.Add("URL", typeof(string));
        dt.Columns.Add("Title", typeof(string));
        dt.Columns.Add("Description", typeof(string));
 
        //get the sites
        string scope;
        scope = ddlScope.Text;
        switch (scope)
        {
            case "Farm":
                GetFarmSites();
                break;
            case "Site":
                GetSiteCollectionSites(SPContext.Current.Web.Site);
                break;
            case "WebApplication":
                GetApplicationSites(SPContext.Current.Site.WebApplication);
                break;
        }
 
        lblCount.Text = dt.Rows.Count.ToString();
 
        //add columns to the grid
        int cols = dt.Columns.Count;
        SPGridView1.Columns.Clear();
        for (int i = 0; i < cols; i++)
        {
            if (i == 0)
            { //add hyperlink column
                HyperLinkField newColumn = new HyperLinkField();
 
                newColumn.HeaderText = dt.Columns[i].ToString();
                newColumn.DataTextField = dt.Columns[i].ToString();
                newColumn.DataNavigateUrlFields = new string[] { dt.Columns[i].ToString() };
                newColumn.DataTextFormatString = "";
                newColumn.SortExpression = dt.Columns[i].ToString();
                SPGridView1.Columns.Add(newColumn);
            }
            else
            { // add all other columns
                SPBoundField newColumn = new SPBoundField();
                newColumn.HeaderText = dt.Columns[i].ToString();
                newColumn.DataField = dt.Columns[i].ToString();
                newColumn.SortExpression = dt.Columns[i].ToString();
                SPGridView1.Columns.Add(newColumn);
            }
        }
 
        //set a default sort
        dt.DefaultView.Sort = "URL";
 
        SPGridView1.DataSource = dt;
        SPGridView1.DataBind();
        //all done
    }
 
 
    // get all webs in a site collection and see if the user has View access
    void GetSiteCollectionSites(SPSite site)
    {
        // all webs in the site collection
        foreach (SPWeb web in site.AllWebs)
        {
            if (web.DoesUserHavePermissions(user.LoginName, SPBasePermissions.ViewPages))
            {
                DataRow row = dt.NewRow();
                row["URL"] = web.Url;
                row["Title"] = web.Title;
                row["Description"] = web.Description;
                dt.Rows.Add(row);
            }
            web.Dispose();
        }
    }
 
    //get all site in an application
    void GetApplicationSites(SPWebApplication wa)
    {
        // all site collections in the application
        foreach (SPSite site in wa.Sites)
        {
            GetSiteCollectionSites(site);
            site.Dispose();
        }
    }
 
    //get all applications in the farm
    void GetFarmSites()
    {   //get all of the services
        SPWebServiceCollection webServices = new SPWebServiceCollection(SPFarm.Local);
 
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
 
            foreach (SPWebService webService in webServices)
            {   //get all of the applications from each service
                foreach (SPWebApplication webApp in webService.WebApplications)
                {
                    GetApplicationSites(webApp);
                }
            }
 
        });
    }
}

 

If I get the time… I’ll post a longer version of this that adds sorting, paging, a menu bar and some other bells and whistles .

 

.

SharePoint: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level

 

“It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.”

 

If you are working on a SharePoint application page project then this error is most likely because you have a web.config file in your project.

So:

  • Don’t deploy the web.config to the LAYOUTS folder
  • Or if you need the web.config for any reason (testing, etc) then delete the authentication section:
        <authentication mode="Windows"/>

 

.

2/10/2010

SharePoint: How to find all files of a certain type and then download easily

 

The goal…

To find all .XYZ files in all of my sites, libraries and folders and then easily copy them to a local drive.

Finding them is not too hard, you can use search for “*.xyz” or use a Content Query Web Part to find them, but how do you now download them?

 

Windows Explorer to the rescue…

I need to start by saying that Windows Explorer access to SharePoint can be “finicky”, but this works for me. This process depends on the version of Windows... Vista and Server 2008 (and probably Windows 7), but not Server 2003 has a search box at the top of the Explorer screen that works for SharePoint. Windows Server 2003 does not display the right-click search option when looking at web sources.

 

Steps:

  • Go to your top level site of the site collection and pick a document library
  • Click Actions, Explorer View
  • Click the Folders button in the Windows Explorer toolbar
  • In the folder pane click the top node/folder for the site collection    (sitename on servername)
  • Click in the Search box at the top of Windows Explorer and type something like *.doc
  • Select the files and copy and paste or drag and drop to a local disk drive

Notes:

  • As you are selecting all files from all subsites and all libraries you may get files with duplicate names and will need to deal with the duplicates.
  • Security is still enforced. You will only see files from sites/libraries/folders that you have rights to)
  • Windows Explorer, when used this way, only searches on the file names, not the content.

Note to spammers!

Spammers, don't waste your time... all posts are moderated. If your comment includes unrelated links, is advertising, or just pure spam, it will never be seen.