bug 1105485: Fix up submission of release blobs so they can be used for beta builds. r=nthomas
authorBen Hearsum <bhearsum@mozilla.com>
Mon, 16 Mar 2015 09:22:13 -0400 (2015-03-16)
changeset 11992 6366a5b105af8044fef63511b0292cff2ecdf9a7
parent 11991 f2648de01e1b918da38b9d2cadf01307e4e6c495
child 11993 ae812b8537a826802a12b0c7fa333997c99bbb38
child 11994 756f369e434a8d735201326be880dbf5c462b514
push id8696
push userbhearsum@mozilla.com
push dateMon, 16 Mar 2015 13:25:07 +0000 (2015-03-16)
reviewersnthomas
bugs1105485
bug 1105485: Fix up submission of release blobs so they can be used for beta builds. r=nthomas
mozilla/release-fennec-mozilla-beta.py
mozilla/release-fennec-mozilla-beta.py.template
mozilla/release-fennec-mozilla-release.py
mozilla/release-fennec-mozilla-release.py.template
mozilla/release-firefox-mozilla-beta.py
mozilla/release-firefox-mozilla-beta.py.template
mozilla/release-firefox-mozilla-esr31.py
mozilla/release-firefox-mozilla-esr31.py.template
mozilla/release-firefox-mozilla-release.py
mozilla/release-firefox-mozilla-release.py.template
mozilla/release-thunderbird-comm-beta.py
mozilla/release-thunderbird-comm-beta.py.template
mozilla/release-thunderbird-comm-esr31.py
mozilla/release-thunderbird-comm-esr31.py.template
mozilla/release_templates/fennec_beta_ready_for_beta-cdntest_testing_success
mozilla/release_templates/fennec_beta_ready_for_release_success
mozilla/release_templates/fennec_beta_updates_success
mozilla/release_templates/fennec_ready_for_release_success
mozilla/release_templates/fennec_ready_for_releasetest_testing_success
mozilla/release_templates/fennec_release_ready_for_release-cdntest_testing_success
mozilla/release_templates/fennec_release_ready_for_release_success
mozilla/release_templates/fennec_release_updates_success
mozilla/release_templates/fennec_updates_success
mozilla/release_templates/firefox_beta_ready_for_beta-cdntest_testing_success
mozilla/release_templates/firefox_beta_ready_for_release_success
mozilla/release_templates/firefox_beta_updates_success
mozilla/release_templates/firefox_esr_ready_for_esr-cdntest_testing_success
mozilla/release_templates/firefox_esr_ready_for_release
mozilla/release_templates/firefox_esr_updates_success
mozilla/release_templates/firefox_ready_for_release_success
mozilla/release_templates/firefox_ready_for_releasetest_testing_success
mozilla/release_templates/firefox_release_ready_for_release-cdntest_testing_success
mozilla/release_templates/firefox_release_ready_for_release_success
mozilla/release_templates/firefox_release_updates_success
mozilla/release_templates/firefox_updates_success
mozilla/release_templates/ready_for_release_success
mozilla/release_templates/ready_for_releasetest_testing_success
mozilla/release_templates/thunderbird_beta_ready_for_beta-cdntest_testing_success
mozilla/release_templates/thunderbird_beta_ready_for_release_success
mozilla/release_templates/thunderbird_beta_updates_success
mozilla/release_templates/thunderbird_ready_for_release_success
mozilla/release_templates/thunderbird_ready_for_releasetest_testing_success
mozilla/release_templates/thunderbird_release_ready_for_release_cdntest_testing_success
mozilla/release_templates/thunderbird_release_ready_for_release_success
mozilla/release_templates/thunderbird_release_updates_success
mozilla/release_templates/update_shipping_beta_success
mozilla/release_templates/update_shipping_esr_success
mozilla/release_templates/update_shipping_release_success
mozilla/release_templates/update_shipping_success
mozilla/release_templates/update_verify_failed
mozilla/release_templates/update_verify_success
mozilla/release_templates/updates_success
mozilla/staging_release-fennec-mozilla-beta.py
mozilla/staging_release-fennec-mozilla-beta.py.template
mozilla/staging_release-fennec-mozilla-release.py
mozilla/staging_release-fennec-mozilla-release.py.template
mozilla/staging_release-firefox-mozilla-beta.py
mozilla/staging_release-firefox-mozilla-beta.py.template
mozilla/staging_release-firefox-mozilla-esr31.py
mozilla/staging_release-firefox-mozilla-esr31.py.template
mozilla/staging_release-firefox-mozilla-release.py
mozilla/staging_release-firefox-mozilla-release.py.template
mozilla/staging_release-thunderbird-comm-beta.py
mozilla/staging_release-thunderbird-comm-beta.py.template
mozilla/staging_release-thunderbird-comm-esr31.py
mozilla/staging_release-thunderbird-comm-esr31.py.template
--- a/mozilla/release-fennec-mozilla-beta.py
+++ b/mozilla/release-fennec-mozilla-beta.py
@@ -98,16 +98,31 @@ releaseConfig['partnerRepackPlatforms'] 
 
 # mozconfigs
 releaseConfig['mozconfigs']          = {
     'android-api-9': 'mobile/android/config/mozconfigs/android-api-9-10-constrained/release',
     'android-api-11': 'mobile/android/config/mozconfigs/android-api-11/release',
     'android-x86': 'mobile/android/config/mozconfigs/android-x86/release',
 }
 releaseConfig['releaseChannel']      = 'beta'
+releaseConfig["updateChannels"] = {
+    "beta": {
+        "ruleId": 91,
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "testChannels": {
+            "beta-localtest": {
+                "ruleId": 89,
+            },
+            "beta-cdntest": {
+                "ruleId": 90,
+            }
+        }
+    }
+}
 
 # Misc configuration
 releaseConfig['enable_repo_setup']       = False
 
 # Fennec specific
 releaseConfig['usePrettyNames']           = False
 releaseConfig['disableStandaloneRepacks'] = True
 releaseConfig['disablePermissionCheck']   = True
@@ -147,22 +162,18 @@ releaseConfig['multilocale_config'] = {
 }
 releaseConfig['enableSigningAtBuildTime'] = True
 releaseConfig['enablePartialMarsAtBuildTime'] = False
 releaseConfig['autoGenerateChecksums'] = False
 releaseConfig['use_mock'] = True
 releaseConfig['mock_platforms'] = ('android-api-9', 'android-api-11', 'android-x86', 'linux')
 releaseConfig['ftpSymlinkName'] = 'latest-beta'
 releaseConfig['enableAutomaticPushToMirrors'] = True
-releaseConfig['localTestChannel']      = 'beta-localtest'
-releaseConfig['cdnTestChannel']        = 'beta-cdntest'
 releaseConfig['partialUpdates']      = {}
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
-releaseConfig['testChannelRuleIds']    = [89,90]
-releaseConfig['releaseChannelRuleIds'] = [91]
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_fennec.py'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['bouncer_aliases'] = {
     'Fennec-%(version)s': 'fennec-beta-latest',
 }
 releaseConfig['skip_updates']        = True
\ No newline at end of file
--- a/mozilla/release-fennec-mozilla-beta.py.template
+++ b/mozilla/release-fennec-mozilla-beta.py.template
@@ -96,16 +96,31 @@ releaseConfig['partnerRepackPlatforms'] 
 
 # mozconfigs
 releaseConfig['mozconfigs']          = {
     'android-api-9': 'mobile/android/config/mozconfigs/android-api-9-10-constrained/release',
     'android-api-11': 'mobile/android/config/mozconfigs/android-api-11/release',
     'android-x86': 'mobile/android/config/mozconfigs/android-x86/release',
 }
 releaseConfig['releaseChannel']      = 'beta'
+releaseConfig["updateChannels"] = {
+    "beta": {
+        "ruleId": 91,
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "testChannels": {
+            "beta-localtest": {
+                "ruleId": 89,
+            },
+            "beta-cdntest": {
+                "ruleId": 90,
+            }
+        }
+    }
+}
 
 # Misc configuration
 releaseConfig['enable_repo_setup']       = False
 
 # Fennec specific
 releaseConfig['usePrettyNames']           = False
 releaseConfig['disableStandaloneRepacks'] = True
 releaseConfig['disablePermissionCheck']   = True
@@ -145,22 +160,18 @@ releaseConfig['multilocale_config'] = {
 }
 releaseConfig['enableSigningAtBuildTime'] = True
 releaseConfig['enablePartialMarsAtBuildTime'] = False
 releaseConfig['autoGenerateChecksums'] = False
 releaseConfig['use_mock'] = True
 releaseConfig['mock_platforms'] = ('android-api-9', 'android-api-11', 'android-x86', 'linux')
 releaseConfig['ftpSymlinkName'] = 'latest-beta'
 releaseConfig['enableAutomaticPushToMirrors'] = True
-releaseConfig['localTestChannel']      = 'beta-localtest'
-releaseConfig['cdnTestChannel']        = 'beta-cdntest'
 releaseConfig['partialUpdates']      = {}
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
-releaseConfig['testChannelRuleIds']    = [89,90]
-releaseConfig['releaseChannelRuleIds'] = [91]
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_fennec.py'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['bouncer_aliases'] = {
     'Fennec-%(version)s': 'fennec-beta-latest',
 }
 releaseConfig['skip_updates']        = True
--- a/mozilla/release-fennec-mozilla-release.py
+++ b/mozilla/release-fennec-mozilla-release.py
@@ -105,16 +105,31 @@ releaseConfig['partnerRepackConfig'] = {
 }
 
 # mozconfigs
 releaseConfig['mozconfigs']          = {
     'android': 'mobile/android/config/mozconfigs/android/release',
     'android-x86': 'mobile/android/config/mozconfigs/android-x86/release',
 }
 releaseConfig['releaseChannel']        = 'release'
+releaseConfig["updateChannels"] = {
+    "release": {
+        "ruleId": -1, # TBD
+        "localTestChannel": "release-localtest",
+        "cdnTestChannel": "release-cdntest",
+        "testChannels": {
+            "release-localtest": {
+                "ruleId": -1, # TBD
+            },
+            "release-cdntest": {
+                "ruleId": -1, # TBD
+            }
+        }
+    }
+}
 
 # Misc configuration
 releaseConfig['enable_repo_setup']       = False
 
 # Fennec specific
 releaseConfig['usePrettyNames']           = False
 releaseConfig['disableStandaloneRepacks'] = True
 releaseConfig['disablePermissionCheck']   = True
@@ -148,20 +163,16 @@ releaseConfig['multilocale_config'] = {
 releaseConfig['enableSigningAtBuildTime'] = True
 releaseConfig['enablePartialMarsAtBuildTime'] = False
 releaseConfig['autoGenerateChecksums'] = False
 releaseConfig['use_mock'] = True
 releaseConfig['mock_platforms'] = ('android', 'android-x86', 'linux')
 releaseConfig['ftpSymlinkName'] = 'latest'
 releaseConfig['partialUpdates']      = {}
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
-releaseConfig['localTestChannel']      = 'release-localtest'
-releaseConfig['cdnTestChannel']        = 'release-cdntest'
-releaseConfig['testChannelRuleIds']    = []
-releaseConfig['releaseChannelRuleIds'] = []
 
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_fennec.py'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['bouncer_aliases'] = {
     'Fennec-%(version)s': 'fennec-latest',
 }
