Search

rafelo

Advancing Productivity and Operational Efficiency through Cloud Services and Apps

Category

WSS

Back to Basics: Using Folder Structures in SharePoint Libraries

This is a topic that keeps on surfacing, and I don’t expect it to go away any time soon: When should we (if at all) use folder structures in SharePoint Libraries? As much as I hate to admit it, there is no simple answer. But personally, I don’t often see many compelling reasons to use folders in SharePoint.

Folders are essentially just another solution, or tool, to address a specific need; organizing files, or data, in some sort of logical structure, so that users can easily and/or quickly find the files or information that they are looking for. But using folders for this purpose with SharePoint would be much like using a modem to connect to the internet, while you had an Ethernet or WIFI connection readily available. Or storing your contacts on a rolodex, while having an electric organizer, PDA, or cell phone.

But if folders are so antiquated and inefficient, why does SharePoint gives us the option to use them? I can think of a couple of reasons, and have ran into some of them personally. I’ll elaborate on these a bit later, first I’d like to go over some of their limitations; some examples of why we should not use folders.

For starters folders are hierarchical in nature, and force us into a single structure per implementation; this alone has many implications. Consider the following scenario:

You’ve been given the task of organizing and maintaining manuals for specific systems within your organization (phone, fax, printers, copiers, voicemail, video conferencing, etc.) . Your organization is composed of several regions, each with specific divisions and offices in different locations. Not all offices share the same products or services (some do.) All of the offices share a common network. You’ve been given three simple requirements:

  1. Group A needs to browse the files by location (ex. Region > Division > Office)
  2. Group B needs to browse the files by product type (ex. Printers, Fax Machines, Copiers)
  3. Group C needs to browse the files by vendor (ex. HP, Kodak, Lanier, Polycom)

You’d be in quite a predicament…. You could create a folder structure such as the following:

  • Manuals
    • North America
    • South America
    • Asia
      • Division 1
      • Division 2
        • Office 1
        • Office 2
          • Phones
          • Fax Machines
          • Printers
          • Copiers

Which would satisfy the requirement of group A. But groups B and C would not likely be satisfied, and to make matters worse, you’d likely have to maintain duplicates of the same manuals (which you could possibly mitigate by utilizing shortcuts.)  But all in all not a very elegant solution, some might say it is quite the opposite.

Alternatively you could create a folder structure like this:

  • Manuals
    • Phones
    • Fax Machines
    • Printers
    • Copiers
      • HP
      • Kodak
      • Lanier

This would likely meet the requirements of group B and maybe even group C. It would also do away with duplicates. But what about group A.

There are many variations to this scenario, and the requirements may not always be given up front. A specific folder structure may work well for a period of time, and suddenly change; management may decide they want to view files in a different way.

But why would you try to use folders in the first place, when you could rely on views? Views would meet any one and all of these requirements. The information captured in the folder names should be stored as metadata with the specific files. You could then create a view that groups by; Region, Division, and Office; another that groups by Product Type; and yet another that groups by Vendor. Given the right AD groups and putting a little extra work towards setting up audiences, and you could create a page that automatically shows a different web part with the correct view for each group.

Some other reasons not to use folders:

  1. If you are basing your folder structure on your organizational hierarchy; keep in mind that these hierarchies can and often do change. Something much easier to manage using site columns, and views.
  2. If you do have to change the value of a Region, Division, or Office; which you’ve happened to use in your folder structure. Any links, bookmarks, or shortcuts to these files would probably break as the folder names form part of the Url.
  3. Folders increase the length of the Urls, which can cause errors after reaching a certain limit.
  4. Get your users thinking outside the box. Giving your users a couple of views that have properly named helps them think of other ways to look at the data. Even when your views closely resemble a folder structure. For instance giving them a view named “Products by Region”, lets them know that they could just as easily have a “Products by Office”, “Products by Type”, or “Products by Vendor”. And that they themselves could create similar views for the data they are responsible for in SharePoint.

