I just need a contact form...simple, right?
I would have thought creating a contact from on our new website would be easy as pie. It is….if you are talking instead about calculating Pi….to the 100th decimal place.
Our old, static website had a custom-coded .asp webform which pushed traffic to pre-determined... One of the most common customizations to KnowledgeLake software is to customize the act of Indexing, or applying metadata to SharePoint documents. While KnowledgeLake software has always made these customizations possible, it has never been easier than with the newly redesigned Index component built into KnowledgeLake Imaging 4.0.
In this... SharePoint Foundation (aka WSS v4) comes with some new monitoring and analysis features to give administrator better control over activity and performance of SharePoint 2010 Farm via rules (SharePoint Maintenance Engine) and reporting. At KnowledgeLake we knew we needed a little something extra to effectively support our SharePoint and KnowledgeLake...
How do I ‘brand’ this thing called SharePoint?
As any good web designer/developer knows, after a site’s
aesthetic design is agreed upon; beginning with static page templates (dummy
HTML/CSS) is the best starting point. So
I had created my major page templates already….but now to make this ready for
SharePoint’s dynamic content.
Master Pages
I created a... My first order of business after joining KnowledgeLake in January of this year, was leading a complete re-design and implementation of knowledgelake.com on the new SharePoint 2010 content management framework.
Having never used SharePoint in the past (other than checking in/out documents from document libraries) I had a lot to learn... I've been testing version 4.0 of our Imaging for SharePoint product quite a bit lately and I'm just amazed on how easy the new installation is. Using solution deployment everything feels like its just part of SharePoint now. A big kudos goes out to the entire team. I can't wait... Hopefully you have been following this series on Microsoft SharePoint Server 2010. It's been a great learning experience following these features through early Betas, release candidate and now RTM. If you haven't seen the other posts they can be found here:
ECM Features that Rock in SharePoint 2010: Enterprise Managed... This is a continuation of my ECM Features That Rock in SharePoint 2010 series I've been working on for the last month or so. If you'd like to read the previous posts you can find those here:
ECM Features that Rock in SharePoint 2010: Enterprise Managed Metadata Part 1
ECM features... It's been a busy week with both the AIIM show and RTM hitting MSDN. I decided to stop working on any more posts until I got RTM running in case anything changed from my previous build. Order is beginning to be restored though and I've started three different posts, which... Two posts in one day is a one-time event for me. Only because this was previously started did I finish it today. It's on the new Document ID Service in Microsoft SharePoint Server 2010 and is a continuation of my ECM Features That Rock in SharePoint 2010 series. If you'd... Glad to get past BCS and into some of the easier features to use and talk about. The BCS is great, but it took a lot of setup and my database was not accessible from home, which didn't allow me to work on these in the evening. The links to... This is the second part of a post on Business Connectivity Services (BCS) in Microsoft SharePoint 2010, which will focus on External Lists and client side access. The first part and other posts in this series can be found in the links below:
ECM Features That Rock in SharePoint 2010: Business... Like Enterprise Managed Metadata, Business Connectivity Services (BCS) is a little too much to write about in one post, so I'm splitting it into Server and Client. Part 1 will be the server side, including setting up an External Content Type and using it on the server. Before reading this... Welcome to Part 2 on Enterprise Managed Metadata (EMM). Sorry for being slow on the second part of this article, but duty called and I had to Visit MIX last week. If you haven't ready Part 1 you may want to read it first as it focused on Content Type... This entry will be the first of two on Enterprise Managed Metadata (EMM). Part one will be focused on Content Type Publishing, the second focused on the Term Store. To get started I'll start with the definition of Enterprise Managed Metadata from Microsoft.
Enterprise metadata management is a set of features... I blogged last week that I'd jump into ECM features that rock, but before I get deep into 2010 I want to pass on some information about upgrading from Microsoft Office SharePoint Server 2007 (MOSS) to Microsoft SharePoint Sever 2010 (MSS). If you are a current KnowledgeLake user, please note...
|
|
I just need a contact form...simple, right?
I would have thought creating a contact from on our new website would be easy as pie. It is….if you are talking instead about calculating Pi….to the 100th decimal place.
Our old, static website had a custom-coded .asp webform which pushed traffic to pre-determined email recipients in the company. At first, I thought about porting this code over to keep everything as is, but this is SharePoint, why not make it more robust?
InfoPath, Anonymous Users and SharePoint Lists = Danger!
If only I had known what this heading states before so many man hours were wasted. Since our website is customer-facing we of course need to support Anonymous Users. And we need to ensure those users can contact us without trouble. Our original architectural approach was the following:
- Deploy an InfoPath webform that is able to be submitted by Anonymous Users
- Create a custom List in SharePoint that would be a data connection setup in InfoPath Designer; data flows from the webform to the List (this allows us to keep information about our users, and possibly later allow us to flow this data directly into our Microsoft Dynamics CRM application as possible leads)
- Add another data connection which is an email to our representatives with the form data for manual follow-up later
I didn’t think this was a big deal…boy was I wrong. The big problem in all of this is SharePoint 2010’s support of Anonymous Users. Anonymous users cannot create list items! So, in-turn, an InfoPath form submitted by an Anonymous User cannot automatically create a list item. Although I understand there are probably security concerns with SharePoint allowing this, it seems like there should be a way to allow Anonymous Users to do this through some specifically granted permissions. I can think of many instances where this functionality would be incredibly helpful.
So now what?
What we ended up doing, was simply having email notification sent to our representatives and forgetting about storing data in SharePoint. I created a series of InfoPath webforms, published them to SharePoint, and I used the InfoPath Web Part to place the forms on the pages. This also caused a little heartburn as well, because the InfoPath Web Part cannot see InfoPath forms that aren’t stored within the site where you are editing pages. I discovered the best way to handle this was to publish ALL forms as a content type to a central forms library at the top site in the collection. Then, I could create a forms library within each sub-site, and in the library under Advanced Settings ‘allow the management of Content Types’. I could then select to inherit the needed content type (Form) from the top-level site and voila, InfoPath Web Parts for that site could now see it for selection.<
Until recently this method didn’t seem to be a problem, but we just realized that because we are only doing email submit actions, we have no way to gather metrics on what percentage of people who hit a contact form actually submitted one.
Well, how about after form submission we send users to a specific confirmation page?….we can setup a page in our analytics tool to see how many get to the page vs. visited the contact form, and that equals our conversion rate. No sorry, InfoPath doesn’t have a submission rule for “re-direct to another page”. Ouch again. I strongly urge the InfoPath development team to think about supporting what I think would be a VERY popular form submission action.
So what’s our conversion rate? I have no idea. We are now looking at having to contract a third party to host our webforms, track our conversions, and submit the data directly to our CRM. Ugh.
Now the good news…
So what DO I like about InfoPath/SharePoint webforms?
Point and Click form building
Being able to manipulate forms in this way is very nice for a designer. Dragging form elements and labels onto a page and deploying to SharePoint with a couple clicks is definitely nice.
Form Views
I like the idea of supporting multiple Form Views. I was able to create a Form Submit rule that upon submission, the form could change to an alternate ‘view’. For our contact forms, this allowed us to put a custom message to confirm the form was submitted, and hide the form from the user to prevent multiple submissions. This also allowed us to create form-protected assets. We can force a user to fill out a form, and upon submission be shown ‘protected’ content or links. Pretty cool.
Form Submit Rules
I like the ability to build form logic using submit rules. In my case, it was great because I could use the logic “if user clicks radio button ‘x’, use data connection ‘y’ to send email to a specific representative”. I also like the flexibility of form validation rules and display that you can set on a per-field basis.
Support of Browser-Based WebForms
Thankfully you can set forms to appear as a normal browser-based webform. It would be a shame if every user who visited the site had to have InfoPath installed to send a form.
Any Other Gripes?
Sorry, but yes…
The InfoPath-Assigned Background Color
Why can’t you just set the form to have NO background at all? Well, I did set the form to have no background color, but it did no good. I have a ton of transparency on the website as you can see, and a big ugly white background with padding and margins set by default around a webform caused me much pain. These background and margin styles are inserted DIRECTLY into the markup as an element.style instead of a CSS class being assigned to the form. This means I have to use the ‘!important’ css hack to override this default InfoPath styling to get the output I really want. AND I have to go find EVERY instance of a form (of which I have many), copy the HUGE CSS ID to my clipboard and assign this style hack in the stylesheet. This is NOT easily maintainable and a huge waste of time all around. InfoPath developers: please just trust the developer using InfoPath Designer knows what they are doing, and don’t automatically assign styles. If they want a white background and 30 pixels of margin, they can do that in the app. REVERSING it however, now that is a pain.
Required Fields Styling
How about a little more control on what is shown to the user when indicating a required field. Having a red-dashed outline around a required radio button selection is a bit confining if you ask me…..Allowing for a custom style to be created in InfoPath would be nice. Or better yet allow a CSS Class to be assigned on a per-field basis and/or on a validation rule basis. Then you can control it centrally through your stylesheet, and change EVERY webform on the site with one change.
|
One of the most common customizations to KnowledgeLake software is to customize the act of Indexing, or applying metadata to SharePoint documents. While KnowledgeLake software has always made these customizations possible, it has never been easier than with the newly redesigned Index component built into KnowledgeLake Imaging 4.0.
In this post, I will walk through how to create a very basic KnowledgeLake Index extension that will load a special default value into a DueDate column. This extension can easily be deployed for farm-wide use in the KnowledgeLake Imaging Index Edit Form, the KnowledgeLake Viewer, the KnowledgeLake Search Query Results Web Part and the KnowledgeLake Search Query Results built into the KnowledgeLake Search Center. This post assumes you have some existing Knowledge of programming with Visual Studio and some general, high level Knowledge of how the KnowledgeLake Index Behaviors integrate with SharePoint 2010's Content Types.
Step 1: Creating the extension
In order to create extensions for KnowledgeLake Index, you will need the following tools and Silverlight assemblies. Additionally, I will assume you are developing on your SharePoint server. This has become easier than ever since SharePoint 2010 can now be deployed on Windows 7!
- Microsoft Visual Studio 2010
- The Silverlight 4 developer runtime and tools for Visual Studio 2010.
The Microsoft SharePoint Silverlight Client Object assemblies.
- Microsoft.SharePoint.Client.Silverlight
- Microsoft.SharePoint.Client.Silverlight.Runtime
- System.Windows.Controls
The KnowledgeLake Imaging Silverlight assemblies (found in the KnowledgeLake Imaging SDK or can be extracted from the KLViewer2.xap or KLEditForm.xap packages.
- KnowledgeLake.Silverlight
- KnowledgeLake.Silverlight.Index.Client
- KnowledgeLake.Silverlight.Index.Contracts
- KnowledgeLake.Silverlight.Index.Controls (optional)
Start by creating a new Silverlight application project in Visual Studio. This will allow generation of a xap project to deploy to the SharePoint farm. The KnowledgeLake Index component is expecting the xap package to be titled KLIndexExtensions, so call it that. Additionally, add references to all of the assemblies listed above to your project.
Create a new ResourceDictionary in your project and call it CustomTemplates.xaml. For the purpose of being able to instantiate this class in code behind, add a CustomTemplates.cs class alongside of it. This is where the meat of the extension will lie. Add the code shown below into your CustomTemplates.xaml.
<ResourceDictionary x:Class="KLIndexExtensions.Resources.CustomTemplates" x:ClassModifier="public" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:System_Windows_Controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" xmlns:converters="clr-namespace:KLIndexExtensions.Converters;assembly=KLIndexExtensions" xmlns:KnowledgeLake_Silverlight_Index_Controls=
"clr-namespace:KnowledgeLake.Silverlight.Index.Controls;assembly=KnowledgeLake.Silverlight.Index.Controls"> <KnowledgeLake_Silverlight_Index_Controls:IndexColumnTemplate x:Key="CustomDateTemplate" ColumnDataTypes="DateTime" Modes="Index, Modify" DisplayFormats="DateOnly"> <StackPanel> <System_Windows_Controls:DatePicker
SelectedDate="{Binding Value, Mode=TwoWay}"
Loaded="OnDatePickerLoaded" /> </StackPanel> </KnowledgeLake_Silverlight_Index_Controls:IndexColumnTemplate> </ResourceDictionary>
Next, we will go back to our CustomIndexPanelTemplateLoader.cs file and return a new instance of the CustomTemplates ResourceDictionary as shown (note that I decided to add my CustomTemplates ResourceDictionary to a Resources namespace within my application).
using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using KnowledgeLake.Silverlight.Index.Contracts; namespace KLIndexExtensions { public class CustomIndexPanelTemplateLoader : IIndexPanelTemplateLoader { public ResourceDictionary LoadTemplates() { return new KLIndexExtensions.Resources.CustomTemplates(); } } }
Finally, add the code shown below to your CustomTemplates.cs. The OnDatePickerLoaded event handler will handle anytime a column named “DueDate” is loaded without an existing value, the value will be populated with the first day of the following month. Build the project, which will create KLIndexExtensions.xap. This is the package that is deployed to the SharePoint farm for use with KnowledgeLake products.
using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using KnowledgeLake.Silverlight.Index.Controls.ViewModel;
namespace KLIndexExtensions.Resources { public partial class CustomTemplates { public CustomTemplates() { InitializeComponent(); }
private void OnDatePickerLoaded(object sender, EventArgs e) { DatePicker dp = sender as DatePicker; ColumnModel model = dp.DataContext as ColumnModel;
if (model.DisplayName == "DueDate" && string.IsNullOrEmpty(model.Value)) { DateTime dueDate = DateTime.Now.AddMonths(1); dueDate = new DateTime(dueDate.Year, dueDate.Month, 1); model.Value = dueDate.ToString("o"); } } } }
Step 2: Deploying your extension xap package
In order for KnowledgeLake Index enabled products to use this extension, it needs to be deployed to 2 different directories on every web front end server in the farm. Deploy it to the following location to enable it for use in the KnowledgeLake Index Edit Form and KnowledgeLake Search.
· %SHAREPOINT_ROOT%\TEMPLATE\LAYOUTS\KLClientBin
Secondly, it must be deployed to a subdirectory of the KnowledgeLake Viewer to enable the extension in KnowledgeLake View. This is because the Viewer resides in its own IIS application.
· %SHAREPOINT_ROOT%\TEMPLATE\LAYOUTS\KLViewer\ClientBin
Note that the default location of %SHAREPOINT_ROOT% is “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14”. That’s it! Your extension will now be picked up by KnowledgeLake products across your entire farm!
Step 2: Deploying your extension xap package
In order for KnowledgeLake Index enabled products to use this extension, it needs to be deployed to 2 different directories on every web front end server in the farm. Deploy it to the following location to enable it for use in the KnowledgeLake Index Edit Form and KnowledgeLake Search.
- %SHAREPOINT_ROOT%\TEMPLATE\LAYOUTS\KLClientBin
Secondly, it must be deployed to a subdirectory of the KnowledgeLake Viewer to enable the extension in KnowledgeLake View. This is because the Viewer resides in its own IIS application.
- %SHAREPOINT_ROOT%\TEMPLATE\LAYOUTS\KLViewer\ClientBin
Note that the default location of %SHAREPOINT_ROOT% is "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14". That's it! Your extension will now be picked up by KnowledgeLake products across your entire farm!
Step 3: Debugging
If only every extension were that easy! Inevitably, you'll want to be able to step into the extension code as you develop your extension. While there are many ways to accomplish this, I will show you a way I found easiest when developing extensions. Start by going to the properties page for your KLIndexExtensions.Web project created by the Visual Studio Wizard earlier. In the Web tab, choose a valid url where your extension will be hosted. I've chosen the KnowledgeLake Viewer here.
Under debuggers, select Silverlight and unselect ASP.NET.
Simply hit F5 and you will be able to set breakpoints and step into your code. I like to set up post build events to copy my xap to the destination directories on my development server, but make sure you remove them as needed for your team.
Summary
There are many ways to extend KnowledgeLake Index, and KnowledgeLake Index for Imaging 4 makes it easier than ever before. While deployment can be as simple as a copy operation, you could create a custom wsp solution for a multi WFE environment. For more information on creating wsp's, see this MSDN article. For more complex Index scenarios and more development scenarios, please see the KnowledgeLake Imaging SDK, which will be available at the end of this month. |
SharePoint Foundation (aka WSS v4) comes with some new monitoring and analysis features to give administrator better control over activity and performance of SharePoint 2010 Farm via rules (SharePoint Maintenance Engine) and reporting. At KnowledgeLake we knew we needed a little something extra to effectively support our SharePoint and KnowledgeLake implementations, enter the KnowledgeLake Log Viewer, a Microsoft Silverlight application.
Unified Logging Service and Diagnostic Logging
As with MOSS 2007 the ULS (Unified Logging Service) is still with us in SharePoint 2010 but the administration of Event Throttling (figure 1) has improved with in the Configuration of Diagnostic Logging UI. An Event Log Flood Protection (figure 2) feature has been included to detect duplicate events from flooding the ULS logs. Additionally, you can administer the threshold (figure 3) for day to store the files before purging and space usage.
Figure 1 - Event Throttling
Figure 2 - Event Log Flood Protection
Figure 3 - Trace Log
KnowledgeLake Monitoring
KnowledgeLake knows full well that with the plethora of features and functionality SharePoint 2010 provides come issues that will need to be supported and resolved. With this new version of Imaging, our flag ship product, we included a much needed and missing SharePoint administration feature, the KnowledgeLake Log Viewer.
In the past we used Notepad to glean through the ULS logs (figure 4), and spent an inordinate amount of time doing so.
Figure 4 - Notepad
With the KnowledgeLake Log Viewer we can now load the ULS logs, the event logs or a combination of both. We can specify a date and time range, sort, filter, import and export logs from and to XML and set a limit count (figure 5, 6, 7).
Figure 5 - KnowledgeLake Log Viewer
Figure 6 - Filter and Features
Figure 7 - XML ULS Export
The XML export can be opened in Microsoft Excel (figure 8) and we can use this to build a knowledge base on problem resolution. This XML export is also an invaluable tool for the KnowledgeLake support team and can be submitted as an attachment to a support ticket on the KnowledgeLake Support web site.
Figure 8 - Viewing with Excel
Resolving the Issue
Using the well formatted ULS entry of the KnowledgeLake Log Viewer we were able to diagnose the Object Cache issue by creating/configuring the settings for a Portal Super User and Portal Super Reader. We followed the instructions from this Microsoft TechNet Article - Configure Object Cache User Accounts.
About the Author
Jeff Borghoff is a Sr. Technical Architect at KnowledgeLake and is CDIA+, MCTS: WSS & MOSS and AIIM SharePointP certified. |
How do I ‘brand’ this thing called SharePoint?
As any good web designer/developer knows, after a site’s
aesthetic design is agreed upon; beginning with static page templates (dummy
HTML/CSS) is the best starting point. So
I had created my major page templates already….but now to make this ready for
SharePoint’s dynamic content.
Master Pages
I created a new site collection in SharePoint, using a
Publishing Site template (because hey, I’m creating a publishing website here
folks). Then I copied the ‘Night and Day’ masterpage to begin my
customizations. For goodness sakes, do
NOT alter a system template. Since, I
was no expert in SharePoint, asp, sharepoint controls, etc., I slowly and carefully eliminated
components in the masterpage that I didn’t need, and swapped out the HTML
components and css classes I needed from my dummy templates. I personally found this easier than using one
of the minimum master pages you find out there…
Calling myself out here…coming in cold in the world of
SharePoint and asp/aspx, I had to mess up my masterpage more than a few times
making edits. This is why versoning is
great. There is bad news though when
altering masterpages and page layouts in a Publishing site….making small
changes and wanting to see them reflected in the browser can be very painful
when you have to publish, submit, and accept the updated version of the
document each and every time. Hey SharePoint
dev team….how ‘bout a simple feature to turn on/off publishing on certain files
or file types? This would make the
development process much easier when
working on a Publishing site.
Page Layouts
I figured out that I had certain components that were global
(browser background, header, logo, navigation, footer) and that these obviously
belong in the master page. Thus began
the job of building out Page Layouts. I
cannot stress enough how important PLANNING is here. If you don’t have a robust information
architecture devised before doing this, you are spinning your wheels and
creating unnecessary work for yourself.
For my purposes, I ended up creating a page layout that
worked for ~80% of the pages on the site.
It consists of a title, and a bunch of webpart zones. This allowed me to drop in my webparts and
content editors to allow for my site pages to be as flexible as possible. Webparts are great…and I’ll post another
article soon on how I used them, customized them, etc.
CSS is King
Man I love CSS. It’s
such a great way to control display of so much on a powerful CMS like
SharePoint. I gotta say, the markup that
SharePoint 2010 creates when rendering in a browser can be a bit scary at
times. The pervasive use of tables is disheartening,
(luckily the navigation uses unordered lists) and the use of “element.styles”
is too common (styles directly in the markup, rather than classes being assigned
and styles provided externally). BUT, if
you are good with CSS (which you’d better be) you can do a lot without having
to touch the source code. But you’d
better turn on your Developer Tools (IE) or FireBug (Firefox) so you can see what you’re working with.
Anonymous Access
Obviously, for a customer-facing web site on SharePoint we
absolutely had to support
un-authenticated users. The first thing
I needed to do was turn on Anonymous Access.
That was pretty straightforward….Here
is a link if you don’t know how.
How does this relate to branding? Well….I had to eliminate the Ribbon UI if the
user wasn’t logged in. Wouldn’t that be
confusing to see if you were coming to a website? That’s where this
post came in handy. That worked
great, but now as an admin or editor on the site, how the heck do I get in? After all, when I get to the site, I’m anonymous.
That’s when I devised this approach (hack).
I’m not saying it’s a best practice, but worked well for my needs.
I just placed this code in my masterpage where I wanted the
item to appear, wrapped in a div:
<wssuc:Welcome id="IdLogin"
runat="server"
EnableViewState="false"></wssuc:Welcome>
<wssuc:MUISelector
runat="server"/>
Then, because in the ribbon (which would now appear on login)
the normal user account actions are present, I hide the div using css (property
- display:none). Now the original login
link which has now become a redundant user account menu upon login, won’t be
displayed to confuse the user.
So, that’s a start to my branding woes. I’m going to be posting more articles around what
it took to customize the site: InfoPath forms, WebParts, and SharePoint Search
to name a few. Stay tuned…
|
My first order of business after joining KnowledgeLake in January of this year, was leading a complete re-design and implementation of knowledgelake.com on the new SharePoint 2010 content management framework.
Having never used SharePoint in the past (other than checking in/out documents from document libraries) I had a lot to learn on building a completely branded web publishing site on the platform. It took a little while to get used to the master page/page layout templating structure as compared to other CMSs, but I caught on to it and found it to be quite powerful and flexible. Anyone who has used SharePoint for a project like this before, is also aware of the immense power and ease of use around web parts...Making a website dynamic with these tools is a great experience.
Everyone in our company is incredibly excited about being able to move away from editing static files, dealing with backoffice processes for review/publishing, and relying on our IT team for deployments to the server. Content management and publishing workflow features are king!
In a series of upcoming blog posts I intend to share some of my favorite online resources used when building the site, and provide thoughts on what I liked (and in some cases disliked) about certain features in SharePoint. Stay tuned...
|
I've been testing version 4.0 of our Imaging for SharePoint product quite a bit lately and I'm just amazed on how easy the new installation is. Using solution deployment everything feels like its just part of SharePoint now. A big kudos goes out to the entire team. I can't wait for the community to get their hands on the RTM.
Here is a quick run through on a Standalone SharePoint Server installation…
This is the actual installation, showing what is happening rather than cryptic progress bars.
Next is the the registration of the solutions so they can be deployed in SharePoint.
After registration Central Administration can be automatically launched to deploy the solutions.
The solution deployment page is loaded by default where both the KnowledgeLake Imaging Server and the Service Application can be deployed. By using solutions, administrators are given the option of deploying immediately, or using a scheduler to deploy KnowledgeLake off hours.
After the solutions are deployed KnowledgeLake needs to be activated on the farm.
The entire KnowledgeLake Imaging for SharePoint 2010 is now installed and ready to be activated on individual site collections as needed. This granular control all built inside the SharePoint interface should be a welcome addition for SharePoint Administrators.
Thanks Team,
Chris
|
Hopefully you have been following this series on Microsoft SharePoint Server 2010. It's been a great learning experience following these features through early Betas, release candidate and now RTM. If you haven't seen the other posts they can be found here:
ECM Features that Rock in SharePoint 2010: Enterprise Managed Metadata Part 1
ECM features that Rock in SharePoint 2010: Enterprise Managed Metadata Part 2
ECM Features That Rock in SharePoint 2010: Business Connectivity Services Part 1
ECM Features That Rock in SharePoint 2010: Business Connectivity Services Part 2
ECM Features That Rock in SharePoint 2010: List Validations
ECM Features That Rock in SharePoint 2010: Document Sets
ECM Features that Rock in SharePoint 2010: Document ID Service
ECM Features That Rock in SharePoint 2010: Audit Trail
How It Works
According to the feature definition, the Content Organizer allows administrators to create metadata based rules that move content submitted to the site to the correct library or folder.
When administrators turn on the setting to redirect users to a Drop Off Library, content uploaded to SharePoint will be forced into the Drop Off Library for routing. If this setting is not turned on usage of the Drop Off Library becomes optional. When working directly with the SharePoint APIs, the forced redirect may be adverted. Content Organizer Rules are set to determine where content should be routed to. Content Organizer Settings can also be used to change behaviors such as folder partitioning and not allowing duplicate submissions in target libraries.
Turning on the Content Organizer
Any site can be turned into a Content Organizer site by activating the feature, however before the feature can be activated the Site Collections must have Enterprise Site Collection feature turned on. To do this, select Site Actions, Site Settings, then Site collection features:


Activate the Enteprise Site Collection features:
Once activated a site can become a Content Organizer. Again, select Site Actions and then Site Settings:
Activate the Content Organizer:
Configuring the Content Organizer
Once enabled a new Document Library is automatically added to the site:
There will also be two new site administrator settings to configure the Content Organizer:
Both settings and rules are important for configuration. First the Content Organizer Settings. Most of the setting in this page are self explanatory, so I'll just focus on the not as obvious.
Redirect Users to the Drop Off Library: Although when using SharePoint natively, this works, only companies (such as KnowledgeLake <smile>) that respect this setting will actually enforce it. The reason is the API doesn't guarantee enforcement.
Sending to Another Site: Although useful, KnowledgeLake has consistently scaled single sites to large numbers of documents, but limits may be useful for some scenarios.
Folder Partitioning: Folder partitioning or densely packed folders, whatever it may be called is imperative for Document Libraries to be properly loaded with millions of documents. KnowledgeLake software will accomplish this with or without the Content Organizer, however SharePoint method works well by packing the folders as tight as possible. This setting is only applicable on content routed from the Drop Off Library.
Duplicate Submissions: This may not sound like a huge feature at first, but when you consider many applications that create documents tend to name the document the same thing and therefore this feature can eliminate accidental overriding. This setting is only applicable on document routed from the Drop Off Library. This setting is only applicable on content routed from the Drop Off Library.
Rules
Once the settings are saved the rules can be built. Select Content Organizer Rules then Add new item on the following page.
Rule Status and Priority: This is very important and helps to setup a flow of the how the organizer will work. Since it is possible for a document to meet multiple rules, prioritizing them will build a flow. Rules can also be changed to inactive in order to reuse them at a later time without deleting them.
Submission's Content Type: This setting determines the possible columns to be used for organization. What's really great here is the ability to put an "*" into the alternate name and allowing the rule to act on any content type.
Conditions: Self explanatory
Target Location: The great part about this setting is not so much the obvious target location, but the ability to build folders based on column properties. For example say Invoices were being scanned and saved, there could be a unique folder created for each different Vendor. What I personally do not like about the possible locations is that other sites must also have a Content Organizer defined. Seems like it would be really helpful to put a Content Organizer on a root site that could feed all libraries in sub sites without a turning the organizer on.
NOTICE: With the RTM release of MSS I was not able to turn on the ability to automatically create a folder. Nothing I tried would allow the checkbox to enable. This worked in both Beta and the RC. If anyone knows how to fix this, please let me know.
KnowledgeLake and the Content Organizer
KnowledgeLake capture software has been designed to be compatible with the Content Organizer. Take care when using third party capture products as they likely will not honor the Drop Off Library when its usage is forced by administrators. KnowledgeLake software designed for SharePoint 2010 will honor the Drop Off Library by forcing content into the Drop Off Library as configured, however when not forced still allow usage of uploading directly to Document Libraries.
|
This is a continuation of my ECM Features That Rock in SharePoint 2010 series I've been working on for the last month or so. If you'd like to read the previous posts you can find those here:
ECM Features that Rock in SharePoint 2010: Enterprise Managed Metadata Part 1
ECM features that Rock in SharePoint 2010: Enterprise Managed Metadata Part 2
ECM Features That Rock in SharePoint 2010: Business Connectivity Services Part 1
ECM Features That Rock in SharePoint 2010: Business Connectivity Services Part 2
ECM Features That Rock in SharePoint 2010: List Validations
ECM Features That Rock in SharePoint 2010: Document Sets
ECM Features that Rock in SharePoint 2010: Document ID Service
As I have been talking about in this series, SharePoint was a great ECM platform in 2007 and it is even better today with 2010. The product has been released to manufacturing and implementations are going to start popping into your local data centers pretty consistently for the rest of the year. There were some missing components in the 2007 platform and it was difficult to add enough customization to resolve every problem. One of these was auditing. The editing of a document was just about all that could be tracked (outside of workflow) and there was no convenient way to extend the system either. For SharePoint 2010 that's all changed.
There are two types of events the new audit trail tracks, Document/Item Events and List/Library/Site Events. This post is only going to focus on the Document/Item Events.
To begin, auditing must be turned on and all Audit Settings are configured by opening Site Settings:
And selecting the link to Site collection audit settings under Site Collection Administrator
In the Documents and Items section the several different options are available to turn on/off the auditing of:
- Opening/Downloading/Viewing List Item/Viewing Item Properties
- Editing items
- Checking items Out/In
- Moving or copying items (to another location in the site)
- Deleting or restoring items
Turning on and off these setting will allow administrators to audit almost anything that can be done to a document. They are also implemented at the API level so third party applications will automatically get logged. An example of this is the KnowledgeLake Document Viewer. When the document is opened in the viewer an event will get logged and events will also get logged if the document is checked out/in or the properties are edited.
Reporting
Microsoft SharePoint Server 2010 has the ability to run out of the box or custom reports against the audit logs. These reports are created as Excel documents and stored in a list for viewing. To access these log reports go back to Site Settings. Make sure the Reporting feature has been activated in Site Collection Features first:

If Reporting is activated there will be another option in Site Collection Administration called Audit Log Reports
Once this page has been opened there are several out of the box activity reports for content related logging as well as the ability to run custom reports. To show a quick example I have a brand new install of SharePoint and only one document has been viewed so far. I will start by selecting Content viewing:
Next the save location for the report must be specified. Select the Browse button and a window is presented asking where to save the report. The easiest choice is the Content and Structure reports list. Select it then select OK to close the window and OK again on the File Location page.
After the report is completed a window will be displayed showing a link to the view the report. You can open or download the Excel document. Looking at the report I can see that I viewed a PDF file as well as the actual report spreadsheet:
This report may be worthless for Document Imaging or Management scenarios because the amount of data could be overwhelming to view in Excel. It also contains all the pages that have been viewed, which again may not be great for document applications, but may be much appreciated in Web Content Management situations. The great news is that a custom report could be used to limit the data to specific dates and events as well as the site collection. The audit trail is also accessible through the API, which KnowledgeLake will extend in a future version of its product. Regardless it's good to know this information is now being logged and can be made available to administrators.
Thanks for reading,
- Chris Caplinger
|
It's been a busy week with both the AIIM show and RTM hitting MSDN. I decided to stop working on any more posts until I got RTM running in case anything changed from my previous build. Order is beginning to be restored though and I've started three different posts, which hopefully will all be done this week. If you'd like to read my previous posts on the ECM Features That Rock in SharePoint 2010 you can find them here:
ECM Features that Rock in SharePoint 2010: Enterprise Managed Metadata Part 1 ECM features that Rock in SharePoint 2010: Enterprise Managed Metadata Part 2 ECM Features That Rock in SharePoint 2010: Business Connectivity Services Part 1 ECM Features That Rock in SharePoint 2010: Business Connectivity Services Part 2 ECM Features That Rock in SharePoint 2010: List Validations
This should be one of the simpler feature posts as Documents Sets are very straightforward and easy to implement. With SharePoint 2010 (not SharePoint Foundation) a new Parent Content Type is available called Document Set that allows many documents to be grouped together into a single working set. Document Sets are made up of any number of Content Types which determines the types of documents that can be contained within it.
Properties of a Document Set itself are unique from the actual properties of each document in the set. Users with appropriate permissions can modify the properties of the set or of each document separately. However properties from the set have the option of being automatically pushed (synced) to each individual document within it. Since the set itself is its own document it can also be versioned and work flowed.
Turn It On
To start using Document Sets the features will need to be activated. Select Site Action | Site Settings:

Documents sets are a site collection features, so in order to activate these features select Site collection features and then activate it:
Creating Document Set Content Types
Once activated the Document Set Content Type will be available. I recommend that new content types based off Document Set are used to see the true power of document sets.
Go back to Site Settings and select Site content types:
Select the create button:
Fill in the values for the Name and Description by using Document Set as the parent content type.
Once the new content type is created the information page will be shown. There is Document Set settings link that is unique to content types inheriting from Document Set. After adding any columns or other needed configuration select it:
The first section of this page is Allowed Content Types. Use this section to add the content types that can be added to this document sets of this type. The second section is Default Content. Adding default content will force the creation of a new instance of the file to be added ever time the document set is created. To use a content type here it must first be added to the Allowed Content Types.
The next section is Shared Columns. This forces specific columns in the set to be synchronized with columns within documents in the set. If a column is not checked the documents within the set are allowed have their own values. This will only work if the content type of the document being added to the set shares the column with the document set content type itself. That's a mouth full and I apologize.
The Welcome Page settings are self explanatory. Just setting up which columns are shown when viewing the document set in SharePoint.
Using Document Sets
Once a document set content type has been created it can be added to any Document Library in the site. Once added a new document set can be created. From a Document Library, select the Documents tab.
Select New Document and then select the document set to be added to the library:
Fill in the necessary properties and select OK and a new document set will be created and the welcome page will be displayed. At this point new documents can be created or uploaded to the set from the Documents tab just like above. Any content added however will be added to the set and not the root Document Library. The Library tab next to Documents however, is referring to Document Library settings itself. To manage the set itself use the Manage tab underneath Document Set.
There are many uses for document sets and going into each one would be much too cumbersome assuming you've even read this far. Uses that quickly come to mind are employee packets, loan documents or any group of documents that typically gets routed as a whole.
One correction I do need to make for anyone seeing my previous presentations on document sets is the ability to download them. Although allowed in the beta, downloading documents sets does not seem to be possible in the RTM. At that time they downloaded as zip files and if anyone figures out how to make this work, please leave a comment letting me know how.
KnowledgeLake
At KnowledgeLake we have already built the ability to use document sets into the new Imaging for SharePoint 2010 product. When opening a document set or any document contained within a set in our Silverlight Document Viewer an option to open something we call the Document Set Explorer will be available. This will allow users to see each document in the set with the ability to open it inside our viewer.
We also plan on adding new capture features around document sets later this year. These should be available in both KnowledgeLake Capture and KnowledgeLake Connect and will have features such as capturing directly into document sets.
Thank for reading.
-Chris Caplinger
|
Two posts in one day is a one-time event for me. Only because this was previously started did I finish it today. It's on the new Document ID Service in Microsoft SharePoint Server 2010 and is a continuation of my ECM Features That Rock in SharePoint 2010 series. If you'd like to read the previous posts you can find those here:
ECM Features that Rock in SharePoint 2010: Enterprise Managed Metadata Part 1 ECM features that Rock in SharePoint 2010: Enterprise Managed Metadata Part 2 ECM Features That Rock in SharePoint 2010: Business Connectivity Services Part 1 ECM Features That Rock in SharePoint 2010: Business Connectivity Services Part 2 ECM Features That Rock in SharePoint 2010: List Validations
ECM Features That Rock in SharePoint 2010: Document Sets
First off, why is the Document ID Server so important? Out of the box it may not strike too many people as a feature that rocks because you are usually searching and finding what you need using KnowledgeLake software, other searching software or even just browsing libraries. However many integrations need a way to link to a document in a Document Library and guarantee they can still find the same document if it moved, its name is changed or maybe the library it existed in was renamed. All of these scenarios would have broken the URL link to the document in previous versions. However, the Document ID service will provide both a unique ID and a unique URL for the document that stays persistent as long as it stays in the Site Collection.
How does it work? Microsoft SharePoint Server 2010 (not available in SharePoint Foundation) provides a new service that assigns IDs to documents per Site Collection. The feature will need to first be turned on for each Site Collection needing unique ID for its documents. To do this select Site Action | Site Settings:

From the Site Setting page select the link under Site Collection Administration that says Site collection features:
Scroll down to the Document ID Service and activate it:
Browse back to the Site Settings page and under Site Collection Administration select Document ID settings:
There are four options on this page. The first is whether or not to assign Document IDs to documents. Assumedly this should be checked. The second option, which is a text box asks what Document IDs should begin with. I recommend setting this to something unique for each site which will guarantee any linking will always have a unique ID in the enterprise. This won't matter for the URL as it will be unique by Site Collection anyway.
The next check box can be selected if there are already documents in the Site Collection that need to have IDs assigned. Since this can take a while the configuration of the Document ID features uses a job to complete the configuration.
The last option is just about search scope and the default setting (All Sites) will usually work.
The Document ID service is now configured on the site collection.
WARNING: At this point the jobs have not run to setup the Document ID columns in the site, nor assign any IDs to existing documents. I tried to run the jobs manually and although they did not throw any errors, the logs said they started in stopped in the exact same second in time. Something didn't work. However if you wait for the jobs to run on schedule they seem to work just fine. You can reschedule the jobs (by default, mine were set for 9pm and 10pm) from Central Administration although that is out of the scope of this article.
Once the jobs run successfully, a new column will be assigned to all Document Libraries. Each document in the libraries will now have the associated column and a unique ID. In the case of my site I set all Document IDs to start with MYSITE and the URL will be specific to that document. If the URL is selected the document will be launched.
The new URL stays with the document throughout its life in the site collection. Previously in SharePoint, the only URL that existed was tied to the location and name of the document and if it changed the URL changed with it. With Document IDs there are two URLs for this document:
New Document ID based URL: http://mss2010clc/_layouts/DocIdRedir.aspx?ID=MYSITE-1-3 Old document location based URL: http://mss2010clc/Shared%20Documents/Buyers%20Laboratory%20-%20News%20Article.pdf
To demonstrate the new URL I'm going to edit the documents properties, changing the Name.
If I know look again at the two URLs I get the same Document ID URL, but a different location/name based URL.
New Document ID based URL: http://mss2010clc/_layouts/DocIdRedir.aspx?ID=MYSITE-1-3 Old document location based URL: http://mss2010clc/Shared%20Documents/News%20Article.pdf
KnowledgeLake
Like most other new ECM features in Microsoft SharePoint Server 2010, KnowledgeLake will be taking advantage of the Document ID. In upcoming software releases we will use the document ID to keep a consistent link to documents for Document Encryption, Redaction and Annotation capabilities. Previously this was very difficult to accomplish because there was no permanent link to documents stored in SharePoint Document Libraries.
Thank you for reading.
- Chris Caplinger
|
Compliance Details javascript:commonShowModalDialog('{SiteUrl}/_layouts/itemexpiration.aspx?ID={ItemId}&List={ListId}', 'center:1;dialogHeight:500px;dialogWidth:500px;resizable:yes;status:no;location:no;menubar:no;help:no', function GotoPageAfterClose(pageid){if(pageid == 'hold') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/hold.aspx?ID={ItemId}&List={ListId}'); return false;} if(pageid == 'audit') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/Reporting.aspx?Category=Auditing&backtype=item&ID={ItemId}&List={ListId}'); return false;} if(pageid == 'config') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/expirationconfig.aspx?ID={ItemId}&List={ListId}'); return false;}}, null); return false; 0x0 0x1 ContentType 0x01 898 Edit in Browser /_layouts/images/icxddoc.gif /sharepoint-ecm-blog/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 FileType xsn 255 Edit in Browser /_layouts/images/icxddoc.gif /sharepoint-ecm-blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document 255 Edit in Browser /_layouts/images/icxddoc.gif /sharepoint-ecm-blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.2 255 Edit in Browser /_layouts/images/icxddoc.gif /sharepoint-ecm-blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.3 255 Edit in Browser /_layouts/images/icxddoc.gif /sharepoint-ecm-blog/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.4 255 Publish Blog Post /sharepoint-ecm-blog/_layouts/wfstart.aspx?List={ListId}&ID={ItemId}&TemplateID=2c233183-58f6-4a38-9188-b22a1e692951&AssociationName=Publish Blog Post 0x0 0x0 List {603D8A98-AEB1-485C-9995-5E42A1ED77E4} 0 |
|
|
|