-releaseConfig['skip_updates']        = True
\ No newline at end of file
+releaseConfig['skip_updates']        = True
--- a/mozilla/release-fennec-mozilla-release.py.template
+++ b/mozilla/release-fennec-mozilla-release.py.template
@@ -105,16 +105,31 @@ releaseConfig['partnerRepackConfig'] = {
 }
 
 # mozconfigs
 releaseConfig['mozconfigs']          = {
     'android': 'mobile/android/config/mozconfigs/android/release',
     'android-x86': 'mobile/android/config/mozconfigs/android-x86/release',
 }
 releaseConfig['releaseChannel']        = 'release'
+releaseConfig["updateChannels"] = {
+    "release": {
+        "ruleId": -1, # TBD
+        "localTestChannel": "release-localtest",
+        "cdnTestChannel": "release-cdntest",
+        "testChannels": {
+            "release-localtest": {
+                "ruleId": -1, # TBD
+            },
+            "release-cdntest": {
+                "ruleId": -1, # TBD
+            }
+        }
+    }
+}
 
 # Misc configuration
 releaseConfig['enable_repo_setup']       = False
 
 # Fennec specific
 releaseConfig['usePrettyNames']           = False
 releaseConfig['disableStandaloneRepacks'] = True
 releaseConfig['disablePermissionCheck']   = True
@@ -148,20 +163,16 @@ releaseConfig['multilocale_config'] = {
 releaseConfig['enableSigningAtBuildTime'] = True
 releaseConfig['enablePartialMarsAtBuildTime'] = False
 releaseConfig['autoGenerateChecksums'] = False
 releaseConfig['use_mock'] = True
 releaseConfig['mock_platforms'] = ('android', 'android-x86', 'linux')
 releaseConfig['ftpSymlinkName'] = 'latest'
 releaseConfig['partialUpdates']      = {}
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
-releaseConfig['localTestChannel']      = 'release-localtest'
-releaseConfig['cdnTestChannel']        = 'release-cdntest'
-releaseConfig['testChannelRuleIds']    = []
-releaseConfig['releaseChannelRuleIds'] = []
 
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_fennec.py'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['bouncer_aliases'] = {
     'Fennec-%(version)s': 'fennec-latest',
 }
 releaseConfig['skip_updates']        = True
--- a/mozilla/release-firefox-mozilla-beta.py
+++ b/mozilla/release-firefox-mozilla-beta.py
@@ -94,54 +94,66 @@ releaseConfig['shippedLocalesPath']  = '
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozBeta-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'ftp.mozilla.org'
 releaseConfig['stagingServer']       = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4.mozilla.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'ffxbld'
 releaseConfig['ausSshKey']           = 'ffxbld_rsa'
 releaseConfig['releaseNotesUrl']     = None
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = None
 releaseConfig['updateVerifyChunks']  = 6
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozBeta-firefox-linux.cfg',
-    'linux64':  'mozBeta-firefox-linux64.cfg',
-    'macosx64': 'mozBeta-firefox-mac64.cfg',
-    'win32':  'mozBeta-firefox-win32.cfg',
-    'win64':  'mozBeta-firefox-win64.cfg',
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'browser/config/mozconfigs/linux32/beta',
     'linux64': 'browser/config/mozconfigs/linux64/beta',
     'macosx64': 'browser/config/mozconfigs/macosx-universal/beta',
     'win32': 'browser/config/mozconfigs/win32/beta',
     'win64': 'browser/config/mozconfigs/win64/beta',
 }
 releaseConfig['xulrunner_mozconfigs']          = {
     'linux': 'xulrunner/config/mozconfigs/linux32/xulrunner',
     'linux64': 'xulrunner/config/mozconfigs/linux64/xulrunner',
     'macosx64': 'xulrunner/config/mozconfigs/macosx-universal/xulrunner',
     'win32': 'xulrunner/config/mozconfigs/win32/xulrunner',
     'win64': 'xulrunner/config/mozconfigs/win64/xulrunner',
 }
 releaseConfig['releaseChannel']        = 'beta'
-releaseConfig['releaseChannelRuleIds'] = [32]
-releaseConfig['localTestChannel']      = 'beta-localtest'
-releaseConfig['cdnTestChannel']        = 'beta-cdntest'
-releaseConfig['testChannelRuleIds']    = [25,45]
+releaseConfig['updateChannels'] = {
+    "beta": {
+        "versionRegex": r"^.*$",
+        "ruleId": 32,
+        "patcherConfig": "mozBeta-branch-patcher2.cfg",
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozBeta-firefox-linux.cfg",
+            "linux64":  "mozBeta-firefox-linux64.cfg",
+            "macosx64": "mozBeta-firefox-mac64.cfg",
+            "win32":  "mozBeta-firefox-win32.cfg",
+            "win64":  "mozBeta-firefox-win64.cfg",
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 45,
+            },
+            "beta-localtest": {
+                "ruleId": 25,
+            },
+        }
+    }
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = True
 releaseConfig['partnersRepoPath']    = 'build/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_firefox_beta.py'
@@ -151,9 +163,9 @@ releaseConfig['enable_repo_setup'] = Fal
 releaseConfig['enableAutomaticPushToMirrors'] = True
 releaseConfig['use_mock'] = True
 releaseConfig['mock_platforms'] = ('linux','linux64')
 releaseConfig['ftpSymlinkName'] = 'latest-beta'
 
 releaseConfig['bouncer_aliases'] = {
     'Firefox-%(version)s': 'firefox-beta-latest',
     'Firefox-%(version)s-stub': 'firefox-beta-stub',
-}
\ No newline at end of file
+}
--- a/mozilla/release-firefox-mozilla-beta.py.template
+++ b/mozilla/release-firefox-mozilla-beta.py.template
@@ -88,54 +88,66 @@ releaseConfig['shippedLocalesPath']  = '
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozBeta-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'ftp.mozilla.org'
 releaseConfig['stagingServer']       = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4.mozilla.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'ffxbld'
 releaseConfig['ausSshKey']           = 'ffxbld_rsa'
 releaseConfig['releaseNotesUrl']     = None
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = {{ promptWaitTime }}
 releaseConfig['updateVerifyChunks']  = 6
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozBeta-firefox-linux.cfg',
-    'linux64':  'mozBeta-firefox-linux64.cfg',
-    'macosx64': 'mozBeta-firefox-mac64.cfg',
-    'win32':  'mozBeta-firefox-win32.cfg',
-    'win64':  'mozBeta-firefox-win64.cfg',
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'browser/config/mozconfigs/linux32/beta',
     'linux64': 'browser/config/mozconfigs/linux64/beta',
     'macosx64': 'browser/config/mozconfigs/macosx-universal/beta',
     'win32': 'browser/config/mozconfigs/win32/beta',
     'win64': 'browser/config/mozconfigs/win64/beta',
 }
 releaseConfig['xulrunner_mozconfigs']          = {
     'linux': 'xulrunner/config/mozconfigs/linux32/xulrunner',
     'linux64': 'xulrunner/config/mozconfigs/linux64/xulrunner',
     'macosx64': 'xulrunner/config/mozconfigs/macosx-universal/xulrunner',
     'win32': 'xulrunner/config/mozconfigs/win32/xulrunner',
     'win64': 'xulrunner/config/mozconfigs/win64/xulrunner',
 }
 releaseConfig['releaseChannel']        = 'beta'
-releaseConfig['releaseChannelRuleIds'] = [32]
-releaseConfig['localTestChannel']      = 'beta-localtest'
-releaseConfig['cdnTestChannel']        = 'beta-cdntest'
-releaseConfig['testChannelRuleIds']    = [25,45]
+releaseConfig['updateChannels'] = {
+    "beta": {
+        "versionRegex": r"^.*$",
+        "ruleId": 32,
+        "patcherConfig": "mozBeta-branch-patcher2.cfg",
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozBeta-firefox-linux.cfg",
+            "linux64":  "mozBeta-firefox-linux64.cfg",
+            "macosx64": "mozBeta-firefox-mac64.cfg",
+            "win32":  "mozBeta-firefox-win32.cfg",
+            "win64":  "mozBeta-firefox-win64.cfg",
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 45,
+            },
+            "beta-localtest": {
+                "ruleId": 25,
+            },
+        }
+    }
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = True
 releaseConfig['partnersRepoPath']    = 'build/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_firefox_beta.py'
--- a/mozilla/release-firefox-mozilla-esr31.py
+++ b/mozilla/release-firefox-mozilla-esr31.py
@@ -93,47 +93,58 @@ releaseConfig['shippedLocalesPath']  = '
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozEsr31-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'ftp.mozilla.org'
 releaseConfig['stagingServer']       = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4.mozilla.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'ffxbld'
 releaseConfig['ausSshKey']           = 'ffxbld_rsa'
 releaseConfig['releaseNotesUrl']     = None
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = None
 releaseConfig['useBetaChannel']      = 1
 releaseConfig['updateVerifyChunks']  = 6
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozEsr31-firefox-linux.cfg',
-    'linux64':  'mozEsr31-firefox-linux64.cfg',
-    'macosx64': 'mozEsr31-firefox-mac64.cfg',
-    'win32':  'mozEsr31-firefox-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'browser/config/mozconfigs/linux32/release',
     'linux64': 'browser/config/mozconfigs/linux64/release',
     'macosx64': 'browser/config/mozconfigs/macosx-universal/release',
     'win32': 'browser/config/mozconfigs/win32/release',
 }
 releaseConfig['releaseChannel']        = 'esr'
-releaseConfig['releaseChannelRuleIds'] = [34]
-releaseConfig['localTestChannel']      = 'esr-localtest'
-releaseConfig['cdnTestChannel']        = 'esr-cdntest'
-releaseConfig['testChannelRuleIds']    = [58,59]
-
+releaseConfig['updateChannels'] = {
+    "esr": {
+        "versionRegex": r"^.*$",
+        "ruleId": 34,
+        "patcherConfig": "mozEsr31-branch-patcher2.cfg",
+        "localTestChannel": "esr-localtest",
+        "cdnTestChannel": "esr-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozEsr31-firefox-linux.cfg",
+            "linux64":  "mozEsr31-firefox-linux64.cfg",
+            "macosx64": "mozEsr31-firefox-mac64.cfg",
+            "win32":  "mozEsr31-firefox-win32.cfg",
+        },
+        "testChannels": {
+            "esr-localtest": {
+                "ruleId": 58,
+            },
+            "esr-cdntest": {
+                "ruleId": 59,
+            },
+        },
+    },
+}
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'build/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_firefox_esr.py'
 
--- a/mozilla/release-firefox-mozilla-esr31.py.template
+++ b/mozilla/release-firefox-mozilla-esr31.py.template
@@ -85,46 +85,59 @@ releaseConfig['shippedLocalesPath']  = '
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozEsr31-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'ftp.mozilla.org'
 releaseConfig['stagingServer']       = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4.mozilla.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'ffxbld'
 releaseConfig['ausSshKey']           = 'ffxbld_rsa'
 releaseConfig['releaseNotesUrl']     = None
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = {{ promptWaitTime }}
 releaseConfig['useBetaChannel']      = 1
 releaseConfig['updateVerifyChunks']  = 6
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozEsr31-firefox-linux.cfg',
-    'linux64':  'mozEsr31-firefox-linux64.cfg',
-    'macosx64': 'mozEsr31-firefox-mac64.cfg',
-    'win32':  'mozEsr31-firefox-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'browser/config/mozconfigs/linux32/release',
     'linux64': 'browser/config/mozconfigs/linux64/release',
     'macosx64': 'browser/config/mozconfigs/macosx-universal/release',
     'win32': 'browser/config/mozconfigs/win32/release',
 }
 releaseConfig['releaseChannel']        = 'esr'