So why does SharePoint offer folders in the first place, if you can just as easily and more efficiently organize your data with views? The following are a few scenarios where I’ve seen folders come in handy:

  1. Folders make it easier to apply different set of permissions to logical groups of files within a single library. However, keep in mind that this can and often should be accomplished by using different libraries. If you are worried about consistency across the libraries; consider using content types, or a library template.
  2. Copying files from libraries in bulk (using explorer view) and keeping some sort of logical structure. In my experience I don’t often see many scenarios that require users to copy files in bulk. While certain users may have the need to do this every once in a while, consider the repercussions, and remember that you should be configuring your library for the norm and not the exception. If copying or moving files in bulk happens to be the norm if your scenario; consider creating a new sub site for the group as a whole and splitting the files up into multiple libraries within that sub site.
digg_url = “https://blog.rafelo.com/2009/09/back-to-basics-using-folder-structures.html”;digg_title = “Back to Basics: Using Folder Structures in SharePoint Libraries”;digg_bgcolor = “#FFFFFF”;digg_skin = “compact”;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;

Editor Parts – Extending the Web Part Editor Tool Pane (HSPUG)

This week, I gave a presentation on “Editor Parts” at Houston’s SharePoint User Group event. It included a live demo on how to build an Editor Part that displays a dropdown of all of the Lists for the site where the corresponding web part is being deployed. I’m including links to download the presentation and source code below:

Download Presentation

Download Source Code

Just Released – MSDN: Securing Application Pages in Windows SharePoint Services 3.0. By me :)

An article I recently wrote has just been published on MSDN. It covers the basic principles of securing application pages, and why they are often at risk; as well as providing code samples on how to properly secure your application pages, including:

  • How and when to validate page requests
  • How to verify Base Permissions
  • How to verify Role Definitions
  • How to verify Group Memberships

