1. What would you like
SharePoint
to do for you?
WSS & MOSS portfolio of
Dontrell Bluford
http://www.linkedin.com/in/dbluford
1
2. MY PERSONABLE TRAITS 3
ABOUT SETFOCUS 4
FARM CONFIGURATION 5
PRODUCTION CHANGE CONTROL 10
FORMS-BASED AUTHENTICATION 14
CUSTOM LIST EVENT FUNCTIONALITY 17
CUSTOM WEB PART: USER CONTROL 21
MEANS TO SURFACE LIST DATA 32
CUSTOM WEB PART: SERVER CONTROL 33
CONTENT QUERY WEB PART 38
FIXED KEYWORD QUERY 39
NAVIGATION & SEARCH 40
USER PROFILES AND MY SITES 50
DOCUMENT AND RECORDS CENTER 53
ACCESS EXTERNAL DATA 57
BUSINESS DATA CATALOG 58
DATA VIEW WEB PART 60
ELECTRONIC FORMS (INFOPATH) 61
APPLICATION (UTILITY) PAGE 65
BUSINESS PROCESS AUTOMATION 70
VISUAL STUDIO WORKFLOW 72
SITE BRANDING 80
PAGE CONTENT STRUCTURE 83
UPGRADE TROUBLESHOOTING 85
LET EXCEL SERVE YOU 88
CONTENT DEPLOYMENT 93
DYNAMIC AUDIENCE RULES 95
The Small Print: A good use of this portfolio is to pick your fancy
and jump around to suit your palate.
Portfolio Contents
2
3. Quality focused: it makes the job easier.
Every day is a good day: it makes life easier.
Strategic: mighty projects succumb to their priority and plan.
High-potential: stable, resourceful, solution-driven, commanding leader.
Troubleshooter: to work out the kinks.
Scholar: helps tackle the what-to-dos and how-to-do-its.
My Personable Traits
4. The SetFocus SharePoint Master’s Program is an intensive,
project-oriented program that provides an extensive
knowledge of, and valuable hands-on experience with
SharePoint in a simulated work environment.
Received over 550 hours of in-depth, hands-on, SharePoint
Development focused experience.
SetFocus projects are real world projects that are distributed
just as in a SharePoint position. Received project specifications
and was expected to identify best courses of action with
deadlines set for completion.
About SetFocus
5. Situation: Your business desires an initial installation of
SharePoint.
Task: Configure basic farm to facilitate administration.
Action:
• Setup Diagnostic event and trace logging and IIS logging.
• Create Shared Services Provider and My Sites each on own
Web application and application pool.
• Import User profiles from Active Directory.
• Setup crawl schedules and enable search-based alerts.
• Setup Usage analysis processing, SSP advanced usage
analysis processing and search query logging, Information
management policy usage reports, and the site collection
Reports feature.
• Enable antivirus.
• Define a default Quota template for the Web application.
• Enable automatic deletion of site collection.
• Create backup recurring task and restore practices.
Result:
• The users can increase their social networking using My
Sites, and the SPA can use profile properties for audience
targeting of content.
Farm Configuration
6. • The SPA can troubleshoot issues with the event, trace and
IIS logs.
• The SPA can manage existing search and employ usage
analysis to improve search keywords and best bets.
• The SPA can task site collection administrators to review
the usage analysis report and provide recommendations.
• The SPA can audit information manage policies for
business rule compliance.
• The SPA can better manage space by extending a baseline
site collection quota and the cleanup of obsolete site
collections.
• The SPA can take over the existing backup and restore
process.
Fun/Challenges:
• Mapping business structure to site structure is fun, but
partitioning sites to better manage databases requires a
little more thought.
Best Practices:
• Place the Shared Services Provider and My Sites in their
own Web applications.
• Centralize location of logs.
Farm Configuration
8. Figure 2. Profile settings after import from Active Directory.
Farm Configuration
9. Figure 3. Backup Script, used in addition to NTBackup.
Farm Configuration
10. Situation: IT department needs to manage updates to
production.
Task: Create update policy.
Action: Implemented policy that requires all updates be
installed by Web solution package and SharePoint designer
updates are centrally documented.
Result: Simplified installation and deployment of features, as
well as change control that improves ability to restore from
backup.
Fun/Challenges: Basic processes like these are great because
they set a baseline, grow on an organization and are highly
susceptible to improvement.
Best Practices: Keep an audit of feature installations to synch
between farms, and a basis for troubleshooting.
Production Change Control
11. Figure 4. Web Solution Package documentation.
Production Change Control
12. Figure 5. Full Deployment script for unit of functionality.
Figure 6. Unit of functionality deployment directory.
Production Change Control
14. Situation: You company desires to make a site accessible by
partners over the internet.
Task: To avoid separate licensing fees, expose the existing Web
site on the internet using forms-based authentication.
Action:
• Extend the Web site to the Internet zone.
• Configure the authentication provider of the Internet zone
to use forms-based authentication,
AspNetSqlMembershipProvider and
AspNetSqlRoleProvider.
• Associate the membership and role providers with the
Web application through its web.config.
• Create the membership database and associate with the
Web application through its web.config.
Result:
• The partners can browse to the Web site using the
internet, use an assigned login and view the Web site.
• Administration of FBA users is facilitated through Web
forms, instead of Visual Studio.
Forms-Based Authentication
15. Fun/Challenges:
• Without client integration, partner users will not be able
to create new documents.
• Testing is required to determine usefulness of FBA in this
regard.
Best Practices: Remove Visual Studio from the administration
of FBA user accounts.
Figure 8. Forms-based user login page.
Forms-Based Authentication
16. Figure 9. Forms-based user account administration.
Figure 10. Forms-based user account management.
Forms-Based Authentication
17. Situation: Personnel Office desires a time log list from which
items cannot be deleted.
Task: Create a custom list definition.
Action: Using Visual Studio extensions for WSS, created a list
definition with an item event receiver to cancel deleting.
Result: Users can create a list based on this template, associate
it with their desired content type and are practically assured
that existing items cannot be removed from the list.
Fun/Challenges: If the need arises, then deletion will be
allowed for site collection administrators.
Custom List Event Functionality
18. Figure 11. List feature element manifest.
Figure 12. Event receiver element manifest.
Custom List Event Functionality
21. Situation: A department desires a way to create and track a
subsite without being a site collection administrator or site
owner.
Task: Create a Web part with functionality to create a subsite
based on input parameters.
Action:
• Created a Web part that encapsulates a user control.
The user control accepts site name, description, relative
URL and template.
• The user control provisions, using elevated security, a site
with or without unique permissions to parent site.
• The user control adds a list item to a list using a custom
content type.
• The Web part exposes a property to allow changing the
associated list.
Result: The users can use the custom Web part to create a site
and populate a specific list using a custom content type for
tracking.
Custom Web Part: User Control
22. Figure 14. Web part and exposed list name property.
Custom Web Part: User Control
31. Figure 20. Code for Web part wrapper around user control.
Custom Web Part: User Control
32. Figure 21. Displays the source list, Solution-Site List, and Web parts for:
custom server control (see Custom Web Part: Server Control section),
Content Query (see Content Query Web Part section),
Search Core Results (see Fixed Keyword Query section).
Means to Surface List Data
33. (See also Figure 21.)
Situation: A department desires to display list data in a modular
Web part.
Task: Create custom Web part.
Action:
• Created a Web part based on a server control.
• The Web part exposes a server control property to allow
changing the associated list of a given content type.
• The server control displays the contents of the associated
list in a SPGridView control.
Result: The users can place the Web part on a page and
associate it with a list to be displayed.
Figure 22. Project layout.
Custom Web Part: Server Control
Means to Surface List Data
38. (See also Figure 21.)
Situation: A department desires to display list data in a modular
Web part.
Task: Use the Content Query Web part.
Action: Explain use of Web part for user's purpose.
Result: The user can configure the Content Query Web part to
display items of a specific content type from specific list types.
Figure 26. Content Query Web part
configuration, search solution content
type.
Content Query Web Part
Means to Surface List Data
39. (See also Figure 21.)
Situation: A department desires to display list data in a modular
Web part.
Task: Use a Fixed Keyword Query.
Action: Explain use of Web part for user's purpose.
Result: The user can configure the Search Core Results Web
part to display items of a specific content type. Results span
site collections where scope is All Sites.
Figure 27. Search Core Results Web part configuration, search solution content
type in all sites.
Fixed Keyword Query
Means to Surface List Data
40. Situation: A documentation manager would like to remind
users of the new documentation about Solutions (already a
content type), when they need it.
Task:
• As page navigation and search help users find the desired
information, discuss the options available to find what
functionality will best expose the content to the end users.
• For search, SharePoint:
→ can stratify search content based on authoritative
pages;
→ provides a tabbed search center where each tab can
restrict the search by metadata or content, also know
as search scope;
→ can provide hyperlink to search center using query
parameters;
→ can search synonyms and provide best bet sites for a
keyword;
→ accepts custom Web parts that search by keyword
and SQL query.
• For navigation, SharePoint has:
→ Top Link Bar
→ Quick Launch Menu
Navigation & Search
41. → Links list
→ Summary Links field control
→ Content Query Web Part
→ Content Editor Web Part
→ Publishing field control
• In this case, as site metadata are populated in the
Solution-Site List when created using a web part, it is
decided to add a search scope to display content from
sites of a particular site template and add a keyword.
Also, use the Content Query Web Part to expose the
valued content on the home page.
Action: To improve information surfacing:
• Add a search scope restricted to content in sites using the
solution site template, and expose it in the advanced
settings of a search center.
• Add a keyword solution, synonyms 'application;proof of
concept;sharepoint project' and best bet the Solution
Portal.
• Add a Content Query Web part that queries the solution
content type where site column SiteTemplate is 'Solution
Site Template'.
Navigation & Search
42. Result:
• On the advanced search page or search drop-down, the
users can now limit their search to content from sites
provisioned from the Solution Site Template without
remembering to add the query token
SiteTemplate:"Solution Site Template".
• Search of the keyword solution or any of its synonyms
yield the Solution Portal as a best bet.
• The Content Query Web part on the home page displays
items from the Solution-Site List where Site Template is
Solution Site Template.
Fun/Challenges: There may be room for improvement.
Navigation & Search
47. Figure 32. Custom Search Center for site collection.
Figure 33. Additions to the Advanced Search Box Properties to restrict search.
SiteTemplate is a managed property for the site template crawled property.
Figure 34. Notice that Site Template is a property on which you can search.
Navigation & Search
48. Figure 35. Content Query Web part setup to filter on site column SiteTemplate.
Navigation & Search
50. Situation:
1. Department desires to show certain information to new
hires only.
2. To prevent college classification, the Personnel Office
desires to hide the school property.
3. Allow users to save and open documents from an Office
application.
4. A MySite is flagged for inappropriate material.
Task:
1. Create an audience of new hires with which to target
information.
2. Find and edit the schools profile property.
Action:
1. Create audience of users created within the last three
months.
2. Modified the Schools profile property's privacy to be
disabled.
3. Created a published link to Office client applications.
4. Lock the site collection and await further requests.
Result:
1. Now certain SharePoint assets can be targeted to new
hires.
2. School is not displayed on the user profile.
User Profiles and My Sites
51. 3. Within a day, users will be able to open and save items
from the Slide library.
4. Users are not able to view the MySite while the material
is removed.
Fun/Challenges:
1. Research whether relative date is available as an
operand.
Figure 37. New hire audience rule.
Figure 38. Disabling a user profile property.
User Profiles and My Sites
52. Figure 39. Disabling access to a My Site.
Figure 40. Note the Slides Office Published Link.
User Profiles and My Sites
53. Situation:
1. The Departments of Nutrition and Pharmacy desire to
share a store of documents on which they have
collaborated.
2. The Legal Department desires a secure place in which to
store legal-pertinent documentation.
Task:
1. Create a folder in the organization's document center.
2. Create a records center.
Action:
1. Created a folder titled 'Pharma and Diet' in the
document center.
2. Created a records center and educated its steward on
using folders, content type names (like patent) and routing
rules to simplify classification.
Map the records center to the farm as its records Send To
destination.
Result:
1. The two departments can create a document in Pharma
and Diet, and create a shared Document Workspace.
2. A legal document, like a patent, can be created and sent
to the records center for storage.
Document and Records Center
54. Figure 41. Routing rule for Development and Training Records content types.
Figure 42. Farm connection to the records center, accessible by any document’s
Sent To menu.
Document and Records Center
57. Figure 43. Display of customer data using Business Data Catalog and Data View
Web parts, respectively.
58. (See also Figure 43.)
Situation: An organization desires to customer data from their
custom application.
Task: Create a Business Data Catalog application definition.
Action: Using BDC Meta Man, created a Business Data Catalog
application definition that exposes data from their Northwind
database, and used it as the basis for connected Business Data
List and Business Data Item Web Parts.
Result: Users can view customers from the custom application
within SharePoint.
Fun/Challenges: Great because it precludes both manual entry
and imports, and displays updated data.
Business Data Catalog
Access External Data
59. Figure 44. BDC Meta Man creates BDC application definition.
Business Data Catalog
Access External Data
60. (See also Figure 43.)
Situation: An organization desires to customer data from their custom
application.
Task: Use a Data View Web part.
Action: Insert Data View Web parts on a page and add columns
in a table view.
Result: The user can move and close the Web part within a
page.
Fun/Challenges:
• From research, it appears SQL Server sysadmin users may
be used.
• Also, it appears that a master-detail is created by one Data
View Web part per connection.
Data View Web Part
Access External Data
61. Situation:
1. They in the Accounting department desire a means to
electronically submit purchase orders and invoices.
2. They in the Training department desire a means to
facilitate collection of limited new course data while
filling in a Word document.
Task:
1. Create Web-based electronic forms.
2. Create a documentation information panel and integrate
columns into a Word document template.
Action:
1. In InfoPath, created a purchase order and an invoice
administrator-approved form template, each to submit to
separate form libraries.
2. Designed an InfoPath form template for the content type
using some of its columns, and a Word document
template to collect the same data.
Result:
1. Accounting can now require electronic submission of
purchase order and invoice forms.
2. Training can now enter partial information for a course
within a Word by its DIP form or directly in the document.
Electronic Forms (InfoPath)
62. Fun/Challenges:
1. Step in the paperless direction, and can be subject to other
electronic policies.
1. 2. Facilitates the collection of data within the context of
filling out a document.
Figure 45. InfoPath designed Document Information Panel along with associated
fields in a document template.
Electronic Forms (InfoPath)
63. Figure 46. InfoPath designed, Web-browser based purchase order form that
submits to a form library.
Electronic Forms (InfoPath)
64. Figure 47. InfoPath designed, Web-browser based invoice form that submits to a
form library.
Electronic Forms (InfoPath)
65. Situation: They in the Accounting department desire the ability to create an
invoice form with data populated from its associated purchase order form.
Task: Create a custom action associated with the purchase
order form content type that, when clicked, creates and
populates an invoice form.
Action:
• Created a feature that deploys a custom action (hyperlink)
and an application page.
• The custom action opens the application page.
• The application page includes code that uses XML
serialization to copy data from the purchase order form
into a new invoice form, and redirect the user to
Microsoft's FormServer application page to display the
new invoice form.
Result: A user can now create an invoice pre-populated with
data from a purchase order.
Application (Utility) Page
66. Figure 48. WSPBuilder project layout.
Note the Invoice.cs and
PurchaseOrder.cs include XSD
generated classes representing the
InfoPath data schemas.
Figure 49. The custom action that gets
the application page.
Figure 50. The feature element manifest that creates the custom action.
Application (Utility) Page
70. Situation: They in the Training department desire to automate
a process where an e-mail is conditionally sent based on the
status of a course list item.
Task: Since the workflow is not needed across different types of
lists (reusability) and for more than one existing list (easy
maintenance), create a no-code workflow in SharePoint
Designer.
Action: Created a workflow in SharePoint Designer to e-mail
various participants based on the status column of a list item.
Result: Users are automatically sent appropriate e-mails based
on a course entry in the list.
Fun/Challenges: SharePoint Designer can make short work of
limited-purpose workflows and be created by Power Users.
Best Practices: SharePoint Designer needs to be limited to
particular users for particular purposes (branding, workflows).
SharePoint Designer Workflow
Business Process Automation
71. Figure 53. SharePoint Designer workflow that e-mails users based on status of a
course list item.
SharePoint Designer Workflow
Business Process Automation
72. Situation: A cadre of supervisors desire a workflow that creates
a task and sends an e-mail when the task is marked 100%
complete within 7 days before the due date.
Task: As the workflow is needed across different types of lists
(reusability) and for more than one existing list (easy
maintenance), create a code workflow in Visual Studio.
Action: Created a workflow in Visual Studio that creates a task,
waits until its completion and e-mails a user defined on the
initiation form if the completed within 7 days before due date.
Result: When the workflow is started for a list item, users are
given a task and e-mailed when completed 7 days before due
date.
Visual Studio Workflow
Business Process Automation
73. Figure 54. WSPBuilder project layout. Note the VSWorkflowXMLData.cs include
XSD generated classes based on the sample data in VSWorkflow.xml.
Figure 55. Partial contents of workflow.xml, the element manifest. Note the
workflow initiation form defined by the InstantiationUrl.
Figure 56. Sample XML structure used to generate a serialization class.
Visual Studio Workflow
Business Process Automation
74. Figure 57. The workflow initiation Web form.
Visual Studio Workflow
Business Process Automation
75. Figure 58. Workflow initiation form code.
Visual Studio Workflow
Business Process Automation
76. Figure 59. Workflow initiation form code.
Visual Studio Workflow
Business Process Automation
77. Figure 60. Workflow activity contents.
Visual Studio Workflow
Business Process Automation
78. Figure 61. Workflow code.
Visual Studio Workflow
Business Process Automation
79. Figure 62. Workflow code.
Visual Studio Workflow
Business Process Automation
80. Situation: The owner desires to remove the good-old-blue
theme with a more autumn scheme.
Task: Determine if need new master page and theme, or if can
customize existing assets.
Action: Found acceptable OrangeSingleLevel.master and
customized its logo and contact information in a new resource
file. Also, using ThemeGenerator.htm and SharePoint Skinner,
tweaked the theme to mute the blue list headers.
Result: Users now see an autumn-ish themed page with logo.
Fun/Challenges: SharePoint Skinner helps to determine the
style sheet structure.
Site Branding
81. Figure 63. Original theme and master page.
Figure 64. After theme change.
Site Branding
82. Figure 65. After changing both theme and master page.
Site Branding
83. Situation: To see what functions they'd like to take over, they
in the Marketing department desire a demonstration of
creating a custom page layout for their articles.
Task: Demonstrate creating a Page-based content type and
creating a page layout based on the new content type.
Action: Wrote a brief demonstration script and presented it to
a group in the Marketing department.
Result: The users would like to take over designing the page
layout, but not creating the content type or potential feature
creation.
Fun/Challenges: Win-win for all.
Page Content Structure
84. Figure 66. Content type used to define fields for the page layout.
Figure 67. Page layout.
Page Content Structure
85. Situation: A user desired to determine why a forms-based
authentication (FBA) user couldn't create documents from the
document library. Also users have been pining for a utility to
check user permissions, but couldn't get such a custom project
into the budget.
Task: While reading up on another topic, found that Microsoft
released a permissions report that may satisfy this user-wishlist
item.
Action: Downloaded and installed the Microsoft SharePoint
Administration Toolkit, and notified the users to test the new
site collection feature.
Result: Although it did not help answer the FBA-library
question, users thought the Microsoft utility would help speed
up security diagnosis.
The FBA-library issue was found to be controlled by the client
integration setting in the Authentication provider settings.
Someone provided more information about the functionality
controlled by the setting at
http://stackoverflow.com/questions/492729/reduced-
functionality-using-forms-authentication-fba-in-sharepoint.
Upgrade Troubleshooting
86. Fun/Challenges: While testing the Microsoft SharePoint
Administration Toolkit's permissions report feature, ran into
two issues:
Issue 1. SharePoint Products and Technologies Configuration
Wizard (SPTCW) found some badly formed xml to the tune of
"Task applicationcontent has failed with an unknown
exception," and
"Exception: System.Xml.XmlException: ' ' is an unexpected
token. The expected token is '"' or '''. Line 53, position 178."
Solution 1. After some soul searching, found a truncated
web.config for one of the Web applications; restored it from
backup and SPTCW let me go happily on my way.
Issue 2. Tried to install the permissions feature, but the feature
demanded the April CU. Tried to install several post-April
updates to MOSS, but the feature demanded the April CU.
Solution 2. Found in a comment on a Microsoft site that the
feature was checking the version of the WSS related
Microsoft.SharePoint.dll (not the MOSS related
Microsoft.SharePoint.Portal.dll), and it clicked that the MOSS
CU doesn't include the WSS CU. Installed the WSS CU and the
feature was ready for testing.
Upgrade Troubleshooting
87. Figure 68. Example use of Microsoft’s permissions report. FBA user shown with
access only to a form library, but no access to the site in which the form library is
situated.
Upgrade Troubleshooting
88. Situation: The friendly local real estate office, the shrewd
salesmen and saleswomen they are, desire to gain sales leads
by educating their community with a Loan Amortization Test
Drive page.
Task: Use Excel's Amortization template and SharePoint's Excel
Services to provide amortization to the clients.
Action:
• Created a spreadsheet from the Amortization template.
Added named ranges to cells to provide interactive
parameters and a summary display.
• Published the workbook to an Excel Services trusted
document library.
• Created a dashboard from a new Report library.
Configured the Excel Web Access Web part to reference
the amortization spreadsheet.
• To satisfy a request for demonstration, created and
configured a new Key Performance Indicator where
payment < $250 is on course (low payment), and payment
>= $500 is off course (high payment).
Result: Users of the site can now test drive a new loan for
home mortgage.
Fun/Challenges: Excel is a powerful tool that can provide timely
and graphical reports of business sustenance and potential
future directions. A true helpmate Excel is.
Let Excel Serve You
89. Figure 69. The amortization spreadsheet and the named ranges, like
Interest_Rate, to be used as parameters in Excel Services.
Figure 70. The named range to display the loan summary in Excel Services.
Figure 71. The trusted location where Excel Services can read workbooks.
Let Excel Serve You
90. Figure 72. The dashboard that displays a published chart from the amortization spreadsheet. Also note the
indicator list.
Let Excel Serve You
91. Figure 73. The dashboard displaying a published named range from the amortization spreadsheet. Note the
parameters which can supply data to the display, but not the actual workbook. Also note the Interest Rate filter
based on a published parameter in the upper-left corner. Although the filter is applied, it too only affects the
dashboard display and not the workbook as seen by the disparity between the dashboard Loan summary table’s
Scheduled payment and the Payment key performance indicator’s Value.
Let Excel Serve You
92. Figure 74. Key Performance Indicator and its variations given the payment value.
Let Excel Serve You
93. Situation: A new content rich site collection is in
staging/release and ready to move to production.
Task: Move the site collection from the test server to the
production server(s).
Action:
• Installed Web solution packages to the production farm.
• Configured the production server to accept incoming jobs.
• Created a blank site collection for the target site.
• Created the deployment path.
• Created a deployment job for the path to deploy the site
collection.
Result: Site collection is available on the production server with
little stress.
Best Practices: Treat the target server as immutable except by
content deployment.
Content Deployment
94. Figure 75. Content deployment paths and jobs configuration screen.
Content Deployment
95. Situation: A user desired to use an audience consisting of new
hires.
Task: Determine if can use relative criteria in audience rules.
Action:
• Created an application page, linked from Central Admin|
Operations, to host hyperlinks installed by features.
• Created a timer job that periodically updates the new hire
rule and compiles the audience, which keeps the rule valid
over time.
• The timer job is configured by another application page
linked from the hyperlink hosting page.
• Enabled breadcrumbs on each application page.
Result: User now has a periodically updated audience with
which to target SharePoint assets.
Fun/Challenges: Thanks people on the internet for all your
documentation!
Dynamic Audience Rules
96. Figure 76. Project layout for the page
that hosts the custom action hyperlinks.
Figure 77. Project layout for new hire
rule setup.
Dynamic Audience Rules
97. Figure 78. The class for the Hierarchical Object Storage (HOS), used to persist job
configuration.
Figure 79. Usage of the HOS.
Dynamic Audience Rules
98. Figure 80. Custom action applied to the Operations page.
Figure 81. Breadcrumb and custom action applied to the audience rule hyperlinks
hosting page.
Dynamic Audience Rules
99. Figure 82. Application page used to configure the timer job.
Figure 83. Instance of the timer job.
Dynamic Audience Rules