-releaseConfig['releaseChannelRuleIds'] = [34]
-releaseConfig['localTestChannel']      = 'esr-localtest'
-releaseConfig['cdnTestChannel']        = 'esr-cdntest'
-releaseConfig['testChannelRuleIds']    = [58,59]
+releaseConfig['updateChannels'] = {
+    "esr": {
+        "versionRegex": r"^.*$",
+        "ruleId": 34,
+        "patcherConfig": "mozEsr31-branch-patcher2.cfg",
+        "localTestChannel": "esr-localtest",
+        "cdnTestChannel": "esr-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozEsr31-firefox-linux.cfg",
+            "linux64":  "mozEsr31-firefox-linux64.cfg",
+            "macosx64": "mozEsr31-firefox-mac64.cfg",
+            "win32":  "mozEsr31-firefox-win32.cfg",
+        },
+        "testChannels": {
+            "esr-localtest": {
+                "ruleId": 58,
+            },
+            "esr-cdntest": {
+                "ruleId": 59,
+            },
+        },
+    },
+}
+
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'build/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_firefox_esr.py'
--- a/mozilla/release-firefox-mozilla-release.py
+++ b/mozilla/release-firefox-mozilla-release.py
@@ -108,54 +108,89 @@ releaseConfig['shippedLocalesPath']  = '
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozRelease-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'ftp.mozilla.org'
 releaseConfig['stagingServer']       = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4.mozilla.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'ffxbld'
 releaseConfig['ausSshKey']           = 'ffxbld_rsa'
 releaseConfig['releaseNotesUrl']     = None
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = None
 releaseConfig['updateVerifyChunks']  = 6
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozRelease-firefox-linux.cfg',
-    'linux64':  'mozRelease-firefox-linux64.cfg',
-    'macosx64': 'mozRelease-firefox-mac64.cfg',
-    'win32':  'mozRelease-firefox-win32.cfg',
-    #'win64':  'mozRelease-firefox-win64.cfg',
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'browser/config/mozconfigs/linux32/release',
     'linux64': 'browser/config/mozconfigs/linux64/release',
     'macosx64': 'browser/config/mozconfigs/macosx-universal/release',
     'win32': 'browser/config/mozconfigs/win32/release',
     #'win64': 'browser/config/mozconfigs/win64/release',
 }
 releaseConfig['xulrunner_mozconfigs']          = {
     'linux': 'xulrunner/config/mozconfigs/linux32/xulrunner',
     'linux64': 'xulrunner/config/mozconfigs/linux64/xulrunner',
     'macosx64': 'xulrunner/config/mozconfigs/macosx-universal/xulrunner',
     'win32': 'xulrunner/config/mozconfigs/win32/xulrunner',
     #'win64': 'xulrunner/config/mozconfigs/win64/xulrunner',
 }
 releaseConfig['releaseChannel']        = 'release'
-releaseConfig['releaseChannelRuleIds'] = [33]
-releaseConfig['localTestChannel']      = 'release-localtest'
-releaseConfig['cdnTestChannel']        = 'release-cdntest'
-releaseConfig['testChannelRuleIds']    = [56,57]
+releaseConfig['updateChannels'] = {
+    "release": {
+        "versionRegex": r"\d+\.\d+(\.\d+)?$",
+        "ruleId": 33,
+        "patcherConfig": "mozRelease-branch-patcher2.cfg",
+        "localTestChannel": "release-localtest",
+        "cdnTestChannel": "release-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozRelease-firefox-linux.cfg",
+            "linux64":  "mozRelease-firefox-linux64.cfg",
+            "macosx64": "mozRelease-firefox-mac64.cfg",
+            "win32":  "mozRelease-firefox-win32.cfg",
+            #'win64':  'mozRelease-firefox-win64.cfg',
+        },
+        "testChannels": {
+            "release-localtest": {
+                "ruleId": 56,
+            },
+            "release-cdntest": {
+                "ruleId": 57,
+            },
+        },
+    },
+    "beta": {
+        "enabled": False,
+        "versionRegex": r"\d+\.\d+b\d+$",
+        "ruleId": 32,
+        "requiresMirrors": False,
+        "patcherConfig": "mozBeta-branch-patcher2.cfg",
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozBeta-firefox-linux.cfg",
+            "linux64":  "mozBeta-firefox-linux64.cfg",
+            "macosx64": "mozBeta-firefox-mac64.cfg",
+            "win32":  "mozBeta-firefox-win32.cfg"
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 45,
+            },
+            "beta-localtest": {
+                "ruleId": 25,
+            },
+        }
+    }
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = True
 releaseConfig['partnersRepoPath']    = 'build/partner-repacks'
 releaseConfig['syncPartnerBundles']  = True
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
@@ -166,9 +201,10 @@ releaseConfig['makeIndexFiles'] = True
 releaseConfig['enable_repo_setup'] = False
 releaseConfig['use_mock'] = True
 releaseConfig['mock_platforms'] = ('linux','linux64')
 releaseConfig['ftpSymlinkName'] = 'latest'
 
 releaseConfig['bouncer_aliases'] = {
     'Firefox-%(version)s': 'firefox-latest',
     'Firefox-%(version)s-stub': 'firefox-stub',
-}
\ No newline at end of file
+    'Firefox-%(version)s-EUBallot': 'firefox-latest-euballot',
+}
--- a/mozilla/release-firefox-mozilla-release.py.template
+++ b/mozilla/release-firefox-mozilla-release.py.template
@@ -30,18 +30,16 @@ releaseConfig['partialUpdates']      = {
 {% for version, partial in partials.items() %}
     '{{ version }}': {
         'appVersion': '{{ partial['appVersion'] }}',
         'buildNumber': {{ partial['buildNumber'] }},
         'baseTag': '{{ partial['baseTag'] }}',
     },
 {% endfor %}
 }
-releaseConfig['extraPartials']       = {
-}
 # What's New Page for https://bugzilla.mozilla.org/show_bug.cgi?id=1133579.
 # TODO: Remove upon request. Should be revisited with each release.
 releaseConfig['openURL'] = 'https://www.mozilla.org/%LOCALE%/firefox/{{ appVersion }}/whatsnew/?oldversion=%OLD_VERSION%'
 
 # TODO: set this properly when we start shipping win64 on release
 #releaseConfig['HACK_first_released_version'] = {'win64': TBD}
 
 #  Next (nightly) version info
@@ -95,54 +93,92 @@ releaseConfig['shippedLocalesPath']  = '
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozRelease-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'ftp.mozilla.org'
 releaseConfig['stagingServer']       = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4.mozilla.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'ffxbld'
 releaseConfig['ausSshKey']           = 'ffxbld_rsa'
 releaseConfig['releaseNotesUrl']     = None
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = {{ promptWaitTime }}
 releaseConfig['updateVerifyChunks']  = 6
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozRelease-firefox-linux.cfg',
-    'linux64':  'mozRelease-firefox-linux64.cfg',
-    'macosx64': 'mozRelease-firefox-mac64.cfg',
-    'win32':  'mozRelease-firefox-win32.cfg',
-    #'win64':  'mozRelease-firefox-win64.cfg',
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'browser/config/mozconfigs/linux32/release',
     'linux64': 'browser/config/mozconfigs/linux64/release',
     'macosx64': 'browser/config/mozconfigs/macosx-universal/release',
     'win32': 'browser/config/mozconfigs/win32/release',
     #'win64': 'browser/config/mozconfigs/win64/release',
 }
 releaseConfig['xulrunner_mozconfigs']          = {
     'linux': 'xulrunner/config/mozconfigs/linux32/xulrunner',
     'linux64': 'xulrunner/config/mozconfigs/linux64/xulrunner',
     'macosx64': 'xulrunner/config/mozconfigs/macosx-universal/xulrunner',
     'win32': 'xulrunner/config/mozconfigs/win32/xulrunner',
     #'win64': 'xulrunner/config/mozconfigs/win64/xulrunner',
 }
-releaseConfig['releaseChannel']        = 'release'
-releaseConfig['releaseChannelRuleIds'] = [33]
-releaseConfig['localTestChannel']      = 'release-localtest'
-releaseConfig['cdnTestChannel']        = 'release-cdntest'
-releaseConfig['testChannelRuleIds']    = [56,57]
+releaseConfig["releaseChannel"] = "release"
+releaseConfig['updateChannels'] = {
+    "release": {
+        "versionRegex": r"^\d+\.\d+(\.\d+)?$",
+        "ruleId": 33,
+        "patcherConfig": "mozRelease-branch-patcher2.cfg",
+        "localTestChannel": "release-localtest",
+        "cdnTestChannel": "release-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozRelease-firefox-linux.cfg",
+            "linux64":  "mozRelease-firefox-linux64.cfg",
+            "macosx64": "mozRelease-firefox-mac64.cfg",
+            "win32":  "mozRelease-firefox-win32.cfg",
+            #'win64':  'mozRelease-firefox-win64.cfg',
+        },
+        "testChannels": {
+            "release-localtest": {
+                "ruleId": 56,
+            },
+            "release-cdntest": {
+                "ruleId": 57,
+            },
+        },
+    },
+    "beta": {
+        "enabled": {{ betaChannelEnabled }},
+        # For the beta channel, we want to able to provide updates to this
+        # from prior betas or prior RCs that were shipped to the beta channel,
+        # so this regex matches either.
+        "versionRegex": r"^(\d+\.\d+b\d+|%s)$" % releaseConfig["version"].replace(".", "\\."),
+        "ruleId": 32,
+        "requiresMirrors": False,
+        "patcherConfig": "mozBeta-branch-patcher2.cfg",
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozBeta-firefox-linux.cfg",
+            "linux64":  "mozBeta-firefox-linux64.cfg",
+            "macosx64": "mozBeta-firefox-mac64.cfg",
+            "win32":  "mozBeta-firefox-win32.cfg"
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 45,
+            },
+            "beta-localtest": {
+                "ruleId": 25,
+            },
+        }
+    }
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = True
 releaseConfig['partnersRepoPath']    = 'build/partner-repacks'
 releaseConfig['syncPartnerBundles']  = True
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
--- a/mozilla/release-thunderbird-comm-beta.py
+++ b/mozilla/release-thunderbird-comm-beta.py
@@ -93,53 +93,65 @@ releaseConfig['shippedLocalesPath']  = '
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'tbirdbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/tbirdbld_dsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozBeta-thunderbird-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'ftp.mozilla.org'
 releaseConfig['stagingServer']       = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4.mozilla.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'tbirdbld'
 releaseConfig['ausSshKey']           = 'tbirdbld_dsa'
 releaseConfig['releaseNotesUrl']     = 'http://live.mozillamessaging.com/thunderbird/releasenotes?locale=%locale%&platform=%platform%&version=%version%'
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = None
 releaseConfig['updateVerifyChunks']  = 6
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozBeta-thunderbird-linux.cfg',
-    'linux64':  'mozBeta-thunderbird-linux64.cfg',
-    'macosx64': 'mozBeta-thunderbird-mac64.cfg',
-    'win32':  'mozBeta-thunderbird-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'mail/config/mozconfigs/linux32/release',
     'linux64': 'mail/config/mozconfigs/linux64/release',
     'macosx64': 'mail/config/mozconfigs/macosx-universal/release',
     'win32': 'mail/config/mozconfigs/win32/release',
 }
 releaseConfig['source_mozconfig']      = 'mail/config/mozconfigs/linux64/release'
 releaseConfig['releaseChannel']        = 'beta'