Check it out at: Securing Application Pages in Windows SharePoint Services 3.0 (http://msdn.microsoft.com/en-us/library/dd878359.aspx)

Project Planning for SharePoint Implementations

Last week, I presented this topic at the Houston SharePoint Users Group. I really enjoyed giving the presentation, only slightly disappointed that I wasn’t able to attend the technical track which was occurring simultaneously…. I’ll get over it though 🙂

The presentation itself contains a lot of useful information. Thanks to all who provided feedback, and my colleagues at Catapult who helped put it together.

I have uploaded the presentation here
(http://www.rafelo.com/ProjectPlanningforSharePoint.pptx)

digg_url = “https://blog.rafelo.com/2009/05/project-planning-for-sharepoint_27.html”;digg_title = “Project Planning for SharePoint Implementations”;digg_bgcolor = “#FFFFFF”;digg_skin = “compact”;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;

SharePoint Developer Training – Weekend Crash Course, Houston Texas

I am now offering this same course with Field Advantage Training, check them out at http://www.fieldadvantagetraining.com/ for the latest on upcoming sessions, pricing, and new courses. The name of the course has been changed to SPDC101 – Core SharePoint 2007 Development.

The last SharePoint Developer – Weekend Crash Course was a complete success. I’d like to extend a big thanks to all of you who participated in helping me put it together, and to all of the attendees for your positive feedback and references; you all rock!

Based on the number of inquiries I’ve had from readers and references who’ve shown interest in taking the course, I’ve decided to repeat the course here in Houston on September 12th and 13th of 2009.

Course Description
This course is designed to cover the most common and critical SharePoint development topics I’ve come to expect from SharePoint implementations, based on several years of experience across multiple industry sectors. The course is meant for experienced .NET developers with entry to mid level SharePoint development experience.

The class will consists of a series of discussions and instructor led hands-on labs. The full agenda has been listed below. Attendees will need to bring their own laptops, for which I have posted minimum requirements (see hardware and software requirements below.)

Attendees will receive:

  • An external USB 2.0 Hard Drive with 80 GB or more of storage
  • A Virtual PC image running trial versions of Windows 2003, SharePoint 2007, and Visual Studio (included in the hard drive.)

Course Agenda


Day 1

Core Concepts (8:30 am – 9:45 am)
• Customization vs. Development
• SharePoint Designer
• Visual Studio
• Content Types and Site Columns
• Site Templates and Site Definitions
• Master Pages and Page Layouts
• Features
• Solution Packages

15 minute break

Extending the Out of the Box Experience (10:00 am – 12:00 pm)
Instructor led Hands On Lab
• Creating Custom Content Types
• Customizing the Content Query Web Part
• Connecting to Web Services with the Data Form Web Part
• Customizing Search and People Search Results

1 hour lunch break

Custom Web Part Development (1:30 pm – 2:45 pm)
Instructor led Hands On Lab
• Creating a List Aggregator Web Part

15 minute break

Custom Site Definitions (3:00 pm – 5:00)
Instructor led Hands On Lab
• Creating a Custom Site Definition
• Lists and Libraries
• Provisioning Files into Libraries
• Adding Web Parts and Web Part Pages
• Provisioning Multiple Sites from a Single Template (The Portal Concept)


Day 2

Feature Development and Feature Stapling (8:30 am – 9:45 am)
Presentation and Instructor led Hands on Lab
• Feature Scopes
• Site Features
• Site Collection Features
• Web Application Features
• Farm Features
• Feature Elements
• Feature Receivers
• Creating a Custom Master Page Feature
• Creating a Feature Stapler

15 minute break

Content Types and Event Handlers (10:00 am – 12:00 pm)
Instructor led Hands On Lab
• Developing and Deploying Content Types with Features
• Developing and Registering Event Handlers

1 hour lunch break

Custom Application Pages and Extending the Menu System with Action Items (1:30 pm – 2:45 pm) Instructor led Hands On Lab
• Creating a Custom Application Page
• Adding Menu Items to the Site Actions and Site Settings Menus
• Creating a Custom Administration Page
• Adding Menu Items to Central Administration

15 minute break

SharePoint Solution Packaging and Deployment (3:00 pm – 5:00pm)
Instructor led Hands On Lab
• Packaging Features and Site Definitions
• Packaging Application and Administration Pages
• Assemblies and Safe Control Entries

Hardware and Software Requirements:

  • Laptop computer with a processor speed of at least 2.5 GHz with Hyper Threading or Dual Core Technology
  • RAM capacity of 2 GB minimum (3-4 GB recommended)
    Must be able to allocate a minimum 1 GB of RAM to the Virtual OS
  • Operating System: Windows XP Professional or Windows Vista
  • Additional Software: Adobe Acrobat, Microsoft XPS Viewer

Additional Information:

  • This course is not meant to provide an introduction to SharePoint or the .NET framework. Attendees are expected to have experience with the SharePoint platform as well as .NET development with Visual Studio.
  • Registration is limited.

Cost:
550 US dollars per person
(group discount rates available)

Location:
Catapult Systems, Houston
10370 Richmond Ave. Suite 1250, Houston, TX 77042

Registration:

1. Click here to download the registration form
2. Complete the registration form and fax toll free to (877) 819-0945

Call 832-472-3648 or e-mail training@rafelo.com for more information

Please refer to http://www.rafelo.com/sharepointtraining for the latest information.

Here’s what some of the attendees had to say about the last session:

“Rafael’s Developer Crash Course was excellent! It really was a crash course covering a lot of concepts in a short period of time. But every item covered was a practical, real-world solution that I can use as a .Net Developer to help our Administrators more easily manage our SharePoint farm. And he made it easy….” – Barry Thomas, Panhandle Energy

“I was excited about the class before it started and was not disappointed when it was over. You delivered everything I expected and more.” – Don McKenzie

“Rafael provided clear, step-by-step instruction as to the ins and outs of content management in Microsoft Office SharePoint Server 2007. I would recommend this class as an effective, inexpensive way to hone your SharePoint development skills.” – Troy Lanphier, Catapult Systems

“Rafael’s training series gets two thumbs up. The precision of this course was a balance of a technical and functional workshop to illustrate real life scenarios of business solutions utilized in our day to day corporate operations.” ”I recommend this course to developers and functional people who wish to add value to their organization and grow within the SharePoint community. Rafael, best wishes and continued success on all of your SharePoint endeavors.” – Reece Collins, Inseptions

“Prior to attending the class, I was convinced that I would need a great deal of C# training before I could begin to develop in SharePoint. Rafael’s class provided insight that allowed me to build and deploy solutions for my clients’ SharePoint environments.” – Marlene Lanphier, GUIO

del.icio.us Tags: SharePoint,MOSS,WSS,Development,Training
Technorati Tags: SharePoint,MOSS,WSS,Development,Training

 

Submitting Items to Lists from Custom Application Pages

This posting is in response to a comment I had on a previous posting; “Using the InputFormSection and InputFormControl to build Custom Application Pages that look like OOTB Pages”. One of the readers posted a comment asking how to go about using the submit button to post to a list. Needless to say, I didn’t feel that answering his question by replying to his comment would be the best response. So I’ve decided to post my response here, where its a little bit easier to elaborate on the subject.

Application pages can in fact be used to create list items, but there are a number of things to consider. The first and probably most important thing, is that application pages can be accessed from any site in your SharePoint farm. If the list the form is meant to write to is accessible globally this may not be much of a problem, but I’d have to question how that list was created and where it is stored. Application pages are part of what I consider to be a fairly modular development framework in SharePoint, and the scenario mentioned doesn’t sound very modular at all; a page that is deployed or accessible from every site, but the list it writes to is only deployed to one. What if the site containing the list is deleted? Or certain fields changed? The site administrator would likely be able to do either, but he/she wouldn’t be able to update the Application Page, which would likely break.

So how do I recommend using Application Pages to write to lists? There are many ways, most (if not all) of which would involve Features. The following is a sample approach:

1. Develop a site or site collection Feature that creates a list. Since we will be writing to this list from a Custom Application Page, I recommend that the list be hidden. This recommendation stems from the fact that we don’t want anybody accidentally deleting or modifying the list, which may impact the Application Page. Of course this would probably mean creating another page to view and/or edit list items; this could be a Content Page or Application Page.

2. Develop the Application Page that writes to the list created by the feature, including logic in it that checks if the feature is activated. If the logic determines that the feature is not activated, the page should display a message stating that the feature needs to be activated for the page to work.

3. Use Custom Actions and Custom Action Groups to create a link to the Application Page(s) from the “Site Settings”, or “Site Actions” menu.

I don’t mean to imply that an Application Page shouldn’t be used to save items to a single globally accessible list. But it requires even more consideration and planning than the scenario mentioned above. Actually, I’ve had to develop such pages; in one example the list resides in Central Administration and is created as part of a Feature scoped at the Farm level.

In another scenario, the list may not be hidden, or even created by the feature. The list may be manually created (to capture very specific criteria) by a site or farm administrator, in which case another Application Page may be used to capture the location of the list, and save it in the property bag of the site or site collection. The Application Page that writes to the list, fist looks at the property bag to determine its location, if the property has not been set, the page simply returns a friendly error.

Like the above mentioned scenarios, I’m sure there are hundreds more. The point is all of them require some thought. Unless strictly used to display information that you know is always available, an Application Page is rarely a solution as a whole. Take time to carefully plan and design your Application Pages, examine your solution from multiple angles making sure it doesn’t easily break. Remember, if you fail to plan you are planning to fail.

digg_url = “https://blog.rafelo.com/2009/05/submitting-items-to-lists-from-custom.html”;digg_title = “Submitting Items to Lists from Custom Application Pages”;digg_bgcolor = “#FFFFFF”;digg_skin = “compact”;digg_url = undefined;digg_title = undefined;digg_bgcolor = undefined;digg_skin = undefined;

Moving All SharePoint Databases to a New Server

The SharePoint team has released a new procedure on how to move SharePoint databases across servers. Until they are able to do so, it is available in the Microsoft download site at: http://www.microsoft.com/downloads/details.aspx?FamilyID=65686896-c171-46a8-a95f-54f43ad79952&displaylang=en

There are 2 separate procedures and both can be downloaded on the same page. One for moving databases to a server with the same name, and one for moving databases to a server with a different name.

Remember, This procedure is meant to move “ALL” SharePoint Databases to a new server. However, they are not able to publish it on TechNet at the time.

SharePoint Developer Training – Weekend Crash Course in Houston Texas

I am now offering this same course with Field Advantage Training, the name of the course has been changed to SPDC101 – Core SharePoint 2007 Development. Check us out at http://www.fieldadvantagetraining.com/ for the latest information on upcoming sessions, pricing, and new courses.

This course is designed to cover the most common and critical SharePoint development topics I’ve come to expect from SharePoint implementations, based on several years of experience across multiple industry sectors. The course is meant for experienced .NET developers with entry to mid level SharePoint development experience.

The class will consists of a series of floor discussions and instructor led hands-on labs. The full agenda has been listed below. Attendees will need to bring their own laptops, for which I have posted minimum requirements (see hardware and software requirements below.)

Attendees will receive:

  • An external USB 2.0 Hard Drive with 80 GB or more of storage
  • A Virtual PC image running trial versions of Windows 2003, SharePoint 2007, and Visual Studio (included in the hard drive.)

Course Agenda


Day 1

Core Concepts (8:30 am – 9:45 am)
• Customization vs. Development
• SharePoint Designer
• Visual Studio
• Content Types and Site Columns
• Site Templates and Site Definitions
• Master Pages and Page Layouts
• Features
• Solution Packages

15 minute break

Extending the Out of the Box Experience (10:00 am – 12:00 pm)
Instructor led Hands On Lab
• Creating Custom Content Types
• Customizing the Content Query Web Part
• Connecting to Web Services with the Data Form Web Part
• Customizing Search and People Search Results

1 hour lunch break

Custom Web Part Development (1:30 pm – 2:45 pm)
Instructor led Hands On Lab
• Creating a List Aggregator Web Part

15 minute break

Custom Site Definitions (3:00 pm – 5:00)
Instructor led Hands On Lab
• Creating a Custom Site Definition
• Lists and Libraries
• Provisioning Files into Libraries
• Adding Web Parts and Web Part Pages
• Provisioning Multiple Sites from a Single Template (The Portal Concept)


Day 2

Feature Development and Feature Stapling (8:30 am – 9:45 am)
Presentation and Instructor led Hands on Lab
• Feature Scopes
• Site Features
• Site Collection Features
• Web Application Features
• Farm Features
• Feature Elements
• Feature Receivers
• Creating a Custom Master Page Feature
• Creating a Feature Stapler

15 minute break

Content Types and Event Handlers (10:00 am – 12:00 pm)
Instructor led Hands On Lab
• Developing and Deploying Content Types with Features
• Developing and Registering Event Handlers

1 hour lunch break

Custom Application Pages and Extending the Menu System with Action Items (1:30 pm – 2:45 pm) Instructor led Hands On Lab
• Creating a Custom Application Page
• Adding Menu Items to the Site Actions and Site Settings Menus
• Creating a Custom Administration Page
• Adding Menu Items to Central Administration

15 minute break

SharePoint Solution Packaging and Deployment (3:00 pm – 5:00pm)
Instructor led Hands On Lab
• Packaging Features and Site Definitions
• Packaging Application and Administration Pages
• Assemblies and Safe Control Entries

Hardware and Software Requirements:

  • Laptop computer with a processor speed of at least 2.5 GHz with Hyper Threading or Dual Core Technology
  • RAM capacity of 2 GB minimum (3-4 GB recommended)
    Must be able to allocate a minimum 1 GB of RAM to the Virtual OS
  • Operating System: Windows XP Professional or Windows Vista
  • Additional Software: Adobe Acrobat, Microsoft XPS Viewer

Additional Information:

  • This course is not meant to provide an introduction to SharePoint or the .NET framework. Attendees are expected to have experience with the SharePoint platform as well as .NET development with Visual Studio.
  • Registration will be limited to 20 individuals.
Cost: 550 US dollars per person
(group discount rates available)
Location: Catapult Systems, Houston
10370 Richmond Ave. Suite 1250, Houston, TX 77042
Registration:

1. Click here to download the registration form
2. Complete registration form and fax toll free to (877) 819-0945
Call 832-472-3648 or e-mail training@rafelo.com for more information

Please refer to http://www.rafelo.com/sharepointtraining for the latest information.

Microsoft SharePoint Conference 2009 (In Vegas) Open for early registration

Microsoft has just announced the SharePoint Conference 2009 at the Mandalay Bay Events Center in Las Vegas, Nevada on October 19-22, 2009. They are calling it the conference to learn about SharePoint “14”. Go to http://www.mssharepointconference.com/ for more information, including early registration specials.

Create a free website or blog at WordPress.com.

Up ↑

%d bloggers like this: