February 2010
S M T W T F S
« Jan    
 123456
78910111213
14151617181920
21222324252627
28  

A SharePoint Design Question

Normally, I write solutions to problems.  This time around, I need some suggestions to get ideas on how to design a solution to a problem.

The credit department where I work accumulates/produces documents to support the credit limit they grant our customers.  We have categorized them as :

  • Financial Statements
  • Agency Reports
  • Parent Guarantees
  • Other

We have defined a content type for each of these types of documents.  With each of these documents, one common field is the Company Name field that describes the company that the document refers to.

The Company is unique in it’s structure.  Each Company can be a Parent company or it can be the Parent to other companies.  I created a Company list that had the fields Name and Parent where Parent was a lookup field type to the Company list.  We currently have the list populated by about 4500 company names with the parent relationships defined.

List: Company

  • Company Name, Text Field (required)
  • Parent, Lookup of Company List (Company Name field) (not required)

In the document list that contains the four content types, each content type has a Company field that is a lookup to the Company List.

When we were discussing how to design this “application”, the user talked about how he would like to have a view where he could see all documents that related to a company, whether these documents applied directly to the company or one of it’s subsidiaries.  Another requirement would be that the documents for one particular company would be easy to find/view.

As for volume, each company (so far at 4500) will have at minimum 1 of each document types but more than likely will contain 10 – 20 documents with a small growth rate.  There is no document disposition being considered.  From their standpoint, once a document goes into the system, it becomes a historical record for that company.  So – we’re looking at about 45,000-90,000 documents initially and it will grow.

My original thought was that to stay within the 2000 item soft limit per view, I would create a folder in the Document Library for each Company created in the Company list.  I would then have the users save their documents in the folder that corresponded to the company name.  To achieve the view of the data where they could see all documents that applied to the parent and child companies, I would use the relationships defined in the Company list to create a custom view using the DataView Web Part.