-releaseConfig['releaseChannelRuleIds'] = [43]
-releaseConfig['localTestChannel']      = 'beta-localtest'
-releaseConfig['cdnTestChannel']        = 'beta-cdntest'
-releaseConfig['testChannelRuleIds']    = [27,60]
+releaseConfig['updateChannels'] = {
+    "beta": {
+        "versionRegex": r"^.*$",
+        "ruleId": 43,
+        "patcherConfig": "mozBeta-thunderbird-branch-patcher2.cfg",
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozBeta-thunderbird-linux.cfg",
+            "linux64":  "mozBeta-thunderbird-linux64.cfg",
+            "macosx64": "mozBeta-thunderbird-mac64.cfg",
+            "win32":  "mozBeta-thunderbird-win32.cfg",
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 60,
+            },
+            "beta-localtest": {
+                "ruleId": 27,
+            },
+        }
+    }
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'build/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_thunderbird.py'
 
 # Misc configuration
 releaseConfig['enable_repo_setup'] = False
 releaseConfig['enableAutomaticPushToMirrors'] = True
 releaseConfig['use_mock'] = True
 releaseConfig['mock_platforms'] = ('linux','linux64')
-releaseConfig['ftpSymlinkName'] = 'latest-beta'
\ No newline at end of file
+releaseConfig['ftpSymlinkName'] = 'latest-beta'
--- a/mozilla/release-thunderbird-comm-beta.py.template
+++ b/mozilla/release-thunderbird-comm-beta.py.template
@@ -93,46 +93,59 @@ releaseConfig['shippedLocalesPath']  = '
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'tbirdbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/tbirdbld_dsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozBeta-thunderbird-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'ftp.mozilla.org'
 releaseConfig['stagingServer']       = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4.mozilla.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'tbirdbld'
 releaseConfig['ausSshKey']           = 'tbirdbld_dsa'
 releaseConfig['releaseNotesUrl']     = 'http://live.mozillamessaging.com/thunderbird/releasenotes?locale=%locale%&platform=%platform%&version=%version%'
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = {{ promptWaitTime }}
 releaseConfig['updateVerifyChunks']  = 6
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozBeta-thunderbird-linux.cfg',
-    'linux64':  'mozBeta-thunderbird-linux64.cfg',
-    'macosx64': 'mozBeta-thunderbird-mac64.cfg',
-    'win32':  'mozBeta-thunderbird-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'mail/config/mozconfigs/linux32/release',
     'linux64': 'mail/config/mozconfigs/linux64/release',
     'macosx64': 'mail/config/mozconfigs/macosx-universal/release',
     'win32': 'mail/config/mozconfigs/win32/release',
 }
 releaseConfig['source_mozconfig']      = 'mail/config/mozconfigs/linux64/release'
 releaseConfig['releaseChannel']        = 'beta'
-releaseConfig['releaseChannelRuleIds'] = [43]
-releaseConfig['localTestChannel']      = 'beta-localtest'
-releaseConfig['cdnTestChannel']        = 'beta-cdntest'
-releaseConfig['testChannelRuleIds']    = [27,60]
+releaseConfig['updateChannels'] = {
+    "beta": {
+        "versionRegex": r"^.*$",
+        "ruleId": 43,
+        "patcherConfig": "mozBeta-thunderbird-branch-patcher2.cfg",
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozBeta-thunderbird-linux.cfg",
+            "linux64":  "mozBeta-thunderbird-linux64.cfg",
+            "macosx64": "mozBeta-thunderbird-mac64.cfg",
+            "win32":  "mozBeta-thunderbird-win32.cfg",
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 60,
+            },
+            "beta-localtest": {
+                "ruleId": 27,
+            },
+        }
+    }
+}
+
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'build/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_thunderbird.py'
--- a/mozilla/release-thunderbird-comm-esr31.py
+++ b/mozilla/release-thunderbird-comm-esr31.py
@@ -100,52 +100,64 @@ releaseConfig['shippedLocalesPath']  = '
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'tbirdbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/tbirdbld_dsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozRelease-thunderbird-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'ftp.mozilla.org'
 releaseConfig['stagingServer']       = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4.mozilla.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'tbirdbld'
 releaseConfig['ausSshKey']           = 'tbirdbld_dsa'
 releaseConfig['releaseNotesUrl']     = 'http://live.mozillamessaging.com/thunderbird/releasenotes?locale=%locale%&platform=%platform%&version=%version%'
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = None
 releaseConfig['updateVerifyChunks']  = 6
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozRelease-thunderbird-linux.cfg',
-    'linux64':  'mozRelease-thunderbird-linux64.cfg',
-    'macosx64': 'mozRelease-thunderbird-mac64.cfg',
-    'win32':  'mozRelease-thunderbird-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'mail/config/mozconfigs/linux32/release',
     'linux64': 'mail/config/mozconfigs/linux64/release',
     'macosx64': 'mail/config/mozconfigs/macosx-universal/release',
     'win32': 'mail/config/mozconfigs/win32/release',
 }
 releaseConfig['source_mozconfig']      = 'mail/config/mozconfigs/linux64/release'
 releaseConfig['releaseChannel']        = 'release'
-releaseConfig['releaseChannelRuleIds'] = [35]
-releaseConfig['localTestChannel']      = 'release-localtest'
-releaseConfig['cdnTestChannel']        = 'release-cdntest'
-releaseConfig['testChannelRuleIds']    = [61,62]
+releaseConfig['updateChannels'] = {
+    "release": {
+        "versionRegex": r"^.*$",
+        "ruleId": 35,
+        "patcherConfig": "mozRelease-thunderbird-branch-patcher2.cfg",
+        "localTestChannel": "release-localtest",
+        "cdnTestChannel": "release-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozRelease-thunderbird-linux.cfg",
+            "linux64":  "mozRelease-thunderbird-linux64.cfg",
+            "macosx64": "mozRelease-thunderbird-mac64.cfg",
+            "win32":  "mozRelease-thunderbird-win32.cfg",
+        },
+        "testChannels": {
+            "release-localtest": {
+                "ruleId": 61,
+            },
+            "release-cdntest": {
+                "ruleId": 62,
+            },
+        },
+    },
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'build/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_thunderbird.py'
 
 # Misc configuration
 releaseConfig['enable_repo_setup'] = False
 releaseConfig['use_mock'] = True
 releaseConfig['mock_platforms'] = ('linux','linux64')
-releaseConfig['ftpSymlinkName'] = 'latest'
\ No newline at end of file
+releaseConfig['ftpSymlinkName'] = 'latest'
--- a/mozilla/release-thunderbird-comm-esr31.py.template
+++ b/mozilla/release-thunderbird-comm-esr31.py.template
@@ -94,46 +94,58 @@ releaseConfig['shippedLocalesPath']  = '
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'tbirdbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/tbirdbld_dsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozRelease-thunderbird-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'ftp.mozilla.org'
 releaseConfig['stagingServer']       = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4.mozilla.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'tbirdbld'
 releaseConfig['ausSshKey']           = 'tbirdbld_dsa'
 releaseConfig['releaseNotesUrl']     = 'http://live.mozillamessaging.com/thunderbird/releasenotes?locale=%locale%&platform=%platform%&version=%version%'
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = {{ promptWaitTime }}
 releaseConfig['updateVerifyChunks']  = 6
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozRelease-thunderbird-linux.cfg',
-    'linux64':  'mozRelease-thunderbird-linux64.cfg',
-    'macosx64': 'mozRelease-thunderbird-mac64.cfg',
-    'win32':  'mozRelease-thunderbird-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'mail/config/mozconfigs/linux32/release',
     'linux64': 'mail/config/mozconfigs/linux64/release',
     'macosx64': 'mail/config/mozconfigs/macosx-universal/release',
     'win32': 'mail/config/mozconfigs/win32/release',
 }
 releaseConfig['source_mozconfig']      = 'mail/config/mozconfigs/linux64/release'
 releaseConfig['releaseChannel']        = 'release'
