There might be other ways of setting this up but I thought I should write about a way of achieving this by purely utilising SharePoint 2010 out-of-the-box features.
You have a document library, we will call it Documents, that has a custom Content Type (we will call it ER Documents). Based on a certain criteria, lets say 6 months after a document has been approved, you would like to archive the document by moving it to another document library called ‘ER Compliance Archived Documents’.
You have two identical document libraries setup with the same content type enabled.
The solution involves:
- Enabling the Content Organizer Feature
- Creating a Content Organizer Rule
- Configuring a ‘send to’ connection
- Configuring the Document Library
Enabling the Content Organizer Feature
On the root web of your Site Collection browse to Site Actions > Site Settings > Manage Site Features and activate the ‘Content Organizer’ Feature.
After this feature is activated you will notice two new options in Site Settings (highlighted in the screenshot below) and a new document library called ‘Drop Off Library’:
Click on ‘Content Organizer Settings’ and make a note of the Web Service URL:
Creating a Content Organizer Rule
Click on the ‘Content Organizer Rules’ link and add a new item to create a new rule and set it up as below (click on the image if it appears a bit blurred):
This rule basically specifies where and how to route the archived documents.
Configuring a ‘send to’ connection
Browse to Central Administration > General Application Settings > Configure send to connections. Select the correct Web Application and create a new send to connection by filling out the form as below pasting the Web Service URL you copied earlier:
Click on ‘Add Connection’ and then ‘OK’.
Configuring the Document Library
Browse to the main ‘Documents’ document library > Library Settings > Information management policy settings > ER Documents (this is our content type) > Check ‘Enable Retention’ and fill the form out as below:
Testing the solution
Add a document that matches the archiving criteria (i.e. Approval Date more than 6 months ago).
Go to Central Administration > Monitoring > Review job definitions > select your Web Application and manually run the ‘Information management policy’ timer job. This job process and marks the documents, that match the criteria we have setup, for transfer. After the job has completed manually run the ‘Expiration policy’ timer job this timer job does the actual transfer of the marked documents.
After this the relevant documents that match the Information management policy criteria will be moved to the archived library.
You can also test this manually by browsing to the ‘Documents’ document library> Accessing the context menu > Send to > ER Compliance Archive (screenshot below).
The document should then appear in the archive document library. Please note that the manual send to method moves the document immediately but it is a useful way of testing whether you have configured the routing correctly.
Please refer to this post of mine on how to configure Forms Based Authentication (FBA) on a SharePoint Web Application using ASP.NET SQL Membership Provider.
After you setup FBA the People Picker control by default will only search for user’s by using the username. However, if you would like to search for users by part or full display name then you will need to carry out the following changes to the Membership Database:
- Add a column “ProfileNames” of type nvarchar(255) in the table: aspnet_Users
- Update the stored procedure: aspnet_Membership_FindUsersByName by replacing the following where clause:
WHERE u.ApplicationId = @ApplicationId AND m.UserId = u.UserId AND u.LoweredUserName LIKE LOWER(@UserNameToMatch)
WHERE u.ApplicationId = @ApplicationId AND m.UserId = u.UserId AND u.ProfileNames LIKE '%' + LOWER(@UserNameToMatch) + '%'
- Create the following Trigger on the “aspnet_Profile” table:
CREATE TRIGGER [dbo].[ProfileProperty_Trigger] ON [dbo].[aspnet_Profile] AFTER INSERT,UPDATE AS BEGIN SET NOCOUNT ON; DECLARE @Names nvarchar(50) DECLARE @UID nvarchar(50) SELECT @Names = p.PropertyValuesString, @UID = p.UserId FROM aspnet_Profile p INNER JOIN inserted i ON p.UserId = i.UserId UPDATE aspnet_Users SET ProfileNames = @Names WHERE aspnet_Users.UserId = @UID END
That is it, after making these changes the People Picker control should now match by username as well as display name.
Please refer to this post of mine on how to configure Forms Based Authentication (FBA) on a SharePoint Web Application.
Consider the following scenario:
You have configured FBA on a Web Application and created a Site Collection that uses FBA. Your Web Application uses mixed mode authentication (FBA and Windows Authentication). When you search for users in People Picker it shows you matches for both FBA and AD users. You would like to restrict People Picker to only show matches for FBA Users.
You can achieve this by running the following stsadm command:
stsadm -o setproperty -pn peoplepicker-onlysearchwithinsitecollection -url http://www.nameOfMySiteCollection.co.uk/ -pv yes
The ‘peoplepicker-onlysearchwithinsitecollection’ part in there is misleading and doesnt really do what it implies, however, it does get rid of the AD user mataches from People Picker.
Please note that if you type in the full username of an AD user and click on the Check Names icon it will still resolve the user.