So – here are my questions:

  1. Do I need a separate folder for each company?  Am I limiting myself?
  2. If we just use a Company Name field using the lookup list, would we run into performance problems?
  3. If we do use the folder, is there a way to automate the creation of the folder when I create a new Company in the Company List.
  4. If we do use folders, is there a way to prevent documents from being created outside of the folders?
  5. Can a document inherit a property from it’s parent?  (i.e. could a document get it’s company name by being saved into a specific folder with the right company name?
  6. (If folder) How do I prevent users from saving documents into the document library outside of a folder?

I’m sure there are more questions that I need to be asking.  It has been so long since I worked in Designer or the Web interface.  I’ve been living in Visual Studio for the last year.  Leave comments / remarks / insults.  Anything is appreciated.

SharePoint Saturday – Indianapolis Wrap-Up

SharePoint Saturday was a huge success.  I had a lot of fun.  To all of the organizers – this was truly one of the best organized conferences I have attended.  The speaker dinner was a blast and the venue was perfect for the creativity that SharePoint encourages! Thank you! If you ever do another one, I hope I am fortunate to present again.

For all who attended my presentation – I Wish I Knew That (What I Wish I Knew Before I Implemented SharePoint), you can download my slide deck by going to my Presentation Notes page.  If you were one of the lucky few to capture a Happy Mood Dude, take a picture of yourself with it and send it to me.  I’d love to post it on the site.

iPhone Saves the Day!

Every once in a while, you come across a cool story that you wish everyone could learn about.  This is one such story.  It is so cool, I’m going to cross-post this on both of my blogs.

What would you do if you were caught in an earthquake, injured and sure you were going to die?  View this video below to hear what one man did.  If you can’t see the video, or want to read the story, you can read it here.

Here’s a thought.  What would you write to your wife/kids/loved-ones if you found yourself in a similar situation?  Leave a comment – let’s see how interesting this becomes!

SharePoint Saturday – Indianapolis

Up and ready for a great SPS-Indy.  The building is a great location for a SharePoint Conference.  My session is scheduled for 2pm so I’ll get to attend some other great sessions.  Here are some pictures I have taken of the venue.  Look for more later!

Sponsors - Thank You!Meeting room.

SharePoint Saturday – Ozarks

I just saw that they are having SharePoint Saturday – Ozarks again this summer. SPSOzarks was my first SharePoint Saturday experience and I really enjoyed it. The information I learned, and the relationships that I began that Saturday were the impetus for getting more involved in the SharePoint community.  Since that Saturday in Harrison, Arkansas, I have attended Microsoft’s SharePoint Conference 2009 in Las Vegas, gotten more involved in our local SharePoint User Group and started presenting at other SharePoint Saturdays. I hope to work up another presentation for SPSOzarks so I can be a presenter this time instead of a spectator.

Apple iPad – I’m a fan!

OK. I’m a fan. I need to see more actual hands-on reviews but I think I may want one of these.

Feature and Code Depreciation in SharePoint 2010

SharePoint Joel (Joel Olesen) has a good post in preparing for Code and Feature Depreciation in SP2010.

Understanding Feature and Code Depreciation for Upgrade to SharePoint 2010

Easy Check If An SPWeb/SPList Exist

I write a lot of code using the SharePoint object model.  Often times, I want to check to see if a particular Web exists in a Site Collection or a List exists in a Web.  I used to write methods that enumerated through the collection to see if they existed or I wrapped a Try-Catch block around the code in case the object didn’t exist.

Recently I came across a code snippet that made checking for the existence of a web or list easy.  I can’t remember where I found it so I’ll thank the nameless person who originally wrote the code.  I’m only capturing it here for my own reference and possibly help someone else.

 
        static bool ListExists(SPWeb web, string listName)
        {
            return web.Lists.Cast<SPList>().Any(list => string.Equals(list.Title, listName));
        }
 
 
        static bool WebExists(SPSite site, string webName)
        {
            return site.AllWebs.Cast<SPWeb>().Any(web => string.Equals(web.Name, webName));
        }

Notes to SharePoint Migration

The company I work for purchased the Quest Notes Migrator for SharePoint.  Overall, it has saved me lots of time migrating from Lotus Notes.  The main reason is that I have absolutely zero experience with Notes.  Now, the Quest tool allows me to migrate all of the rows into SharePoint pretty painlessly.  I was having one problem.  As I migrated Lotus databases, I was getting SharePoint lists with 50 -100 list items.  Performance lagged when trying to view those items and it made SPDesigner almost unusable.  I set out to find a way for the tool to create folders around a Created date.  My final solution utilized Lotus @Functions.

In the spirit of trying to save someone else a lot of time, here is what I did. 

  1. I used Quest Notes Migrator for SharePoint Designer.
  2. If you select a folder type in the mapping, Designer will create a folder with the name of the item.  If the item has a forward or backward slash, it will create nested folders.  So, I wanted a nested folder based on a date.
  3. In the Notes data definition, I created a new formula field.
  4. The formula that I used is:  @Text(@Year(@Created)))+”/”+@Text(@Month(@Created)))+”/”+@Text(@Day(@Created)))

    DateString Formula

  5. I created an alias of FolderDateString
  6. Output type is String.
  7. On the DataMapping, map the FolderDateString field to a Folder type. That will tell Designer to automatically create nested folders based on the string.
  8. That’s it!

Hope this helps someone!

mapped data

Final data mapping

SharePoint Saturday – Indianapolis / New Orleans

I have been confirmed to present at SharePoint Saturday – Indianapolis on January 30, 2010 and SharePoint Saturday – New Orleans on Febuary 27, 2010.  I’ve never been to Indianapolis or New Orleans, so I’m looking forward to it.  I will presenting the same presentation I did at SharePoint Saturday – Kansas CityWhat I Wish I Knew Before I Implemented SharePoint.  Watch out for flying mood dudes!