-releaseConfig['releaseChannelRuleIds'] = [35]
-releaseConfig['localTestChannel']      = 'release-localtest'
-releaseConfig['cdnTestChannel']        = 'release-cdntest'
-releaseConfig['testChannelRuleIds']    = [61,62]
+releaseConfig['updateChannels'] = {
+    "release": {
+        "versionRegex": r"^.*$",
+        "ruleId": 35,
+        "patcherConfig": "mozRelease-thunderbird-branch-patcher2.cfg",
+        "localTestChannel": "release-localtest",
+        "cdnTestChannel": "release-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozRelease-thunderbird-linux.cfg",
+            "linux64":  "mozRelease-thunderbird-linux64.cfg",
+            "macosx64": "mozRelease-thunderbird-mac64.cfg",
+            "win32":  "mozRelease-thunderbird-win32.cfg",
+        },
+        "testChannels": {
+            "release-localtest": {
+                "ruleId": 61,
+            },
+            "release-cdntest": {
+                "ruleId": 62,
+            },
+        },
+    },
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'build/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_thunderbird.py'
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/fennec_beta_ready_for_beta-cdntest_testing_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on beta-cdntest
+Updates to %(releaseName)s are now ready for testing on the beta-cdntest channel.
+
+-buildbot
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/fennec_beta_ready_for_release_success
@@ -0,0 +1,5 @@
+%(releaseName)s: ready to ship to the beta channel
+%(releaseName)s is ready to be shipped to the beta channel.
+
+-buildbot
+
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/fennec_beta_updates_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on beta-localtest
+Updates to %(releaseName)s are now ready for testing on the beta-localtest channel.
+
+-buildbot
deleted file mode 120000
--- a/mozilla/release_templates/fennec_ready_for_release_success
+++ /dev/null
@@ -1,1 +0,0 @@
-ready_for_release_success
\ No newline at end of file
deleted file mode 120000
--- a/mozilla/release_templates/fennec_ready_for_releasetest_testing_success
+++ /dev/null
@@ -1,1 +0,0 @@
-ready_for_releasetest_testing_success
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/fennec_release_ready_for_release-cdntest_testing_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on release-cdntest
+Updates to %(releaseName)s are now ready for testing on the release-cdntest channel.
+
+-buildbot
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/fennec_release_ready_for_release_success
@@ -0,0 +1,5 @@
+%(releaseName)s: ready to ship to the release channel
+%(releaseName)s is ready to be shipped to the release channel.
+
+-buildbot
+
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/fennec_release_updates_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on release-localtest
+Updates to %(releaseName)s are now ready for testing on the release-localtest channel.
+
+-buildbot
deleted file mode 120000
--- a/mozilla/release_templates/fennec_updates_success
+++ /dev/null
@@ -1,1 +0,0 @@
-updates_success
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/firefox_beta_ready_for_beta-cdntest_testing_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on beta-cdntest
+Updates to %(releaseName)s are now ready for testing on the beta-cdntest channel.
+
+-buildbot
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/firefox_beta_ready_for_release_success
@@ -0,0 +1,5 @@
+%(releaseName)s: ready to ship to the beta channel
+%(releaseName)s is ready to be shipped to the beta channel.
+
+-buildbot
+
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/firefox_beta_updates_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on beta-localtest
+Updates to %(releaseName)s are now ready for testing on the beta-localtest channel.
+
+-buildbot
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/firefox_esr_ready_for_esr-cdntest_testing_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on esr-cdntest
+Updates to %(releaseName)s are now ready for testing on the esr-cdntest channel.
+
+-buildbot
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/firefox_esr_ready_for_release
@@ -0,0 +1,5 @@
+%(releaseName)s: ready to ship to the esr channel
+%(releaseName)s is ready to be shipped to the esr channel.
+
+-buildbot
+
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/firefox_esr_updates_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on esr-localtest
+Updates to %(releaseName)s are now ready for testing on the esr-localtest channel.
+
+-buildbot
deleted file mode 120000
--- a/mozilla/release_templates/firefox_ready_for_release_success
+++ /dev/null
@@ -1,1 +0,0 @@
-ready_for_release_success
\ No newline at end of file
deleted file mode 120000
--- a/mozilla/release_templates/firefox_ready_for_releasetest_testing_success
+++ /dev/null
@@ -1,1 +0,0 @@
-ready_for_releasetest_testing_success
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/firefox_release_ready_for_release-cdntest_testing_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on release-cdntest
+Updates to %(releaseName)s are now ready for testing on the release-cdntest channel.
+
+-buildbot
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/firefox_release_ready_for_release_success
@@ -0,0 +1,5 @@
+%(releaseName)s: ready to ship to the release channel
+%(releaseName)s is ready to be shipped to the release channel.
+
+-buildbot
+
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/firefox_release_updates_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on release-localtest
+Updates to %(releaseName)s are now ready for testing on the release-localtest channel.
+
+-buildbot
deleted file mode 120000
--- a/mozilla/release_templates/firefox_updates_success
+++ /dev/null
@@ -1,1 +0,0 @@
-updates_success
\ No newline at end of file
deleted file mode 100644
--- a/mozilla/release_templates/ready_for_release_success
+++ /dev/null
@@ -1,5 +0,0 @@
-%(releaseName)s: ready for release
-Mirrors are absorbed enough for release of %(releaseName)s.
-
--buildbot
-
deleted file mode 100644
--- a/mozilla/release_templates/ready_for_releasetest_testing_success
+++ /dev/null
@@ -1,4 +0,0 @@
-%(releaseName)s: Updates available on %(cdnTestChannel)s
-Updates to %(releaseName)s are now ready for testing on the %(cdnTestChannel)s channel.
-
--buildbot
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/thunderbird_beta_ready_for_beta-cdntest_testing_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on beta-cdntest
+Updates to %(releaseName)s are now ready for testing on the beta-cdntest channel.
+
+-buildbot
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/thunderbird_beta_ready_for_release_success
@@ -0,0 +1,5 @@
+%(releaseName)s: ready to ship to the beta channel
+%(releaseName)s is ready to be shipped to the beta channel.
+
+-buildbot
+
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/thunderbird_beta_updates_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on beta-localtest
+Updates to %(releaseName)s are now ready for testing on the beta-localtest channel.
+
+-buildbot
deleted file mode 120000
--- a/mozilla/release_templates/thunderbird_ready_for_release_success
+++ /dev/null
@@ -1,1 +0,0 @@
-ready_for_release_success
\ No newline at end of file
deleted file mode 120000
--- a/mozilla/release_templates/thunderbird_ready_for_releasetest_testing_success
+++ /dev/null
@@ -1,1 +0,0 @@
-ready_for_releasetest_testing_success
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/thunderbird_release_ready_for_release_cdntest_testing_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on release-cdntest
+Updates to %(releaseName)s are now ready for testing on the release-cdntest channel.
+
+-buildbot
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/thunderbird_release_ready_for_release_success
@@ -0,0 +1,5 @@
+%(releaseName)s: ready to ship to the release channel
+%(releaseName)s is ready to be shipped to the release channel.
+
+-buildbot
+
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/thunderbird_release_updates_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on release-localtest
+Updates to %(releaseName)s are now ready for testing on the release-localtest channel.
+
+-buildbot
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/update_shipping_beta_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on beta
+Updates to %(releaseName)s are available on the beta channel now.
+
+-buildbot
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/update_shipping_esr_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on esr
+Updates to %(releaseName)s are available on the esr channel now.
+
+-buildbot
new file mode 100644
--- /dev/null
+++ b/mozilla/release_templates/update_shipping_release_success
@@ -0,0 +1,4 @@
+%(releaseName)s: Updates available on release
+Updates to %(releaseName)s are available on the release channel now.
+
+-buildbot
deleted file mode 100644
--- a/mozilla/release_templates/update_shipping_success
+++ /dev/null
@@ -1,4 +0,0 @@
-%(releaseName)s: Updates available on %(releaseChannel)s
-Updates to %(releaseName)s are available on the %(releaseChannel)s channel now.
-
--buildbot
deleted file mode 100644
--- a/mozilla/release_templates/update_verify_failed
+++ /dev/null
@@ -1,7 +0,0 @@
-%(releaseName)s: update verify step failed on %(platform)s
-%(platform)s update verify step failed for %(releaseName)s
-
-Status: %(job_status_repr)s
-
-%(buildbot_url)s
--buildbot
deleted file mode 100644
--- a/mozilla/release_templates/update_verify_success
+++ /dev/null
@@ -1,4 +0,0 @@
-%(releaseName)s: %(platform)s updates verified
-%(platform)s updates verified for %(releaseName)s
-
--buildbot
deleted file mode 100644
--- a/mozilla/release_templates/updates_success
+++ /dev/null
@@ -1,4 +0,0 @@
-%(releaseName)s: Updates available on %(localTestChannel)s
-Updates to %(releaseName)s are now ready for testing on the %(localTestChannel)s channel.
-
--buildbot
--- a/mozilla/staging_release-fennec-mozilla-beta.py
+++ b/mozilla/staging_release-fennec-mozilla-beta.py
@@ -104,16 +104,31 @@ releaseConfig['doPartnerRepacks']       
 releaseConfig['partnersRepoPath']       = 'users/stage-ffxbld/partner-repacks'
 releaseConfig['partnerRepackPlatforms'] = ()
 
 # mozconfigs
 releaseConfig['mozconfigs']          = {
     'android': 'mobile/android/config/mozconfigs/android/release',
 }
 releaseConfig['releaseChannel']      = 'beta'
+releaseConfig["updateChannels"] = {
+    "beta": {
+        "ruleId": 34,
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "testChannels": {
+            "beta-localtest": {
+                "ruleId": 49,
+            },
+            "beta-cdntest": {
+                "ruleId": 37,
+            }
+        }
+    }
+}
 
 # Misc configuration
 releaseConfig['enable_repo_setup']       = False
 
 # Fennec specific
 releaseConfig['usePrettyNames']           = False
 releaseConfig['disableStandaloneRepacks'] = True
 releaseConfig['disablePermissionCheck']   = True
@@ -149,21 +164,17 @@ releaseConfig['multilocale_config'] = {
 releaseConfig['build_tools_repo_path'] = "users/stage-ffxbld/tools"
 releaseConfig['enableSigningAtBuildTime'] = True
 releaseConfig['enablePartialMarsAtBuildTime'] = False
 releaseConfig['autoGenerateChecksums'] = False
 releaseConfig['use_mock'] = True
 releaseConfig['mock_platforms'] = ('android', 'linux')
 releaseConfig['ftpSymlinkName'] = 'latest-beta'
 releaseConfig['enableAutomaticPushToMirrors'] = True
-releaseConfig['localTestChannel']      = 'beta-localtest'
-releaseConfig['cdnTestChannel']        = 'beta-cdntest'
 releaseConfig['partialUpdates']      = {}
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
-releaseConfig['testChannelRuleIds']    = [37]
-releaseConfig['releaseChannelRuleIds'] = []
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_fennec.py'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['bouncer_aliases'] = {
     'Fennec-%(version)s': 'fennec-beta-latest',
 }
-releaseConfig['skip_updates']        = True
\ No newline at end of file
+releaseConfig['skip_updates']        = True
--- a/mozilla/staging_release-fennec-mozilla-beta.py.template
+++ b/mozilla/staging_release-fennec-mozilla-beta.py.template
@@ -101,16 +101,31 @@ releaseConfig['partnerRepackPlatforms'] 
 
 # mozconfigs
 releaseConfig['mozconfigs']          = {
     'android-api-9': 'mobile/android/config/mozconfigs/android-api-9-10-constrained/release',
     'android-api-11': 'mobile/android/config/mozconfigs/android-api-11/release',
     'android-x86': 'mobile/android/config/mozconfigs/android-x86/release',
 }
 releaseConfig['releaseChannel']      = 'beta'
+releaseConfig["updateChannels"] = {
+    "beta": {
+        "ruleId": 34,
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "testChannels": {
+            "beta-localtest": {
+                "ruleId": 49,
+            },
+            "beta-cdntest": {
+                "ruleId": 37,
+            }
+        }
+    }
+}
 
 # Misc configuration
 releaseConfig['enable_repo_setup']       = False
 
 # Fennec specific
 releaseConfig['usePrettyNames']           = False
 releaseConfig['disableStandaloneRepacks'] = True
 releaseConfig['disablePermissionCheck']   = True
@@ -156,21 +171,17 @@ releaseConfig['multilocale_config'] = {
 releaseConfig['build_tools_repo_path'] = "users/stage-ffxbld/tools"
 releaseConfig['enableSigningAtBuildTime'] = True
 releaseConfig['enablePartialMarsAtBuildTime'] = False
 releaseConfig['autoGenerateChecksums'] = False
 releaseConfig['use_mock'] = True
 releaseConfig['mock_platforms'] = ('android-api-9', 'android-api-11', 'android-x86', 'linux')
 releaseConfig['ftpSymlinkName'] = 'latest-beta'
 releaseConfig['enableAutomaticPushToMirrors'] = True
-releaseConfig['localTestChannel']      = 'betatest'
-releaseConfig['cdnTestChannel']        = 'releasetest'
 releaseConfig['partialUpdates']      = {}
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
-releaseConfig['releaseChannelRuleIds'] = []
-releaseConfig['testChannelRuleIds']    = [37]
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_fennec.py'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['bouncer_aliases'] = {
     'Fennec-%(version)s': 'fennec-beta-latest',
 }
 releaseConfig['skip_updates']        = True
--- a/mozilla/staging_release-fennec-mozilla-release.py
+++ b/mozilla/staging_release-fennec-mozilla-release.py
@@ -113,16 +113,31 @@ releaseConfig['partnerRepackConfig'] = {
     },
 }
 
 # mozconfigs
 releaseConfig['mozconfigs']          = {
     'android': 'mobile/android/config/mozconfigs/android/release',
 }
 releaseConfig['releaseChannel']        = 'release'
