6.03.2009
Top Level: Portal Site Connection
What this means is that when you have a Sharepoint Site, and the breadcrumbs 'top level' isn't what you want, then go to Site Actions --> Site Settings --> Modify All Site Settings --> Site Collection Administration --> Portal site connection. You will need to be at the Top Level Site Settings to get to it.
Enter the URL and a name for the Top-Top Level "site" and SharePoint will place that link as the 'parent' of all breadcrumbs in that site collection. It is very useful if you have many sites in your site collection, and some or all of them do not link back to the parent site, or your users generally view another domain address as a "parent site", when technically, they are not related at all. This can happen in many cases, but for example, if you have an umbrella company and many sub-companies have intranets of their own based on SharePoint, you can place the umbrella company's "master" intranet URL as the Portal Site Connection URL.
Another trick is to put the MYSITES as the parent URL, and viola! All links that are site-based profile links (which get out of sync real fast), will be set to go to the mysites profile page, which is more accurate and sync'd with your AD, if you are using AD as your authentication provider.
4.06.2009
Best Practice: Linking to or linking from SharePoint
“Please point your browser to [The Human Name Of Your Root Site] and use Keyword xxx to get the content you need.”This is so that in 100 years, the link will still work, no matter what technology is in use, or where the document is, SharePoint or not.
Go ahead and set-up a best-bet if you have MOSS, just to make sure people find it...
Books 4 U
Here is the list so far:
Administrators:
- Essential SharePoint 2007: A Practical Guide for Users, Administrators and Developers
- Beginning SharePoint 2007 Administration: Windows SharePoint Services 3.0 and Microsoft Office SharePoint Server 2007
- Inside Microsoft Windows SharePoint Services 3.0 (Pro Developer)
- Real World SharePoint 2007: Indispensable Experiences From 16 MOSS and WSS MVPs (Programmer to Programmer)
- Microsoft® Office SharePoint® Server 2007 Administrator's Companion
- Inside Microsoft Office SharePoint Server 2007
- Microsoft SharePoint Products and Technologies Administrator's Pocket Consultant
- Inside the Index and Search Engines: Microsoft Office SharePoint Server 2007 (PRO-Developer)
- Microsoft SharePoint: Building Office 2007 Solutions in C# 2005 (Expert's Voice in Sharepoint)
Content Managers:
- SharePoint 2007 User's Guide: Learning Microsoft's Collaboration and Productivity Platform
- Essential SharePoint 2007: A Practical Guide for Users, Administrators and Developers
- The SharePoint Shepherd's Guide for End Users
- Pro InfoPath 2007 (Expert's Voice)
Developers
- Microsoft Office SharePoint Server 2007 Best Practices
- Essential SharePoint 2007: A Practical Guide for Users, Administrators and Developers
- Beginning SharePoint 2007: Building Team Solutions with MOSS 2007 (Programmer to Programmer)
- Professional SharePoint 2007 Development (Programmer to Programmer)
- Microsoft® Office SharePoint® Designer 2007 Step by Step
- Inside Microsoft Windows SharePoint Services 3.0 (Pro Developer)
- Real World SharePoint 2007: Indispensable Experiences From 16 MOSS and WSS MVPs (Programmer to Programmer)
- Pro SharePoint Solution Development: Combining .NET, SharePoint and Office 2007 (Expert's Voice in Sharepoint)
- Inside Microsoft Office SharePoint Server 2007
- Professional SharePoint 2007 Web Content Management Development: Building Publishing Sites with Office SharePoint Server 2007 (Wrox Programmer to Programmer)
- SharePoint 2007 Development Recipes: A Problem-Solution Approach (Expert's Voice in Sharepoint)
- Inside the Index and Search Engines: Microsoft Office SharePoint Server 2007 (PRO-Developer)
- Microsoft SharePoint: Building Office 2007 Solutions in C# 2005 (Expert's Voice in Sharepoint)
- Microsoft Windows SharePoint Services Step by Step (Step By Step (Microsoft))
- Building Web Applications with Microsoft® Office SharePoint® Designer 2007 Step by Step (Step By Step (Microsoft))
- Office and SharePoint 2007 User's Guide: Integrating SharePoint with Excel, Outlook, Access and Word (Expert's Voice)
- Pro SharePoint 2007 Development Techniques
- Designing Forms for Microsoft Office InfoPath and Forms Services 2007 (Microsoft .NET Development Series)
- Pro InfoPath 2007 (Expert's Voice)
End-Users
- Microsoft SharePoint 2007 For Dummies (For Dummies (Computer/Tech))
- The SharePoint Shepherd's Guide for End Users
- Pro InfoPath 2007 (Expert's Voice)
Site Managers
- Microsoft Office SharePoint Server 2007 Best Practices
- Essential SharePoint 2007: A Practical Guide for Users, Administrators and Developers
- Microsoft® Windows® SharePoint® Services 3.0 Step by Step (Step By Step (Microsoft))
- The SharePoint Shepherd's Guide for End Users
- Pro InfoPath 2007 (Expert's Voice)
Enjoy!
3.30.2009
I need to ... Make an "I Need To ..." web-part!
Create a "Custom List" (not a links list):
- From the Site Actions menu, Click View All Site Content.
- Click Create.
- Click Custom List.
- We'll call it "Actions List"
- Select List Settings from Settings.
- Create these fields in our new Actions List:
- A Title field (should already be there).
- Click Create Column, Type "URL", Select Hyperlink or Picture, make it required.
- Click Create Column, Type "Task Type", Select Choice, enter choices as "General" and other choices based on what the task type is, make it required. Some examples are "Technical", "Reference", "Human Resources", "Training" etc etc...
For each record in the list:
The Title field must not be blank.
The URL field must be called "URL" and must not be blank.
The Choice field must not be blank, and can be any choice, it seems logical to me to call the field "Task Type" and have it a choice between different activities your users may need to have access to.
Now, create a couple of items in the list:
URL: "http://www.cleverworkarounds.com/"
Title: "Find out about Governance"
Task Type: "Technical"
URL: "http://www.wikipedia.org/"
Title: "Look up something..."
Task Type: "Reference"
Now, let's put the "I Need To ... " web-part on a page:
Edit your Home Page:
- Select Edit Page from Site Actions.
- Click Add a Web Part.
- Select the I Need To... Web Part.
- Select Modify Shared Web Part from the "I Need To..." Web Part Edit menu.
- Click the Change button.
- Select the list you created at the beginning of this tutorial. Note, you may need to select it twice, once to select the sub-site, and once to select the list in the sub site. Just make sure your list is displayed under "List Name:".
- Select Task Type from Filter Field.
- Select Technical from Filter Value.
- Click OK.
- Note that the web-part may be displaying a "Value cannot be NULL" message, which is okay for now.
- Click Exit Edit Mode.
- The error message about Value cannot be NULL should disappear.
Now your Home Page will have an "I Need To ..." web part displaying the records you have listed under "Task Type" of "Technical" (in our example, we only have one Technical Task Type).
Now Edit some of your other pages to have an "I Need To ..." web part displaying the records you have listed under the appropriate "Task Type"; repeat the above steps for any sub-sites you want.In what seems like weirdness, you MUST have a choice field in your list and you MUST have a field called 'URL' in your list, and you must have a "Title" field as well.
3.26.2009
Managing Links in WSS and MOSS Using Excel
First thing I do is copy them into Excel so that all links are in one column. I manually copied and pasted them into Excel from the Content Editor Web Part. Sometimes, I can get a whole lot of them, sometimes, just one or two at a time. If you are lucky, you will have a link list, that you can just open in datasheet view or export to Spreadsheet.
Put titles in your column in row 1:
- A: Bad Link
- B: Link Text
- C: Link URL
- D: New Link
- E: Category
- Place the cursor into an empty cell
- Click Record Macro from the Developer Tool ribbon
- Click OK to name the macro
- Type 'asdf' and press Enter
- Click Stop Recording from the Developer Tool ribbon
- Click Visual Basic from the Developer Tool ribbon
- Select Module1
- On the text area, (big area with the code in it) press [CTRL]+A to select all.
- Press [DELETE]
- Copy this code into the empty space:
Function GetAddress(HyperlinkCell As Range)
GetAddress =
Replace(HyperlinkCell.Hyperlinks(1).Address, "mailto:","")
End Function
Function GetText(HyperlinkCell As Range)
GetText=HyperlinkCell.Hyperlinks(1).TextToDisplay
End Function - Close the Visual Basic window
- Place this formula into Cell B2: =GetText(a2)
- Place this formula into Cell C2: =GetAddress(a2)
- Place this formula into Cell D2: =hyperlink(c2,b2)
- Fill out Column E with the category name for your link.
Now, you have all of the Link Titles and Link URLs in separate columns.
Now that you have the URL exposed, you can manage them. One thing this is really good for is getting rid of that pesky CTID in your URLs. You can also replace the space character with %20 so that the URLs work correctly when they used used elsewhere.
We have some alternate access mappings, so in order for these links to work properly for the proper audience, I use this method to quickly go through the links and change them to the correct 'field use' domain names.
3.23.2009
Access Denied on Site with Publishing Turned on
Some things to check:
- Ensure all of the master pages and page layouts are published major version, checked in and approved. From the Top Level Site, Site Settings --> View All Site Settings --> Master pages and page layouts, (http://[sitecollection]/_catalogs/masterpage/)
- Ensure all of the Style Library (http://[sitecollection]/Style Library/) files are published major version, checked in and approved. From the Top Level Site, Site Settings --> View All Site Settings --> Master pages and page layouts
- Ensure all of the elements on that page are published major version, checked in and approved.
- Ensure the Master Page document library has at least RESTRICTED READ access for all users.
- Ensure the Style Library document library has at least RESTRICTED READ access for all users.
This should resolve the cryptic error messages.
3.20.2009
Map a SharePoint Folder to a network drive
- Go into the folder you want to map
- Select Open with Windows Explorer in Actions
- Wait until the window loads
- Keep waiting until it fully loads
- Wait some more
- Curse a little, or chatter with someone while it is loading
- Select the address (double click it) in the address bar of windows exploder (I mean explorer), right-click and select copy
- Select Map Network Drive from Tools
- Choose a letter you want
- Paste the address into Folder
- Leave everything else as it is, and click Finish
Now the folder will appear in your My Computer as that drive letter.
3.11.2009
WSS File and Folder Naming Rules
- Invalid characters: ” # % & * : < > ? \ / { } ~
- Cannot be longer than 128 characters
- Cannot use the period character consecutively in the middle of a file name
- Cannot use the period character at the end of a file name
- Cannot start a file name with the period character
Folder Naming Rules
- Cannot use the following characters anywhere in a folder name or a server name: ~ # % & * { } \ : < > ? / ”
- Cannot be longer than 128 characters
- Cannot use the period character consecutively in the middle of a folder name
- Cannot use the period character at the end of a folder name
- Cannot start a folder name with the period character
3.10.2009
Check Out / Check In Lots of Files at Once
Sometimes, you have lots and lots of documents, and they all need to be checked in, that is a lot of clicking and button pressing!
There is a way:
If you are a Site Administrator, and the Publishing Feature is turned on:
- Go into the Document Library or Picture Library where you need to check in multiple files.
- Select Document Library Settings from Settings
- Select Manage checked out files under Permissions and Management
- Select the documents you want to check-in (or select the all checkbox to select them all)
- Go to: [YOUR SITE]/_Layouts/sitemanager.aspx (I wonder if this works without publishing turned on...)
- Select Checked out To Me from View
- Select the documents you want to check-in (or select the all checkbox to select them all)
- Select check-in from Actions
If you are not a Site Administrator, you will need to find a Site Administrator to do this for you - which may be worth it if you have hundreds of documents or images to check-in at once.
Also, you must make sure that all of the required fields are not blank. If you are checking in files using the method above, you will not get an error message, or any other notification that check in failed, documents missing the required information simply will not be checked in.
3.09.2009
Setting a Date field to NULL in Designer Workflows
Create a new calculated field, and set it to ="", and make it a date/time field.
In Designer, set the field you want to be blank to that calculated field.
I thought it would be simple to set it to NULL in SPD, but no, can't really do it at all.
Now, we have to figure out how to set a people-picker field to NULL and we'll be all set.
3.02.2009
SharePoint Designer Workflow Task List vs Aardvark Task List
Auto-generated tasks created by SharePoint Designer workflows always go to a seemingly random tasks list instead of the "Workflow Tasks" list. Designer searches for the first task list in your SharePoint site and uses that instead, and gives you no option to define which task list you want worfklow tasks to go to!Solution and workaround are here:
Things that Should be Easy:SharePoint Designer 2007 Workflow on Task Lists
2.23.2009
Release Calculation
This is where the title field becomes important. After a few releases, the lookup list becomes unbearable because several people on the team are entering releases into the release list but not creating any sort of standard title so that they are easy to find (and sorted properly) in the release lookup field in the task list.
You know how people are. People who enter information into lists sometimes have crazy ideas about how the 'title' field should be populated. Sometimes, strict standards are followed by everyone except that crazy lady who has a full jar of mayonnaise on her desk and a spoon (---shudder---), who enters crazy shit into your forms. This post will help you manage that crazyness so that some consistency is achieved.
I created a release list (just a simple custom list with a start date and a system name and a title field.) We go into the task list and create a lookup field so that we can assign each task into a release.
In the release list, I created a crazy-ass calculated field to calculate the title:
="["&System&" "&YEAR([Start Date])&"."&IF(MONTH([Start Date])<10,"0"&MONTH([Start Date]),MONTH([Start Date]))&"."&IF(DAY([Start Date])<15,"a","b")&"] "&System&" "&TEXT([Start Date],"mmm")&" "&YEAR([Start Date])&" "&IF(DAY([Start Date])<15,"First","Second")&" Release"
This gives us data that looks like this:
[Portal 2009.02.a] Portal Feb 2009 First Release
[Salesforce 2009.02.b] Salesforce Feb 2009 Second Release
[Portal 2009.02.b] Portal Feb 2009 Second Release
etc...
Now, we look at the fields from the task lookup field:
[Portal 2009.02.a] Portal Feb 2009 First Release
[Portal 2009.02.b] Portal Feb 2009 Second Release
[Salesforce 2009.02.b] Salesforce Feb 2009 Second Release
etc... all in the proper order!
Now, I create a SPD workflow that changes the title:
Attach the workflow to the release list.
Have the workflow start when a new item is created or changed.
Condition: IF TITLE IS NOT EQUAL TO CALCULATEDTITLE
VERY IMPORTANT: we don't want to create an endless loop.
Action: SET TITLE to RELEASE CALENDAR:CALCULATEDTITLE
All set!
SharePoint Limitations
In SharePoint, a web application refers to an Internet Information Server site that has been extended with SharePoint.
Each web application may contain one or more site collections. A site collection is typically a complete intranet, extranet, or Internet implementation.
A site collection is made up of one or more sites. A site is a dedicated section of the site collection for team collaboration, business intelligence reporting, records management, or the like.
Sites contain lists and documents and may have subsites underneath them.
The 2,000 rule: because stored procedure calls to SQL Server slow down as you reach 2,000 items, have less than that in a view on a List. Less than 200 ideally to have optimum performance.
Limits:
Site Collections in an Application:
50,000
Sites in a Site Collection:
250,000
Subsites in a Site:
2,000
Lists on a Site:
2,000
Items in a List:
10,000,000
Documents in a Library:
2,000,000
Documents in a Folder:
2,000
Maximum Document File Size:
2GB
Documents in an Index:
50,000,000
Search Scopes:
1,000
User Profiles:
5,000,000
Have less than 2000 AD users or groups in a SharePoint Group for the same reason. An AD group in a SharePoint group counts as one item, but the first time a user edits content in a site collection, they are added to the user list for that site collection. The best way to avoid this problem is to have lots of site collections so the users and groups are more spread out.
The bottom line is you can have as many readers as you like on SharePoint site collections as you like, but if you get to between 1,500 and 2,000 contributors (to reach that 64k limit) you will get errors.
More detail here: http://weblogs.asp.net/erobillard/archive/2008/09/11/sharepoint-security-hard-limits-and-recommended-practices.aspx
2.16.2009
List all Closed Web Parts on a Page
Append "?ToolPaneView=2" to your page URL to force "Edit Page".
Append "?ToolPaneView=3" to your page URL to force "Search Web-Part Zone".
Append "?DisplayMode=Design" to your page URL to force "Design Bar".
Append "?ControlMode=Edit" to your page URL to force "Web Part Zone Edit".
Last and most favorite: Append "?contents=1" to your page URL to force "Web Parts Maintenance". Remove the offending web parts and increase the load times of your page(s). This allows you to manage those closed web parts that should have been deleted.
2.13.2009
Space - The final frontier
<xsl:text xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" ddwrt:nbsp-preserve="yes" disable-output-escaping="yes">&nbsp;</xsl:text>
That is all.
Top 10 Documents
- Go into the usage reports / Top Pages section of your site. (https://[YOURSERVER]/_layouts/SpUsageWebTopPages.aspx).
- Export to Excel
- Go through and remove all of the pages you want to exclude from your report. I exclude images and aspx pages. Assuming your URL is in column A, and Column C is blank, You can use the Excel formula in column C to sort and categorize the documents by type: "=RIGHT(A2,4)". Autofill the entire column C with the formula. This gives the last four characters of the URL. Sort by this, and remove the rows you want to exclude from the report.
- Enter the formula into column D: =SUBSTITUTE(RIGHT(A2,LEN(A2)-33), "/", " : ") and autofill down the column. We are removing the first 33 characters of the URL; see that number 33 there, that is the name of my server and document library and "https:". We are also substituting the "/" with SPACE COLON SPACE characters to represent a friendly name for the URL folder structure. You can get really creative and put: =SUBSTITUTE(SUBSTITUTE(RIGHT(A2,LEN(A2)-33), "/", " : "), ".", " [") & "]" instead, which will have the friendly name and document type neatly bracketed for you: like this: "[doc]".
- Now, in column E, we want to build the friendly looking URL. Enter the formula: "=HYPERLINK(A2,D2)". Autofill Column E with that URL.
- Sort the list by the hit count, and eliminate all but the top 10.
- Now, you can paste the URL (column E) and Hit count into your Links list using datasheet view and you will have a friendly link to the top 100 documents in your library or site.
I hope that helps you!
2.12.2009
File and Folder Naming Rules
File Naming Rules
- Invalid characters: ” # % & * : < > ? \ / { } ~
- Cannot be longer than 128 characters
- Cannot use the period character consecutively in the middle of a file name
- Cannot use the period character at the end of a file name
- Cannot start a file name with the period character
Folder Naming Rules
- Cannot use the following characters in a folder or server name: ~ # % & * { } \ : < > ? / ”
- Cannot be longer than 128 characters
- Cannot use the period character consecutively in the middle of a folder name
- Cannot use the period character at the end of a folder name
- Cannot start a folder name with the period character
That is all.
Calculated Default Date with Time
When you create a new Date Time column, you are given the option to set the default value to Today's Date. This works fine if all you care about is the date, but if you want the time to default to the current time ... Every time you create a new list item, the time for that column will always be defaulted to 12:00 AM.
To insert a default date and time, use the TIME function in the "Default value:" "Calculated Value:" field:
To insert today's date with a 9:00 AM time:
"=Today+TIME(9,0,0)"
TIME (HOUR, MINUTE, SECOND)
Usually, I have a task list, and I have people from all over the company entering items for me to do. In order to get to them in a timely fashion, I want the default 'Start Date' to be three days in the future, at the beginning of the day so that I can look over the request and prioritize it as I see fit:
"=3+(Today+TIME(8,0,0))"
In addition, I want to default the due date to 90 days from now, at 6:00 PM (basically, End Of Day):
"=90+(Today+TIME(18,0,0))"
The TIME function is on 24-hour (or military) time. Just add 12 to all PM times, and it's pretty easy to figure out. 0,0,0 is Midnight.
This is very useful with the task-type list, because if the due date is 'today', then your task is already overdue because 'today' means 'this morning at 12:00AM!' which has already passed!
2.06.2009
From a SharePoint Power User to a Developer
Wrap your widget up as a solution or a feature so that it can be managed and isn't site specific. Wrapping your solution up as a feature will enable you (or someone other than you) to quickly deploy your widget into multiple environments.
Also, please do not hard code user messages. Instead, deploy your widget with a standard page layout, so that the business owner can add a Content Editor Web-Part (evil) or use a field control so that the BUSINESS OWNER can decide what the text is going to be, and changes do not require developers to come in and 'fix' a typo!
Use the standard CSS classes that come with WSS 3.0. Do not hard-code inline styles in your code! We do not want to hire developers to come in and change the color of something from #c98323 to #c93! We have themes and style templates, and they all have standard CSS classes for you to use that will made your widget fit perfectly into the site theme!
Thank You!
Fiscal Year and Fiscal Quarter
In this post, we will create a new calculated column in a list.
Calculating the Fiscal Year is kinda easy:
=IF(MONTH([Due Date])<6,YEAR([Due Date]),YEAR([Due Date])+1)
We are using an IF statement to decide whether or not the month number is less than 6 (June), and if not, add a year to it. My fiscal year begins on June 1st.
Calculating the Fiscal Month is a little more difficult:
="FQ 0"&MOD(CEILING(22+MONTH(date)-5-1,3)/3,4)+1
I can't really explain how that formula works, I found it online:
I Love Excel!: Calculate Calendar Quarter of Fiscal Quarter From Date
Put them together, and you can get a sortable field you can use in views:
=IF(MONTH(date)<6, YEAR(date), YEAR(date)+1)&" Q
0" & MOD( CEILING(22+MONTH( date)-5-1,3)/3,4)+1
This will give you the quarter number and the year of that quarter. Substitute the "[date]" in the formula above with whichever date column you want to calculate on.
So, "Due Date", a common date field in tasks and issues lists would be calculated as:
=IF(MONTH([Due Date])<6,YEAR([Due Date]),YEAR([Due Date])+1)&" QPlease note that this formula is based on a fiscal year beginning in June. If you have a different fiscal starting month, you can replace the '5' in my formula with your fiscal month minus one. If your fiscal year begins in January, then what are you looking at this post for? Your fiscal year is the same as the calendar year!
0"&MOD(CEILING(22+MONTH([Due Date])-5-1,3)/3,4)+1
Have fun!
1.23.2009
Better get off my butt
Exam 70-541
TS: Microsoft Windows SharePoint Services 3.0 – Application Development
Exam 70-542
TS: Microsoft Office SharePoint Server 2007 – Application Development
Exam 70-631
TS: Windows SharePoint Services 3.0, Configuring
Exam 70-630
TS: Microsoft Office SharePoint Server 2007, Configuring
I've got a couple of books, I should probably crack them open and fly around the VM with them.
Inside Microsoft Windows SharePoint Services 3.0 (Pro Developer) by Ted Pattison; Daniel Larson (Paperback - April 4, 2007)
Inside Microsoft Office SharePoint Server 2007 by P. Tisseghem (Paperback - May 16, 2007)
Microsoft® Office SharePoint® Server 2007 Administrator's Companion by Bill English and The Microsoft SharePoint Community Experts (Hardcover - Jan 10, 2007)
Inside the Index and Search Engines: Microsoft Office SharePoint Server 2007 (PRO-Developer) by Patrick Tisseghem and Lars Fastrup (Paperback - April 19, 2008)
Boy, I gotta learn c# too.
1.19.2009
Content Type Axioms
- All Content Types inherit from Item. No Exceptions.
- All Content Types have a Title field. No Exceptions.
- The Event Contrtol Block (ECB) Menu is hooked into the Title field of the Item Content Type.
- Permissions cannot be assigned to a Content Type.
- SharePoint Designer workflows cannot be attached to Content Types.
Hopefully, this will save you weeks of googling "Content Types".
Here are some quotes from the experts about renaming or deleting the Title field in the Item Content Type:
Dr. Peter Venkman: This site collection is headed for a disaster of biblical proportions.
Farm Admin: What do you mean, "biblical"?
Dr Ray Stantz: What he means is Old Testament, Mr. Admin, real wrath of God type stuff.
Dr. Peter Venkman: Exactly.
Dr Ray Stantz: Fire and brimstone coming down from the skies! Rivers and seas boiling!
Dr. Egon Spengler: Forty years of darkness! Earthquakes, volcanoes...
Winston Zeddemore: The dead rising from the grave!
Dr. Peter Venkman: Human sacrifice, dogs and cats living together... mass hysteria!
Naming Conventions
DO NOT PUT SPACES WHEN CREATING CONTENT CATEGORIES, COLUMN CATEGORIES, CONTENT TYPE NAMES, LIST NAMES, DOCUMENT LIBRARY NAMES or FIELD NAMES
You can edit them later to be human-readable, but when just created, we want them to be accessible code-wise, and so we don't want any spaces.
I know, I know, some of the core content types violate this rule, I am sure Microsoft will get right on it...
1.15.2009
Access Denied
I can't quite put my finger on it, but I think there are elements on the page which timeout before they load, and throw Access Denied messages to the page as it loads, so the page then throws an "Access Denied" message to the user.
If you have a corporate network that has elements exposed to the internet, there may be several different ways to get into your SharePoint Sites based on whether your users are accessing it from the Corporate Network (or VPN), or from home (or in the field). Don't use the 'At Home' Method to access the site from inside the Corporate Network, as you are looping through the internet instead of just stying inside your Corporate network.
You can reproduce this and test it by finding users who have intermittent access and Access Denied messages. In other words, sometimes they can get in and sometimes they can't.
I need to wordsmith this.
Calculated Fields: Examples of Common Formulas
http://office.microsoft.com/en-us/sharepointtechnology/HA011609471033.aspx
Tip: If your column name has a space character in it, you have to put it in brackets when creating a calculated column. For example: the "Assigned To" field, when you want to use it in a formula is written as "=[Assigned To]". If there are no spaces in the name of the field, simply put the name of the field into the formula, as such: "=TEXT([Created],"dddd mmm-dd-yyyy")".
In addition, here are some more helpful calculations:
Nice Date for Humans:
[Calculated field based on a field called "Class Start", a date/time field.]
=TEXT([Class Start],"dddd mmm-dd-yyyy hh:mm")
Gives us: "Thursday, Jan-15-2009 09:31"
Leading Zeros in Month Number:
=YEAR(Created)&" "&IF(MONTH(Created)<10,"0"&month(created),month(created))
Gives us: "2009 01"
This is VERY useful for sorting items by date. Add the day and you are set to go:
=YEAR(Created)&"-"&IF(MONTH(Created)<10,"0"&month(created),month(created))
Last Day of Last Month:
=DATE(YEAR(DATE(YEAR(Created),MONTH(Created)-1,DAY(Created))),MONTH(DATE(YEAR(Created),MONTH(Created)-1,DAY(Created)))+1,0)
Useful for reporting - if you have a document library where you upload a bunch of reports from last quarter or last month, this will give you a jumping off point to sort and group by the report's 'end date'.
I will add more calculations as I come across them.
1.14.2009
Enormous is >5MB
The exchange servers will thank you.
Remember kids, 5MB turns into 10MB when emailed. Those binary files have to be converted to text - which sometimes more than doubles the file size! Sending a 5MB file to 200 people is just stupid. And clogs up the internets.
Corporate Intranet: Best Practice
Remember, if your site managers and content owners have permission to modify content types on the top level site, especially core content types, then maybe WSS and MOSS isn't your thing after all.
Once that core content type is changed (like renaming the 'title' field in the 'item' content type), then you are screwed. Nuke from orbit and start all over, and yes, start ALL over is the only way out of this one, folks...
Managing Permissions: Best Practice
Create groups in AD and mark them as SharePoint-based group, (such as SP-CorpOffice-ALL, SP-CorpOffice-SiteManagers, SP-CorpOffice-ContentManagers, etc).
Add users and user groups to those groups in AD. (This step is where users can be managed - untrained users cannot get into the Site Manager groups, especially if the Site Managers have permissions to modify content types on the top level site!)
You now have groups that represent the people you want to manage.
Create permissions levels based on what we want to allow those groups of people to be able to do in the site or site collection. In our sites, we basically have Site Managers (can create lists and libraries), Content Managers (can add/edit/delete content only, cannot create lists or pages), and we have general users (we have a lot more permissions than that, but those are the basic three).
We then add the AD group the appropriate permissions level in the SharePoint site (or list or whatever).
Now, with 25k users, you don't have to manage each site, user, permission, which can get exponentially tedious after just a few hours.
End User Training
We've got several copies of this book that we lend out to the more interested Site Manager Level Users.
I cannot recommend it enough:
Microsoft® Windows® SharePoint® Services 3.0 Step by Step (Step By Step (Microsoft)) (Paperback)
This is the perfect reference for those end-user types.
What Happened to my View Dropdown

Windows SharePoint Services WSS; List or Library has lost the "view:" dropdown list
I don't really have an explaination for this - however, I have browser-based solution!
- Navigate to your list or library.
- Select List Settings (or Document Library Settings) from Settings.
- Click Create View (at the very bottom of the page).
- Click Standard View. (Note: here is where some Content Manager - type people will want to save time and click something under the Start from an existing view section - DO NOT DO THAT, the new view you create will have the same problem again.)
- Go ahead and re-create the view you want and save it, make sure it is the default view if you are 'fixing' the default view. You will need to create a name and URL that is different from all of the other views, of course.
- Navigate back to your list or library's default view page (probably AllItems.aspx).
- Select Edit Page from Site Actions.
- Select Delete from the Edit menu on the broken web-part.
- Click Add a Web Part.
- Select the list or library you are currently trying to fix.
- Select Modify Shared Web Part from the Edit menu on the web-part you just put on the page.
- Select your newly-created view from Selected View (click OK when the warning message appears).
- Select Full Toolbar from Toolbar Type.
- Click OK.
- Delete the other 'broken' view.
- You can now rename your new view to the same information as the old broken view, even if the new view is now called All Items and the URL you want is AllItems.aspx.
This has happened multiple times on various lists and libraries on my sites. I have yet to find a reason for it.
1.13.2009
Welcome!
My main focus is developing business applications using WSS 3.0 using the Browser interface, SharePoint Designer, InfoPath and Visual Studio 2008. We try to keep most applications using the Out-Of-The-Box (OOB) features of MOSS 2007, which really cuts down on support costs later on down the road. We teach our Business Partners how to use MOSS to their advantage as much as possible - Teach them how to Fish and they will not come to your for more fish...
This blog is something that I will be updating (hopefully regularly) so that I can spread my knowledge far and wide (and remember it later too). There are a million little things to remember about MOSS 2007, and if I haven't gotten them written down somewhere, I end up solving the same problem multiple times. Well, here's where I will write them down, and you can share them with me!