--- /dev/null
+New Feature: Web-Based Patron Self-Registration
+===============================================
+
+Feature Summary
+---------------
+
+Patrons may now fill out a web-based form from within the TPAC to create
+pending user accounts. The goal is to make the registration process more
+efficient by allowing the patron to provide much of the registration
+details in advance of registering with staff.
+
+Pending user accounts have no privileges.
+
+The form supports hiding fields, requiring fields, applying format
+validation, and displaying example text for selected fields by inspecting the
+relevant patron registration org unit settings.
+
+The "Request Library Card" link appears as the second default "bottom link"
+in the TPAC.
+
+If a user is logged in when clicking the register link, the logged in
+user will be tracked as the requesting user for the pending account.
+Additionally, the home org unit and some address fields will be pre-populated
+for convenience (with the assumption that these will likely be the same for
+the pending user -- they can of course be changed). When a requesting user
+is present on the pending user, a link to the requesting user will be
+displayed within the patron registration form in the staff client.
+
+Pending patron accounts which sit unattended in the database for too long
+are purged via a regularly running (CRON) script.
+
+Technical Details
+-----------------
+
+ * To activate the web form and allow pending patrons to be created, set
+ the 'opac.allow_pending_user' org unit setting to true where appropriate.
+ * To purge old pending user accounts, set an interval value for the new
+ 'opac.pending_user_expire_interval' org unit setting.
+ * The org unit settings to indicate show/require/regex/example are
+ loaded dynamically, so any similar org unit settings added in the future
+ will also be honored. Any setting matching the following format is used:
+ ** ui.patron.edit.[au|aua].*.show
+ ** ui.patron.edit.[au|aua].*.require
+ ** ui.patron.edit.[au|aua].*.regex
+ ** ui.patron.edit.[au|aua].*.example
+
+Upgrade Notes
+-------------
+
+ * If a value is set for the 'opac.pending_user_expire_interval' for
+ any org units, the new /openils/bin/purge_pending_users.srfsh script
+ should also be added the opensrf user's crontab. Running the script once
+ per day should suffice.