+releaseConfig["updateChannels"] = {
+    "release": {
+        "ruleId": 35,
+        "localTestChannel": "release-localtest",
+        "cdnTestChannel": "release-cdntest",
+        "testChannels": {
+            "release-localtest": {
+                "ruleId": 38,
+            },
+            "release-cdntest": {
+                "ruleId": 39,
+            }
+        }
+    }
+}
 
 # Misc configuration
 releaseConfig['enable_repo_setup']       = False
 
 # Fennec specific
 releaseConfig['usePrettyNames']           = False
 releaseConfig['disableStandaloneRepacks'] = True
 releaseConfig['disablePermissionCheck']   = True
@@ -157,21 +172,17 @@ releaseConfig['multilocale_config'] = {
 # Staging config
 releaseConfig['build_tools_repo_path'] = "users/stage-ffxbld/tools"
 releaseConfig['enableSigningAtBuildTime'] = True
 releaseConfig['enablePartialMarsAtBuildTime'] = False
 releaseConfig['autoGenerateChecksums'] = False
 releaseConfig['use_mock'] = True
 releaseConfig['mock_platforms'] = ('android','linux')
 releaseConfig['ftpSymlinkName'] = 'latest'
-releaseConfig['localTestChannel']      = 'betatest'
-releaseConfig['cdnTestChannel']        = 'releasetest'
 releaseConfig['partialUpdates']      = {}
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
-releaseConfig['testChannelRuleIds']    = [38, 39]
-releaseConfig['releaseChannelRuleIds'] = []
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.allizom.org/api'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_fennec.py'
 releaseConfig['bouncer_aliases'] = {
     'Fennec-%(version)s': 'fennec-latest',
 }
-releaseConfig['skip_updates']        = True
\ No newline at end of file
+releaseConfig['skip_updates']        = True
--- a/mozilla/staging_release-fennec-mozilla-release.py.template
+++ b/mozilla/staging_release-fennec-mozilla-release.py.template
@@ -109,16 +109,32 @@ releaseConfig['partnerRepackConfig'] = {
     },
 }
 
 # mozconfigs
 releaseConfig['mozconfigs']          = {
     'android': 'mobile/android/config/mozconfigs/android/release',
 }
 releaseConfig['releaseChannel']        = 'release'
+releaseConfig["updateChannels"] = {
+    "release": {
+        "ruleId": 35,
+        "localTestChannel": "release-localtest",
+        "cdnTestChannel": "release-cdntest",
+        "testChannels": {
+            "release-localtest": {
+                "ruleId": 38,
+            },
+            "release-cdntest": {
+                "ruleId": 39,
+            }
+        }
+    }
+}
+
 
 # Misc configuration
 releaseConfig['enable_repo_setup']       = False
 
 # Fennec specific
 releaseConfig['usePrettyNames']           = False
 releaseConfig['disableStandaloneRepacks'] = True
 releaseConfig['disablePermissionCheck']   = True
@@ -153,20 +169,16 @@ releaseConfig['multilocale_config'] = {
 # Staging config
 releaseConfig['build_tools_repo_path'] = "users/stage-ffxbld/tools"
 releaseConfig['enableSigningAtBuildTime'] = True
 releaseConfig['enablePartialMarsAtBuildTime'] = False
 releaseConfig['autoGenerateChecksums'] = False
 releaseConfig['use_mock'] = True
 releaseConfig['mock_platforms'] = ('android','linux')
 releaseConfig['ftpSymlinkName'] = 'latest'
-releaseConfig['localTestChannel']      = 'release-localtest'
-releaseConfig['cdnTestChannel']        = 'release-cdntest'
 releaseConfig['partialUpdates']      = {}
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
-releaseConfig['releaseChannelRuleIds'] = [35]
-releaseConfig['testChannelRuleIds']    = [38, 39]
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.mozilla.com/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_fennec.py'
 releaseConfig['bouncer_aliases'] = {
     'Fennec-%(version)s': 'fennec-latest',
 }
 releaseConfig['skip_updates']        = True
--- a/mozilla/staging_release-firefox-mozilla-beta.py
+++ b/mozilla/staging_release-firefox-mozilla-beta.py
@@ -92,52 +92,65 @@ releaseConfig['l10nChunks']          = 6
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'stage-ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozBeta-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['stagingServer']       = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['previousReleasesStagingServer'] = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'http://dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['ausHost']             = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['ausUser']             = 'ffxbld'
 releaseConfig['ausSshKey']           = 'ffxbld_rsa'
 releaseConfig['releaseNotesUrl']     = None
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = None
 releaseConfig['updateVerifyChunks']  = 6
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozBeta-firefox-linux.cfg',
-    'linux64':  'mozBeta-firefox-linux64.cfg',
-    'macosx64': 'mozBeta-firefox-mac64.cfg',
-    'win32':  'mozBeta-firefox-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'browser/config/mozconfigs/linux32/beta',
     'linux64': 'browser/config/mozconfigs/linux64/beta',
     'macosx64': 'browser/config/mozconfigs/macosx-universal/beta',
     'win32': 'browser/config/mozconfigs/win32/beta',
 }
 releaseConfig['xulrunner_mozconfigs']          = {
     'linux': 'xulrunner/config/mozconfigs/linux32/xulrunner',
     'linux64': 'xulrunner/config/mozconfigs/linux64/xulrunner',
     'macosx64': 'xulrunner/config/mozconfigs/macosx-universal/xulrunner',
     'win32': 'xulrunner/config/mozconfigs/win32/xulrunner',
 }
 releaseConfig['releaseChannel']        = 'beta'
-releaseConfig['releaseChannelRuleIds'] = [26]
-releaseConfig['localTestChannel']      = 'beta-localtest'
-releaseConfig['cdnTestChannel']        = 'beta-cdntest'
-releaseConfig['testChannelRuleIds']    = [40,41]
+releaseConfig['updateChannels'] = {
+    "beta": {
+        "versionRegex": r"^.*$",
+        "ruleId": 26,
+        "patcherConfig": "mozBeta-branch-patcher2.cfg",
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozBeta-firefox-linux.cfg",
+            "linux64":  "mozBeta-firefox-linux64.cfg",
+            "macosx64": "mozBeta-firefox-mac64.cfg",
+            "win32":  "mozBeta-firefox-win32.cfg",
+            "win64":  "mozBeta-firefox-win32.cfg",
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 41,
+            },
+            "beta-localtest": {
+                "ruleId": 40,
+            },
+        }
+    }
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'users/stage-ffxbld/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.allizom.org/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_firefox_beta.py'
--- a/mozilla/staging_release-firefox-mozilla-beta.py.template
+++ b/mozilla/staging_release-firefox-mozilla-beta.py.template
@@ -95,55 +95,67 @@ releaseConfig['l10nChunks']          = 6
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'stage-ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozBeta-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['stagingServer']       = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['previousReleasesStagingServer'] = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4-dev.allizom.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'ffxbld'
 releaseConfig['ausSshKey']           = 'ffxbld_rsa'
 releaseConfig['releaseNotesUrl']     = None
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = {{ promptWaitTime }}
 releaseConfig['updateVerifyChunks']  = 6
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozBeta-firefox-linux.cfg',
-    'linux64':  'mozBeta-firefox-linux64.cfg',
-    'macosx64': 'mozBeta-firefox-mac64.cfg',
-    'win32':  'mozBeta-firefox-win32.cfg',
-    'win64':  'mozBeta-firefox-win64.cfg',
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'browser/config/mozconfigs/linux32/beta',
     'linux64': 'browser/config/mozconfigs/linux64/beta',
     'macosx64': 'browser/config/mozconfigs/macosx-universal/beta',
     'win32': 'browser/config/mozconfigs/win32/beta',
     'win64': 'browser/config/mozconfigs/win64/beta',
 }
 releaseConfig['xulrunner_mozconfigs']          = {
     'linux': 'xulrunner/config/mozconfigs/linux32/xulrunner',
     'linux64': 'xulrunner/config/mozconfigs/linux64/xulrunner',
     'macosx64': 'xulrunner/config/mozconfigs/macosx-universal/xulrunner',
     'win32': 'xulrunner/config/mozconfigs/win32/xulrunner',
     'win64': 'xulrunner/config/mozconfigs/win64/xulrunner',
 }
-releaseConfig['releaseChannel']        = 'beta'
-releaseConfig['releaseChannelRuleIds'] = [26]
-releaseConfig['localTestChannel']      = 'beta-localtest'
-releaseConfig['cdnTestChannel']        = 'beta-cdntest'
-releaseConfig['testChannelRuleIds']    = [40,41]
+releaseConfig["releaseChannel"] = "beta"
+releaseConfig['updateChannels'] = {
+    "beta": {
+        "versionRegex": r"^.*$",
+        "ruleId": 26,
+        "patcherConfig": "mozBeta-branch-patcher2.cfg",
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozBeta-firefox-linux.cfg",
+            "linux64":  "mozBeta-firefox-linux64.cfg",
+            "macosx64": "mozBeta-firefox-mac64.cfg",
+            "win32":  "mozBeta-firefox-win32.cfg",
+            "win64":  "mozBeta-firefox-win32.cfg",
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 41,
+            },
+            "beta-localtest": {
+                "ruleId": 40,
+            },
+        }
+    }
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'users/stage-ffxbld/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.allizom.org/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_firefox_beta.py'
--- a/mozilla/staging_release-firefox-mozilla-esr31.py
+++ b/mozilla/staging_release-firefox-mozilla-esr31.py
@@ -24,17 +24,28 @@ releaseConfig['productName']         = '
 releaseConfig['stage_product']       = 'firefox'
 releaseConfig['appName']             = 'browser'
 #  Current version info
 releaseConfig['version']             = '31.0esr'
 releaseConfig['appVersion']          = '31.0'
 releaseConfig['milestone']           = releaseConfig['appVersion']
 releaseConfig['buildNumber']         = 1
 releaseConfig['baseTag']             = 'FIREFOX_31_0esr'
