Update 9/18/2007: I’ve modified this command so that it no longer manipulates the database directly. The content below has been updated to reflect the changes.

This particular command which I called gl-setuserprofileimportschedule, really drove me nuts. As far as I could find there is no way to set this information using any Microsoft provided public API. If you disassemble the code that is doing this you’ll find lots of great classes that allow programmatic manipulation of this as well as other SSP and Profile related configurations – unfortunately those classes are all marked internal so we can’t use them easily.

The two main ones are UserProfileApplication and SharedResourcesProvider. Microsoft uses these two classes for most of the more complex configuration settings. Because manipulating the database directly is not supported by Microsoft I chose to rewrite this command from it’s original incarnation so that I now utilize the internal classes, methods, and properties that Microsoft is using when setting the schedule via the browser. Keep in mind that this approach is also not supported by Microsoft but it is their recommended approach over manipulating the database and is generally less frowned upon.

The syntax of the command can be seen below (note that if you were using this command prior to 9/18/2007 then the syntax has changed):

C:\>stsadm -help gl-setuserprofileimportschedule

stsadm -o gl-setuserprofileimportschedule


Sets the profile import schedule.

Parameters:
        -sspname <SSP name>
        -type <incremental|full>
        -occurrence <daily|weekly|monthly>
        -hour <hour to run (0-23)>
        [-day <the day to run if monthly is specified>]
        [-dayofweek <the day of week to run if weekly is specified (sunday|monday|tuesday|wednesday|thursday|friday|saturday)>]
        [-enabled <true|false> (default is true)]
        [-runjob]

The following table summarizes the command and its various parameters:

Command NameAvailabilityBuild Date
gl-setuserprofileimportscheduleMOSS 2007Release: 8/9/2007, Updated: 8/14/2008
Parameter NameShort FormRequiredDescriptionExample Usage
sspnamesspNoThe name of the SSP that the user profiles are associated with. If omitted the default SSP will be used.-sspname SSP1, -ssp SSP1
typetYesThe type of schedule to set. Valid values are “incremental” and “full”.-type full, -t full
occurrenceocYesSpecifies how frequently the import should occur. Valid values are “daily”, “weekly”, and “monthly”.-occurrence daily, -oc monthly
hourYesThe hour in which to run the import job. This should be an integer between 0 and 23 (where 0 is 12:00am and 23 is 11:00pm).-hour 22
dayNo, unless occurrence is monthlyThe day of the month to run the import job. Valid values are between 1 and 31.-day 1
dayofweekNo, unless occurrence is weeklyThe day of the week to run the import job. Valid values are “sunday”, “monday”, “tuesday”, “wednesday”, “thursday”, and “saturday”.-dayofweek saturday
enabledNo“true” to enable the import schedule, “false” to disable it. If not specified then the import schedule will be enabled.-enabled true
runjobrunNoIf specified then the import job will be immediately executed after setting the schedule.-runjob, -run

Here’s an example of how to set the full import schedule to every Saturday at 3:00AM:

stsadm –o gl-setuserprofileimportschedule –sspname SSP1 -type full -occurrence weekly -hour 3 -dayofweek Saturday

Please note that because this command uses internal only classes, methods, and properties directly it could, according to Microsoft, put your environment into an un-supported state (though this is Microsoft’s recommended approach over directly manipulating the database). Please make sure you understand what the command is doing and what your support options with Microsoft are.