Dynamic User Directory Module Review 

I was recently given an opportunity to review the Dynamic User Directory module created by the folks at DataSprings. This module is a a great module for creating a user directory from a standard DotNetNuke installation, and works great for individuals that are using the Dynamic Registration module from DataSprings as well. At the most basic level, this module might seem to be a fairly simple module, it displays a list of users on the portal. However, it is important to not over-simplify the task at hand. Due to the nature of DotNetNuke and the data structures used it is very common for a "user directory" module to be a very complex setup, especially if you are looking to work against a large user base, or to support searching on profile values. This review will take a look at the module and provide some insight to some of the key findings from my testing.

Module Installation

To properly test this module I worked with 4 different DNN installations of various DNN versions and configurations. The reason for this is that the module has SQL scripts that have been prepared that are specific to SQL Server 2005 or later. As part of this, installation to a DNN site that is not on SQL Server 2005 or later is not supported. During my installation process I noticed fairly good successes but did run into two different problems at times. Neither of them major, but items to watch for if you are installing for the first time.

The first issue was related to SQL Server 2005 compatibility mode. For one reason or another my SQL Server 2005 database was not setup to be in 2005 mode. A script in the installation process for the module was to modify this, however, it did not execute in a manner that changed the database before the 2005 specific stored procedure was to be created. I had to contact DataSprings for assistance, but thankfully the issue was quickly identified and resolved and I was up and running. I also worked with them and I believe they will be making modifications to the installation process that might prevent this type of issue in the future.

The second issue isn't really an issue, but more of a behavior or chain of events to be aware of. First of all the module does a large number of modifications to stored procedures, it is important that after the module installs that the application restart to clear any parameter caching. I noticed that one of my installations did not do this, and this caused some issues with exceptions about "parameter values do not match count". This problem quickly went away after re-starting the application from Host -> Host Settings. The second part of this is to note that the module has a Scheduled Job that is used to create a flattened user structure, this will allow the module to work with much better performance, however, it is only updated every 60 minutes by default. Until this job executes for the first time, configuration of the module cannot be completed 100% as the "Sort By" field in the configuration will not be populated.

Module Administration and Configuration

For those that have used other DataSprings modules in the past you will find a familiar control panel look and feel. This provides a nice, consistent system to configure the module. There are three main areas of configuration, each will be discussed below, Module Configuration, Directory Template, and Search Fields. As usual with the DataSprings modules there is a vast amount of detail contained in the users guide. I strongly recommend reviewing the documentation before proceeding, although simple enough to configure without it, it does make the process a bit easier.

Module Configuration

In this section of the control panel you will find configuration information for how the module is going to behave. Items such as Sort Order, Records Per Page, and other items of that nature are defined here. A few of the key highlights that set this module apart from others though are the configurations for Search, allowing you to control what if any search facility is available, as well as the ability to enable a "detail" view for individual user accounts with configuration settings for SEO optimizations of page title, keywords, and descriptions. Finally for large sites or displaying subsets of users you can choose to include/exclude users based on roles or further filter records based on profile data.

Directory Template

This section of the configuration is where you define the Header, Item, Detail, and Footer templates. A very powerful tool allowing you endless customization of the individual displays. It is simply a collection of Rich Text Editors that allow you to specify templates using tokens for the data values. My only complaint here is that you have to define a template before the module is usable. With no template to start from, users could be slightly intimidated with the configuration process. Although it does provide the most flexibility by illustrating that you can start with anything. DataSprings demos a few different examples of directory configuration on their product page for the Dynamic User Directory Module, these can help get someone up to speed on how they might be able to build it.

Search Fields

The final configuration item is the definition of search fields, including default values and options for criteria. With over 15 different options for search criteria such as Equals or Begins With you are given great flexibility in either doing default searching or to allow your users to quickly search based on a number of criteria. You are additionally able to define if a field is an AND or an OR operation. Given this setup you are able to quickly implement complex fully searchable directories or a simple directory with first name only searching.

Module Performance

Once I got the module loaded I really started to pound it to see how it performed. One of the biggest documented changes in the current release were performance improvements. I set out to test this using my local installation with 100,000 users. The directory was surprisingly fast, paging was responsive and the interface worked well. Searching even with the large set of users and profile properties was effortless. Combine this with the vast ability to customize the implementation I will be using this for many future projects.

It is important to note that the module has the performance you experience due to a scheduled job that updates the "directory" every 60 minutes. This is needed for performance but has two different points that should be known. First of all, changes to profile data can take 60 minutes to appear in the directory. Secondly, user profile data is duplicated in another table, although only with profile data, there is some data duplication completed which will take up some space on the database size. Neither of these are major issues, just items that as a site administrator you want to be aware of.

Summary

I believe this is a very good module, although there are a few things to be aware of with the current release depending on your environment it is a solid product. With DataSprings consistent reputation of continually updating modules, I will be excited to see what all gets introduced in the next revisions!

Posted by Mitchel on Tuesday, January 19, 2010
 

Comments

Currently, there are no comments. Be the first to post one!
Click here to post a comment

Disclaimer