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
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.
- 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:
- Do I need a separate folder for each company? Am I limiting myself?
- If we just use a Company Name field using the lookup list, would we run into performance problems?
- 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.
- If we do use folders, is there a way to prevent documents from being created outside of the folders?
- 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?
- (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.