This project is not covered by Drupal’s security advisory policy.

Project Summary

ULT stands for 'Ultimate League Tool', a suite of custom modules used to simplify the day-to-day management and operations of amateur sport leagues.

The tool (rather ambitiously) attempts to provide solutions for all aspects of a league; including player registration, team roster management, game creation, scheduling, field assignment, standings, online score submissions, and communications tools. For a complete feature list, view this post in the Sports Club (League) Management group on g.d.o.


ULT was first developed in the Spring of 2010 to organize and manage the various leagues put on by the 'Regina Ultimate Flying Disc Club' (also known as RUFDC). The module was put into production on the RUFDC website in April, and used to manage two four-tier leagues for both the Spring and Summer seasons ... consisting of over 700 players, almost 50 teams, and 431 games. The code posted here is the second generation rewrite of that original module.

Development of the initial ULT module suite was sponsored by RUFDC, on the condition that the finished product be made open-source (to ensure the organization was not left stranded if they lost access to the primary developer). Further inspiration came from the standalone 'LeagueRunner' project current being used by other Ultimate Frisbee leagues across Canada.

Module Listing

The following modules are currently included in the core 'ult_main' distribution:

  • ult_main:
    • Core module
    • Creates ult_league and ult_team content types
    • Requires cck, views, text, optionwidgets, nodereference, and userreference modules
  • ult_divisions:
    • Adds support for 'multiple divisions/tiers' per league
    • Creates ult_division content type
    • Requires ult_main module
  • ult_matches:
    • Adds support for tracking individual matches between teams
    • Creates ult_game and ult_gameresult content types
    • Requires ult_main and date_popup modules
  • ult_standings:
    • Adds support for league standings tables
    • Requires ult_main and ult_matches modules
  • ult_fields:
    • Adds support for field/facility assignment and tracking
    • Creates ult_fieldsite content type
    • Requires ult_main, gmapfield, and location modules
  • ult_timeslots:
    • Adds ability to associate available date/times with fields
    • Requires ult_main, ult_matches, and ult_fields modules
  • ult_scheduling:
    • Adds a scheduling screen where admins can add multiple games to existing field/timeslot combinations at once
    • Greatly simplifies the scheduling process (compared to adding games one at a time)
    • Requires ult_main, ult_matches, ult_fields, and ult_timeslots modules
  • ult_profiles:
    • Adds support for individual 'player profiles'
    • Creates ult_profile content type
    • Requires ult_main, content_profile, content_profile_registration, fieldgroup, and date modules
  • ult_registration:
    • Adds support for tracking status of team registrations
    • Adds fields related to registration to the ult_division, ult_league, and ult_team content types
    • Requires ult_main and date_popup modules
  • ult_rosters:
    • Adds support for tracking and management of team rosters
    • Adds ult_roster content type
    • Requires ult_main module
  • ult_waivers:
    • Adds display and tracking of player waiver forms before a player is added to a team
    • Requires ult_main and ult_roster modules
  • ult_logos:
    • Adds support for league, division, and team logo images
    • Requires ult_main, imagecache, and imagefield modules
  • ult_spirit:
    • Adds support for ultimate-frisbee 'spirit score' tracking
    • Supports 'score out of 10', or customized 'survey' spirit scores
    • Requires ult_main and ult_matches modules

Additional Module Support

ULT will also utilize functionality from the 'Contact' and 'RealName' modules, if installed.


A couple of notes regarding installation:

  1. ULT leverages code from the 'Install Profiles API' module to automatically generate the various content types it requires. Please ensure the 'Install Profiles API' exists on your server before attempting to activate any ULT components. (Note: The 'Install Profiles API' code must exist on your server, but the module does not need to be 'enabled'.)
  2. To ensure that content types are created successfully, please enable any of the cck field module dependencies before enabling any ULT components. Attempting to enable them simultaneously may result in a REQUIREMENTS_ERROR popup, which will prevent the installation of the ULT module. If this occurs, simply re-enable the desired ULT component.


See the developer's notes comments located in the TODO.txt file for planned developments. Feature requests are welcome in the d.o issue queue. Prioritization of feature requests will be subject to the whims of the maintainer and project sponsor. (That said, I am open and available for 'paid feature development' if you require a particular feature developed on an accelerated timeline.)

Developers Note:

While I'm certainly willing to take feature requests for ULT, the current module has a few architectural design issues which can get in the way of certain features. As a result, my preference is to dedicate the majority of my attention to working on a more flexible 'Drupal 7' successor to ULT ... my intention being to develop a 'League API' which can be used as the base of any League related site; and then follow up with other modules/plugins for the individual features as they become available.

I will still consider incremental feature requests for the Drupal 6 version of the module; and will make time available for paid development/support if needed ... but any features which require major code changes will likely be put off until the Drupal 7 successor to ULT is released.

Project information