-releaseConfig['partialUpdates']      = {}  # TODO for 31.0.1esr
+releaseConfig['partialUpdates']      = {
+    '31.3.0esr': {
+        'appVersion': '31.3.0',
+        'buildNumber': 2,
+        'baseTag': 'FIREFOX_31_3_0esr',
+    },
+        '24.8.1esr': {
+        'appVersion': '24.8.1',
+        'buildNumber': 1,
+        'baseTag': 'FIREFOX_24_8_1esr',
+    },
+}
 #  Next (nightly) version info
 releaseConfig['nextAppVersion']      = '{{ version }}pre'
 releaseConfig['nextMilestone']       = releaseConfig['nextAppVersion']
 #  Repository configuration, for tagging
 ## Staging repository path
 releaseConfig['userRepoRoot'] = 'users/stage-ffxbld'
 releaseConfig['sourceRepositories']  = {
     'mozilla': {
@@ -84,37 +95,50 @@ releaseConfig['l10nChunks']          = 6
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'stage-ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozEsr31-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['stagingServer']       = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['previousReleasesStagingServer'] = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'http://dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['ausHost']             = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['ausUser']             = 'ffxbld'
 releaseConfig['ausSshKey']           = 'ffxbld_rsa'
 releaseConfig['releaseNotesUrl']     = None
 releaseConfig['testOlderPartials']   = False
-releaseConfig['verifyConfigs']       = {}  # TODO for 31.0.1esr
-releaseConfig['mozconfigs']          = {
-    'linux': 'browser/config/mozconfigs/linux32/release',
-    'linux64': 'browser/config/mozconfigs/linux64/release',
-    'macosx64': 'browser/config/mozconfigs/macosx-universal/release',
-    'win32': 'browser/config/mozconfigs/win32/release',
+releaseConfig['releaseChannel']      = 'esr'
+releaseConfig['updateChannels'] = {
+    "esr": {
+        "versionRegex": r"^.*$",
+        "ruleId": 53,
+        "patcherConfig": "mozEsr31-branch-patcher2.cfg",
+        "localTestChannel": "esr-localtest",
+        "cdnTestChannel": "esr-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozEsr31-firefox-linux.cfg",
+            "linux64":  "mozEsr31-firefox-linux64.cfg",
+            "macosx64": "mozEsr31-firefox-mac64.cfg",
+            "win32":  "mozEsr31-firefox-win32.cfg",
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 42,
+            },
+            "beta-localtest": {
+                "ruleId": 29,
+            },
+        }
+    }
 }
-releaseConfig['releaseChannel']      = 'esr'
-releaseConfig['testChannels']        = ['releasetest', 'esrtest']
-releaseConfig['testChannelRuleIds']  = [20,29]
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'users/stage-ffxbld/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.allizom.org/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_firefox_esr.py'
--- a/mozilla/staging_release-firefox-mozilla-esr31.py.template
+++ b/mozilla/staging_release-firefox-mozilla-esr31.py.template
@@ -91,45 +91,57 @@ releaseConfig['l10nChunks']          = 6
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'stage-ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozEsr31-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['stagingServer']       = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['previousReleasesStagingServer'] = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4-dev.allizom.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'ffxbld'
 releaseConfig['ausSshKey']           = 'ffxbld_rsa'
 releaseConfig['releaseNotesUrl']     = None
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = {{ promptWaitTime }}
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozEsr31-firefox-linux.cfg',
-    'linux64':  'mozEsr31-firefox-linux64.cfg',
-    'macosx64': 'mozEsr31-firefox-mac64.cfg',
-    'win32':  'mozEsr31-firefox-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'browser/config/mozconfigs/linux32/release',
     'linux64': 'browser/config/mozconfigs/linux64/release',
     'macosx64': 'browser/config/mozconfigs/macosx-universal/release',
     'win32': 'browser/config/mozconfigs/win32/release',
 }
 releaseConfig['releaseChannel']        = 'esr'
-releaseConfig['releaseChannelRuleIds'] = [53]
-releaseConfig['localTestChannel']      = 'esr-localtest'
-releaseConfig['cdnTestChannel']        = 'esr-cdntest'
-releaseConfig['testChannelRuleIds']    = [29,42]
+releaseConfig['updateChannels'] = {
+    "esr": {
+        "versionRegex": r"^.*$",
+        "ruleId": 53,
+        "patcherConfig": "mozEsr31-branch-patcher2.cfg",
+        "localTestChannel": "esr-localtest",
+        "cdnTestChannel": "esr-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozEsr31-firefox-linux.cfg",
+            "linux64":  "mozEsr31-firefox-linux64.cfg",
+            "macosx64": "mozEsr31-firefox-mac64.cfg",
+            "win32":  "mozEsr31-firefox-win32.cfg",
+        },
+        "testChannels": {
+            "esr-cdntest": {
+                "ruleId": 42,
+            },
+            "esr-localtest": {
+                "ruleId": 29,
+            },
+        }
+    }
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'users/stage-ffxbld/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.allizom.org/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_firefox_esr.py'
--- a/mozilla/staging_release-firefox-mozilla-release.py
+++ b/mozilla/staging_release-firefox-mozilla-release.py
@@ -93,51 +93,88 @@ releaseConfig['l10nChunks']          = 6
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'stage-ffxbld'
 releaseConfig['hgSshKey']            = '~cltbld/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozRelease-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['stagingServer']       = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['previousReleasesStagingServer'] = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'http://dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['ausHost']             = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['ausUser']             = 'ffxbld'
 releaseConfig['ausSshKey']           = 'ffxbld_rsa'
 releaseConfig['releaseNotesUrl']     = None
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = None
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozRelease-firefox-linux.cfg',
-    'linux64':  'mozRelease-firefox-linux64.cfg',
-    'macosx64': 'mozRelease-firefox-mac64.cfg',
-    'win32':  'mozRelease-firefox-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'browser/config/mozconfigs/linux32/release',
     'linux64': 'browser/config/mozconfigs/linux64/release',
     'macosx64': 'browser/config/mozconfigs/macosx-universal/release',
     'win32': 'browser/config/mozconfigs/win32/release',
 }
 releaseConfig['xulrunner_mozconfigs']          = {
     'linux': 'xulrunner/config/mozconfigs/linux32/release',
     'linux64': 'xulrunner/config/mozconfigs/linux64/release',
     'macosx64': 'xulrunner/config/mozconfigs/macosx-universal/release',
     'win32': 'xulrunner/config/mozconfigs/win32/release',
 }
 releaseConfig['releaseChannel']        = 'release'
-releaseConfig['releaseChannelRuleIds'] = [31]
-releaseConfig['localTestChannel']      = 'betatest'
-releaseConfig['cdnTestChannel']        = 'releasetest'
-releaseConfig['testChannelRuleIds']    = [19,20]
+releaseConfig['updateChannels'] = {
+    "release": {
+        "versionRegex": r"\d+\.\d+(\.\d+)?$",
+        "ruleId": 31,
+        "patcherConfig": "mozRelease-branch-patcher2.cfg",
+        "localTestChannel": "release-localtest",
+        "cdnTestChannel": "release-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozRelease-firefox-linux.cfg",
+            "linux64":  "mozRelease-firefox-linux64.cfg",
+            "macosx64": "mozRelease-firefox-mac64.cfg",
+            "win32":  "mozRelease-firefox-win32.cfg",
+            #"win64":  "mozRelease-firefox-win64.cfg",
+        },
+        "testChannels": {
+            "release-localtest": {
+                "ruleId": 19,
+            },
+            "release-cdntest": {
+                "ruleId": 20,
+            },
+        },
+    },
+    "beta": {
+        "enabled": False,
+        "versionRegex": r"\d+\.\d+b\d+$",
+        "ruleId": 26,
+        "requiresMirrors": False,
+        "patcherConfig": "mozBeta-branch-patcher2.cfg",
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozBeta-firefox-linux.cfg",
+            "linux64":  "mozBeta-firefox-linux64.cfg",
+            "macosx64": "mozBeta-firefox-mac64.cfg",
+            "win32":  "mozBeta-firefox-win32.cfg",
+            #"win64":  "mozBeta-firefox-win32.cfg",
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 41,
+            },
+            "beta-localtest": {
+                "ruleId": 40,
+            },
+        }
+    }
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = True
 releaseConfig['partnersRepoPath']    = 'users/stage-ffxbld/partner-repacks'
 releaseConfig['syncPartnerBundles']  = True
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.allizom.org/api'
--- a/mozilla/staging_release-firefox-mozilla-release.py.template
+++ b/mozilla/staging_release-firefox-mozilla-release.py.template
@@ -77,17 +77,17 @@ releaseConfig['otherReposToTag']     = {
     'users/stage-ffxbld/buildbot': 'production-0.8',
     'users/stage-ffxbld/partner-repacks': 'default',
     'users/stage-ffxbld/mozharness': 'production',
 }
 
 # Platform configuration
 # TODO: add win64 when we're ready to ship it
 releaseConfig['enUSPlatforms']       = ('linux', 'linux64', 'win32', 'macosx64')
-releaseConfig['notifyPlatforms']     = releaseConfig["enUSPlatform"]
+releaseConfig['notifyPlatforms']     = releaseConfig["enUSPlatforms"]
 releaseConfig['talosTestPlatforms']  = ()
 releaseConfig['xulrunnerPlatforms']  = releaseConfig['enUSPlatforms']
 
 # Unittests
 releaseConfig['unittestPlatforms']   = ()
 releaseConfig['enableUnittests']     = False
 
 # L10n configuration
@@ -97,54 +97,93 @@ releaseConfig['l10nChunks']          = 6
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'stage-ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozRelease-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['stagingServer']       = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['previousReleasesStagingServer'] = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4-dev.allizom.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'ffxbld'
 releaseConfig['ausSshKey']           = 'ffxbld_rsa'
 releaseConfig['releaseNotesUrl']     = None
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = {{ promptWaitTime }}
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozRelease-firefox-linux.cfg',
-    'linux64':  'mozRelease-firefox-linux64.cfg',
-    'macosx64': 'mozRelease-firefox-mac64.cfg',
-    'win32':  'mozRelease-firefox-win32.cfg',
-    #'win64':  'mozRelease-firefox-win64.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'browser/config/mozconfigs/linux32/release',
     'linux64': 'browser/config/mozconfigs/linux64/release',
     'macosx64': 'browser/config/mozconfigs/macosx-universal/release',
     'win32': 'browser/config/mozconfigs/win32/release',
     #'win64': 'browser/config/mozconfigs/win64/release',
 }
 releaseConfig['xulrunner_mozconfigs']          = {
     'linux': 'xulrunner/config/mozconfigs/linux32/release',
     'linux64': 'xulrunner/config/mozconfigs/linux64/release',
     'macosx64': 'xulrunner/config/mozconfigs/macosx-universal/release',
     'win32': 'xulrunner/config/mozconfigs/win32/release',
     #'win64': 'xulrunner/config/mozconfigs/win64/release',
 }
-releaseConfig['releaseChannel']        = 'release'
-releaseConfig['releaseChannelRuleIds'] = [31]
-releaseConfig['localTestChannel']      = 'release-localtest'
-releaseConfig['cdnTestChannel']        = 'release-cdntest'
-releaseConfig['testChannelRuleIds']    = [19,20]
+releaseConfig["releaseChannel"] = "release"
+releaseConfig['updateChannels'] = {
+    "release": {
+        "versionRegex": r"^\d+\.\d+(\.\d+)?$",
+        "ruleId": 31,
+        "patcherConfig": "mozRelease-branch-patcher2.cfg",
+        "localTestChannel": "release-localtest",
+        "cdnTestChannel": "release-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozRelease-firefox-linux.cfg",
+            "linux64":  "mozRelease-firefox-linux64.cfg",
+            "macosx64": "mozRelease-firefox-mac64.cfg",
+            "win32":  "mozRelease-firefox-win32.cfg",
+            #"win64":  "mozRelease-firefox-win64.cfg",
+        },
+        "testChannels": {
+            "release-localtest": {
+                "ruleId": 19,
+            },
+            "release-cdntest": {
+                "ruleId": 20,
+            },
+        },
+    },
+    "beta": {
+        "enabled": {{ betaChannelEnabled }},
+        # For the beta channel, we want to able to provide updates to this
+        # from prior betas or prior RCs that were shipped to the beta channel,
+        # so this regex matches either.
+        "versionRegex": r"^(\d+\.\d+b\d+|%s)$" % releaseConfig["version"].replace(".", "\\."),
+        "ruleId": 26,
+        "requiresMirrors": False,
+        "patcherConfig": "mozBeta-branch-patcher2.cfg",
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozBeta-firefox-linux.cfg",
+            "linux64":  "mozBeta-firefox-linux64.cfg",
+            "macosx64": "mozBeta-firefox-mac64.cfg",
+            "win32":  "mozBeta-firefox-win32.cfg",
+            #"win64":  "mozBeta-firefox-win32.cfg",
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 41,
+            },
+            "beta-localtest": {
+                "ruleId": 40,
+            },
+        }
+    }
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = True
 releaseConfig['partnersRepoPath']    = 'users/stage-ffxbld/partner-repacks'
 releaseConfig['syncPartnerBundles']  = True
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.allizom.org/api'
--- a/mozilla/staging_release-thunderbird-comm-beta.py
+++ b/mozilla/staging_release-thunderbird-comm-beta.py
@@ -102,45 +102,57 @@ releaseConfig['l10nChunks']          = 6
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'stage-ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozBeta-thunderbird-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['stagingServer']       = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['previousReleasesStagingServer'] = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'http://dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['ausHost']             = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['ausUser']             = 'tbirdbld'
 releaseConfig['ausSshKey']           = 'tbirdbld_dsa'
 releaseConfig['releaseNotesUrl']     = 'http://live.mozillamessaging.com/thunderbird/releasenotes?locale=%locale%&platform=%platform%&version=%version%'
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = None
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozBeta-thunderbird-linux.cfg',
-    'linux64':  'mozBeta-thunderbird-linux64.cfg',
-    'macosx64': 'mozBeta-thunderbird-mac64.cfg',
-    'win32':  'mozBeta-thunderbird-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'mail/config/mozconfigs/linux32/release',
     'linux64': 'mail/config/mozconfigs/linux64/release',
     'macosx64': 'mail/config/mozconfigs/macosx-universal/release',
     'win32': 'mail/config/mozconfigs/win32/release',
 }
 releaseConfig['releaseChannel']        = 'beta'
-releaseConfig['releaseChannelRuleIds'] = [33]
-releaseConfig['localTestChannel']      = 'beta-localtest'
-releaseConfig['cdnTestChannel']        = 'beta-cdntest'
-releaseConfig['testChannelRuleIds']    = [21,43]
+releaseConfig['updateChannels'] = {
+    "beta": {
+        "versionRegex": r"^.*$",
+        "ruleId": 33,
+        "patcherConfig": "mozBeta-thunderbird-branch-patcher2.cfg",
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozBeta-thunderbird-linux.cfg",
+            "linux64":  "mozBeta-thunderbird-linux64.cfg",
+            "macosx64": "mozBeta-thunderbird-mac64.cfg",
+            "win32":  "mozBeta-thunderbird-win32.cfg",
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 43,
+            },
+            "beta-localtest": {
+                "ruleId": 21,
+            },
+        }
+    }
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'users/stage-ffxbld/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.allizom.org/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_thunderbird.py'
--- a/mozilla/staging_release-thunderbird-comm-beta.py.template
+++ b/mozilla/staging_release-thunderbird-comm-beta.py.template
@@ -102,46 +102,58 @@ releaseConfig['l10nChunks']          = 6
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'stage-ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/tbirdbld_dsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozBeta-thunderbird-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['stagingServer']       = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['previousReleasesStagingServer'] = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4-dev.allizom.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'tbirdbld'
 releaseConfig['ausSshKey']           = 'tbirdbld_dsa'
 releaseConfig['releaseNotesUrl']     = 'http://live.mozillamessaging.com/thunderbird/releasenotes?locale=%locale%&platform=%platform%&version=%version%'
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = {{ promptWaitTime }}
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozBeta-thunderbird-linux.cfg',
-    'linux64':  'mozBeta-thunderbird-linux64.cfg',
-    'macosx64': 'mozBeta-thunderbird-mac64.cfg',
-    'win32':  'mozBeta-thunderbird-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'mail/config/mozconfigs/linux32/release',
     'linux64': 'mail/config/mozconfigs/linux64/release',
     'macosx64': 'mail/config/mozconfigs/macosx-universal/release',
     'win32': 'mail/config/mozconfigs/win32/release',
 }
 releaseConfig['source_mozconfig']      = 'mail/config/mozconfigs/linux64/release'
 releaseConfig['releaseChannel']        = 'beta'
-releaseConfig['releaseChannelRuleIds'] = [33]
-releaseConfig['localTestChannel']      = 'beta-localtest'
-releaseConfig['cdnTestChannel']        = 'beta-cdntest'
-releaseConfig['testChannelRuleIds']    = [21,43]
+releaseConfig['updateChannels'] = {
+    "beta": {
+        "versionRegex": r"^.*$",
+        "ruleId": 33,
+        "patcherConfig": "mozBeta-thunderbird-branch-patcher2.cfg",
+        "localTestChannel": "beta-localtest",
+        "cdnTestChannel": "beta-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozBeta-thunderbird-linux.cfg",
+            "linux64":  "mozBeta-thunderbird-linux64.cfg",
+            "macosx64": "mozBeta-thunderbird-mac64.cfg",
+            "win32":  "mozBeta-thunderbird-win32.cfg",
+        },
+        "testChannels": {
+            "beta-cdntest": {
+                "ruleId": 43,
+            },
+            "beta-localtest": {
+                "ruleId": 21,
+            },
+        }
+    }
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'users/stage-ffxbld/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.allizom.org/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_thunderbird.py'
--- a/mozilla/staging_release-thunderbird-comm-esr31.py
+++ b/mozilla/staging_release-thunderbird-comm-esr31.py
@@ -103,45 +103,57 @@ releaseConfig['l10nChunks']          = 6
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'stage-ffxbld'
 releaseConfig['hgSshKey']            = '/home/mock_mozilla/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozRelease-thunderbird-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['stagingServer']       = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['previousReleasesStagingServer'] = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'http://dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['ausHost']             = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['ausUser']             = 'tbirdbld'
 releaseConfig['ausSshKey']           = 'tbirdbld_dsa'
 releaseConfig['releaseNotesUrl']     = 'http://live.mozillamessaging.com/thunderbird/releasenotes?locale=%locale%&platform=%platform%&version=%version%'
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = None
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozRelease-thunderbird-linux.cfg',
-    'linux64':  'mozRelease-thunderbird-linux64.cfg',
-    'macosx64': 'mozRelease-thunderbird-mac64.cfg',
-    'win32':  'mozRelease-thunderbird-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'mail/config/mozconfigs/linux32/release',
     'linux64': 'mail/config/mozconfigs/linux64/release',
     'macosx64': 'mail/config/mozconfigs/macosx-universal/release',
     'win32': 'mail/config/mozconfigs/win32/release',
 }
 releaseConfig['releaseChannel']        = 'release'
-releaseConfig['releaseChannelRuleIds'] = [] # Still on AUS3
-releaseConfig['localTestChannel']      = 'betatest'
-releaseConfig['cdnTestChannel']        = 'releasetest'
-releaseConfig['testChannelRuleIds']    = [22,44]
+releaseConfig['updateChannels'] = {
+    "release": {
+        "versionRegex": r"^.*$",
+        "ruleId": 45,
+        "patcherConfig": "mozRelease-thunderbird-branch-patcher2.cfg",
+        "localTestChannel": "release-localtest",
+        "cdnTestChannel": "release-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozRelease-thunderbird-linux.cfg",
+            "linux64":  "mozRelease-thunderbird-linux64.cfg",
+            "macosx64": "mozRelease-thunderbird-mac64.cfg",
+            "win32":  "mozRelease-thunderbird-win32.cfg",
+        },
+        "testChannels": {
+            "release-localtest": {
+                "ruleId": 44,
+            },
+            "release-cdntest": {
+                "ruleId": 22,
+            },
+        },
+    },
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'users/stage-ffxbld/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.allizom.org/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_thunderbird.py'
--- a/mozilla/staging_release-thunderbird-comm-esr31.py.template
+++ b/mozilla/staging_release-thunderbird-comm-esr31.py.template
@@ -102,46 +102,58 @@ releaseConfig['l10nChunks']          = 6
 releaseConfig['mergeLocales']        = True
 releaseConfig['l10nUsePymake']       = True
 
 # Mercurial account
 releaseConfig['hgUsername']          = 'stage-ffxbld'
 releaseConfig['hgSshKey']            = '~cltbld/.ssh/ffxbld_rsa'
 
 # Update-specific configuration
-releaseConfig['patcherConfig']       = 'mozRelease-thunderbird-branch-patcher2.cfg'
 releaseConfig['ftpServer']           = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['stagingServer']       = 'dev-stage01.srv.releng.scl3.mozilla.com'
 releaseConfig['previousReleasesStagingServer'] = 'stage.mozilla.org'
 releaseConfig['bouncerServer']       = 'download.mozilla.org'
 releaseConfig['ausServerUrl']        = 'https://aus4-dev.allizom.org'
 releaseConfig['ausHost']             = None
 releaseConfig['ausUser']             = 'tbirdbld'
 releaseConfig['ausSshKey']           = 'tbirdbld_dsa'
 releaseConfig['releaseNotesUrl']     = 'http://live.mozillamessaging.com/thunderbird/releasenotes?locale=%locale%&platform=%platform%&version=%version%'
 releaseConfig['testOlderPartials']   = False
 releaseConfig['promptWaitTime']      = {{ promptWaitTime }}
-releaseConfig['verifyConfigs']       = {
-    'linux':  'mozRelease-thunderbird-linux.cfg',
-    'linux64':  'mozRelease-thunderbird-linux64.cfg',
-    'macosx64': 'mozRelease-thunderbird-mac64.cfg',
-    'win32':  'mozRelease-thunderbird-win32.cfg'
-}
 releaseConfig['mozconfigs']          = {
     'linux': 'mail/config/mozconfigs/linux32/release',
     'linux64': 'mail/config/mozconfigs/linux64/release',
     'macosx64': 'mail/config/mozconfigs/macosx-universal/release',
     'win32': 'mail/config/mozconfigs/win32/release',
 }
 releaseConfig['source_mozconfig']      = 'mail/config/mozconfigs/linux64/release'
 releaseConfig['releaseChannel']        = 'release'
-releaseConfig['releaseChannelRuleIds'] = [45]
-releaseConfig['localTestChannel']      = 'release-localtest'
-releaseConfig['cdnTestChannel']        = 'release-cdntest'
-releaseConfig['testChannelRuleIds']    = [22,44]
+releaseConfig['updateChannels'] = {
+    "release": {
+        "versionRegex": r"^.*$",
+        "ruleId": 45,
+        "patcherConfig": "mozRelease-thunderbird-branch-patcher2.cfg",
+        "localTestChannel": "release-localtest",
+        "cdnTestChannel": "release-cdntest",
+        "verifyConfigs": {
+            "linux":  "mozRelease-thunderbird-linux.cfg",
+            "linux64":  "mozRelease-thunderbird-linux64.cfg",
+            "macosx64": "mozRelease-thunderbird-mac64.cfg",
+            "win32":  "mozRelease-thunderbird-win32.cfg",
+        },
+        "testChannels": {
+            "release-localtest": {
+                "ruleId": 44,
+            },
+            "release-cdntest": {
+                "ruleId": 22,
+            },
+        },
+    },
+}
 
 # Partner repack configuration
 releaseConfig['doPartnerRepacks']    = False
 releaseConfig['partnersRepoPath']    = 'users/stage-ffxbld/partner-repacks'
 
 # Tuxedo/Bouncer configuration
 releaseConfig['tuxedoServerUrl']     = 'https://bounceradmin.allizom.org/api'
 releaseConfig['bouncer_submitter_config'] = 'releases/bouncer_thunderbird.py'