diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8d875fe..0760a5c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,16 +1,16 @@
-If you would like to contribute to the development of OpenStack,
+If you would like to contribute to the development of OpenDev,
 you must follow the steps in this page:
 
-   [https://docs.openstack.org/infra/manual/developers.html](https://docs.openstack.org/infra/manual/developers.html)
+   [https://docs.opendev.org/opendev/infra-manual/latest/developers.html](https://docs.opendev.org/opendev/infra-manual/latest/developers.html)
 
 If you already have a good understanding of how the system works and your
-OpenStack accounts are set up, you can skip to the development workflow section
-of this documentation to learn how changes to OpenStack should be submitted for
+OpenDev accounts are set up, you can skip to the development workflow section
+of this documentation to learn how changes to OpenDev should be submitted for
 review via the Gerrit tool:
 
-   [https://docs.openstack.org/infra/manual/developers.html#development-workflow](https://docs.openstack.org/infra/manual/developers.html#development-workflow)
+   [https://docs.opendev.org/opendev/infra-manual/latest/developers.html#development-workflow](https://docs.opendev.org/opendev/infra-manual/latest/developers.html#development-workflow)
 
 Pull requests submitted through GitHub will be ignored.
 
-Bugs should be filed [on StoryBoard](https://storyboard.openstack.org/#!/project/722),
+Bugs should be filed [on StoryBoard](https://storyboard.openstack.org/#!/project/opendev/jeepyb),
 not in GitHub's issue tracker.
diff --git a/jeepyb/cmd/close_pull_requests.py b/jeepyb/cmd/close_pull_requests.py
index 4ead4ad..e8265df 100644
--- a/jeepyb/cmd/close_pull_requests.py
+++ b/jeepyb/cmd/close_pull_requests.py
@@ -1,5 +1,5 @@
 #! /usr/bin/env python
-# Copyright (C) 2011 OpenStack, LLC.
+# Copyright (C) 2011 OpenStack Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,15 +16,9 @@
 # Github pull requests closer reads a project config file called projects.yaml
 # It should look like:
 
-# - homepage: http://openstack.org
-#   team-id: 153703
-#   has-wiki: False
-#   has-issues: False
-#   has-downloads: False
-# ---
 # - project: PROJECT_NAME
 #   options:
-#   - has-pull-requests
+#     - has-pull-requests
 
 # Github authentication information is read from github.secure.config,
 # which should look like:
@@ -44,20 +38,20 @@
 import logging
 import os
 
-import jeepyb.log as l
+import jeepyb.log
 import jeepyb.projects as p
 import jeepyb.utils as u
 
-MESSAGE = """Thank you for contributing to %(project)s!
+MESSAGE = """Thank you for your interest in %(project)s!
 
 %(project)s uses Gerrit for code review.
 
-If you have never contributed to OpenStack before make sure you have read the
-getting started documentation:
-https://docs.openstack.org/infra/manual/developers.html#getting-started
+If you have never contributed to an OpenDev hosted project before
+make sure you have read the getting started documentation:
+https://docs.opendev.org/opendev/infra-manual/latest/developers.html#getting-started
 
 Otherwise please visit
-https://docs.openstack.org/infra/manual/developers.html#development-workflow
+https://docs.opendev.org/opendev/infra-manual/latest/developers.html#development-workflow
 and follow the instructions there to upload your change to Gerrit.
 """
 
@@ -67,12 +61,12 @@
 def main():
 
     parser = argparse.ArgumentParser()
-    l.setup_logging_arguments(parser)
+    jeepyb.log.setup_logging_arguments(parser)
     parser.add_argument('--message-file', dest='message_file', default=None,
                         help='The close pull request message')
 
     args = parser.parse_args()
-    l.configure_logging(args)
+    jeepyb.log.configure_logging(args)
 
     if args.message_file:
         try:
@@ -136,5 +130,6 @@
             issue.create_comment(pull_request_text % vars)
             req.edit(state="closed")
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/create_hound_config.py b/jeepyb/cmd/create_hound_config.py
index 601ba74..373ae02 100644
--- a/jeepyb/cmd/create_hound_config.py
+++ b/jeepyb/cmd/create_hound_config.py
@@ -19,14 +19,14 @@
 import json
 import os
 
+import jeepyb.utils as u
+
 # Python2 has unicode as a builtin
 # Python3 does not
 import sys
 if sys.version_info[0] >= 3:
     unicode = str
 
-import jeepyb.utils as u
-
 
 PROJECTS_YAML = os.environ.get('PROJECTS_YAML', '/home/hound/projects.yaml')
 GIT_SERVER = os.environ.get('GIT_BASE', 'opendev.org')
diff --git a/jeepyb/cmd/expire_old_reviews.py b/jeepyb/cmd/expire_old_reviews.py
index 5a62c05..2dbd015 100644
--- a/jeepyb/cmd/expire_old_reviews.py
+++ b/jeepyb/cmd/expire_old_reviews.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright (c) 2012 OpenStack, LLC.
+# Copyright (c) 2012 OpenStack Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -22,16 +22,16 @@
 import logging
 import paramiko
 
-import jeepyb.log as l
+import jeepyb.log
 
 logger = logging.getLogger('expire_reviews')
 
 
 def expire_patch_set(ssh, patch_id, patch_subject):
-    message = ('Code review expired due to no recent activity'
-               ' after a negative review. It can be restored using'
-               ' the \`Restore Change\` button under the Patch Set'
-               ' on the web interface.')
+    message = ("Code review expired due to no recent activity"
+               " after a negative review. It can be restored using"
+               " the 'Restore Change' button under the Patch Set"
+               " on the web interface.")
     command = ('gerrit review --abandon '
                '--message="{message}" {patch_id}').format(
                    message=message,
@@ -50,9 +50,9 @@
     parser.add_argument('ssh_key', help='The gerrit admin SSH key file')
     parser.add_argument('--age', dest='age', default='1w',
                         help='The minimum age of a review to expire')
-    l.setup_logging_arguments(parser)
+    jeepyb.log.setup_logging_arguments(parser)
     options = parser.parse_args()
-    l.configure_logging(options)
+    jeepyb.log.configure_logging(options)
 
     GERRIT_USER = options.user
     GERRIT_SSH_KEY = options.ssh_key
@@ -85,5 +85,6 @@
 
     logger.info('End expire review')
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/manage_projects.py b/jeepyb/cmd/manage_projects.py
index 4b29e56..212d899 100644
--- a/jeepyb/cmd/manage_projects.py
+++ b/jeepyb/cmd/manage_projects.py
@@ -1,5 +1,5 @@
 #! /usr/bin/env python
-# Copyright (C) 2011 OpenStack, LLC.
+# Copyright (C) 2011 OpenStack Foundation
 # Copyright (c) 2012 Hewlett-Packard Development Company, L.P.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,20 +16,17 @@
 
 # manage_projects.py reads a config file called projects.ini
 # It should look like:
-
+#
 # [projects]
-# homepage=http://openstack.org
-# gerrit-host=review.openstack.org
-# local-git-dir=/var/lib/git
-# gerrit-key=/home/gerrit2/review_site/etc/ssh_host_rsa_key
-# gerrit-committer=Project Creator <openstack-infra@lists.openstack.org>
-# gerrit-replicate=True
-# has-github=True
-# has-wiki=False
-# has-issues=False
-# has-downloads=False
+# homepage=https://opendev.org
 # acl-dir=/home/gerrit2/acls
-# acl-base=/home/gerrit2/acls/project.config
+# local-git-dir=/opt/lib/git
+# jeepyb-cache-dir=/opt/lib/jeepyb
+# gerrit-host=review.opendev.org
+# gerrit-user=project-creator
+# gerrit-committer=Project Creator <project-creator@opendev.org>
+# gerrit-key=/home/gerrit2/review_site/etc/ssh_project_rsa_key
+# has-github=false
 #
 # manage_projects.py reads a project listing file called projects.yaml
 # It should look like:
@@ -40,7 +37,7 @@
 #    - has-downloads
 #    - has-pull-requests
 #    - track-upstream
-#   homepage: Some homepage that isn't http://openstack.org
+#   homepage: Some homepage that isn't http://opendev.org
 #   description: This is a great project
 #   upstream: https://gerrit.googlesource.com/gerrit
 #   upstream-prefix: upstream
@@ -65,7 +62,7 @@
 import gerritlib.gerrit
 import github
 
-import jeepyb.log as l
+import jeepyb.log
 import jeepyb.utils as u
 
 registry = u.ProjectsRegistry()
@@ -74,7 +71,7 @@
 orgs = None
 
 # Gerrit system groups as defined:
-# https://review.openstack.org/Documentation/access-control.html#system_groups
+# https://review.opendev.org/Documentation/access-control.html#system_groups
 # Need to set Gerrit system group's uuid to the format it expects.
 GERRIT_SYSTEM_GROUPS = {
     'Anonymous Users': 'global:Anonymous-Users',
@@ -421,17 +418,17 @@
 
 def main():
     parser = argparse.ArgumentParser(description='Manage projects')
-    l.setup_logging_arguments(parser)
+    jeepyb.log.setup_logging_arguments(parser)
     parser.add_argument('--nocleanup', action='store_true',
                         help='do not remove temp directories')
     parser.add_argument('projects', metavar='project', nargs='*',
                         help='name of project(s) to process')
     args = parser.parse_args()
-    l.configure_logging(args)
+    jeepyb.log.configure_logging(args)
 
     default_has_github = registry.get_defaults('has-github', True)
 
-    LOCAL_GIT_DIR = registry.get_defaults('local-git-dir', '/var/lib/git')
+    LOCAL_GIT_DIR = registry.get_defaults('local-git-dir', None)
     JEEPYB_CACHE_DIR = registry.get_defaults('jeepyb-cache-dir',
                                              '/var/lib/jeepyb')
     ACL_DIR = registry.get_defaults('acl-dir')
@@ -550,9 +547,12 @@
                         gerrit.replicate(project)
 
                 # Create the repo for the local git mirror
-                create_local_mirror(
-                    LOCAL_GIT_DIR, project_git,
-                    GERRIT_OS_SYSTEM_USER, GERRIT_OS_SYSTEM_GROUP)
+                if LOCAL_GIT_DIR:
+                    # This is conditional because new gerrit url pathing
+                    # has made local git mirrors less straightfoward.
+                    create_local_mirror(
+                        LOCAL_GIT_DIR, project_git,
+                        GERRIT_OS_SYSTEM_USER, GERRIT_OS_SYSTEM_GROUP)
 
                 if acl_config:
                     acl_sha = acl_cache.get(acl_config)
diff --git a/jeepyb/cmd/notify_impact.py b/jeepyb/cmd/notify_impact.py
index 5b402f5..0636c06 100644
--- a/jeepyb/cmd/notify_impact.py
+++ b/jeepyb/cmd/notify_impact.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright (c) 2012 OpenStack, LLC.
+# Copyright (c) 2012 OpenStack Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -19,7 +19,7 @@
 
 # You want to test this? I use a command line a bit like this:
 #     python notify_impact.py --change 55607 \
-#     --change-url https://review.openstack.org/55607 --project nova/ \
+#     --change-url https://review.opendev.org/55607 --project nova/ \
 #     --branch master --commit c262de4417d48be599c3a7496ef94de5c84b188c \
 #     --impact DocImpact --dest-address none@localhost --dryrun \
 #     --config foo.yaml \
@@ -132,7 +132,7 @@
                    'the documentation bugs against it. If this needs '
                    'changing, the docimpact-group option needs to be added '
                    'for the project. You can ask the '
-                   'OpenStack infra team (#openstack-infra on freenode) for '
+                   'OpenStack TaCT SIG (#openstack-infra on freenode) for '
                    'help if you need to.\n'
                    % args.project)
         lp_project = project_name
@@ -291,7 +291,7 @@
 
     # SMTP configuration
     parser.add_argument('--smtp-from', dest='smtp_from',
-                        default='gerrit2@review.openstack.org')
+                        default='gerrit2@review.opendev.org')
 
     parser.add_argument('--smtp-host', dest='smtp_host', default="localhost")
     parser.add_argument('--smtp-port', dest='smtp_port')
@@ -334,5 +334,6 @@
     if impacted(git_log, args.impact):
         process_impact(git_log, args, config)
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/openstackwatch.py b/jeepyb/cmd/openstackwatch.py
index c9d6a54..264112f 100644
--- a/jeepyb/cmd/openstackwatch.py
+++ b/jeepyb/cmd/openstackwatch.py
@@ -78,6 +78,7 @@
                                     OUTPUT_MODE)
     return ret
 
+
 try:
     conffile = sys.argv[1]
 except IndexError:
@@ -174,5 +175,6 @@
             else:
                 print(content)
 
+
 if __name__ == '__main__':
     main()
diff --git a/jeepyb/cmd/register_zanata_projects.py b/jeepyb/cmd/register_zanata_projects.py
index 6d64625..b737909 100644
--- a/jeepyb/cmd/register_zanata_projects.py
+++ b/jeepyb/cmd/register_zanata_projects.py
@@ -18,7 +18,7 @@
 import logging
 import os
 
-import jeepyb.log as l
+import jeepyb.log
 import jeepyb.projects as p
 import jeepyb.translations as t
 import jeepyb.utils as u
@@ -33,9 +33,9 @@
 
 def main():
     parser = argparse.ArgumentParser(description='Register projects in Zanata')
-    l.setup_logging_arguments(parser)
+    jeepyb.log.setup_logging_arguments(parser)
     args = parser.parse_args()
-    l.configure_logging(args)
+    jeepyb.log.configure_logging(args)
 
     registry = u.ProjectsRegistry(PROJECTS_YAML)
     rest_service = t.ZanataRestService(ZANATA_URL, ZANATA_USER, ZANATA_KEY)
diff --git a/jeepyb/cmd/track_upstream.py b/jeepyb/cmd/track_upstream.py
index 846dc96..4a30c61 100644
--- a/jeepyb/cmd/track_upstream.py
+++ b/jeepyb/cmd/track_upstream.py
@@ -1,5 +1,5 @@
 #! /usr/bin/env python
-# Copyright (C) 2011 OpenStack, LLC.
+# Copyright (C) 2011 OpenStack Foundation
 # Copyright (c) 2012 Hewlett-Packard Development Company, L.P.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,18 +18,15 @@
 # It should look like:
 
 # [projects]
-# homepage=http://openstack.org
-# gerrit-host=review.openstack.org
-# local-git-dir=/var/lib/git
-# gerrit-key=/home/gerrit2/review_site/etc/ssh_host_rsa_key
-# gerrit-committer=Project Creator <openstack-infra@lists.openstack.org>
-# gerrit-replicate=True
-# has-github=True
-# has-wiki=False
-# has-issues=False
-# has-downloads=False
+# homepage=https://opendev.org
 # acl-dir=/home/gerrit2/acls
-# acl-base=/home/gerrit2/acls/project.config
+# local-git-dir=/opt/lib/git
+# jeepyb-cache-dir=/opt/lib/jeepyb
+# gerrit-host=review.opendev.org
+# gerrit-user=project-creator
+# gerrit-committer=Project Creator <project-creator@opendev.org>
+# gerrit-key=/home/gerrit2/review_site/etc/ssh_project_rsa_key
+# has-github=false
 #
 # manage_projects.py reads a project listing file called projects.yaml
 # It should look like:
@@ -40,7 +37,7 @@
 #    - has-downloads
 #    - has-pull-requests
 #    - track-upstream
-#   homepage: Some homepage that isn't http://openstack.org
+#   homepage: Some homepage that isn't http://opendev.org
 #   description: This is a great project
 #   upstream: https://gerrit.googlesource.com/gerrit
 #   upstream-prefix: upstream
@@ -57,7 +54,7 @@
 
 import gerritlib.gerrit
 
-import jeepyb.log as l
+import jeepyb.log
 import jeepyb.utils as u
 
 registry = u.ProjectsRegistry()
@@ -142,13 +139,13 @@
 
 def main():
     parser = argparse.ArgumentParser(description='Manage projects')
-    l.setup_logging_arguments(parser)
+    jeepyb.log.setup_logging_arguments(parser)
     parser.add_argument('--nocleanup', action='store_true',
                         help='do not remove temp directories')
     parser.add_argument('projects', metavar='project', nargs='*',
                         help='name of project(s) to process')
     args = parser.parse_args()
-    l.configure_logging(args)
+    jeepyb.log.configure_logging(args)
 
     JEEPYB_CACHE_DIR = registry.get_defaults('jeepyb-cache-dir',
                                              '/var/lib/jeepyb')
@@ -227,5 +224,6 @@
     finally:
         os.unlink(ssh_env['GIT_SSH'])
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/trivial_rebase.py b/jeepyb/cmd/trivial_rebase.py
index 19e192b..2c8bfef 100644
--- a/jeepyb/cmd/trivial_rebase.py
+++ b/jeepyb/cmd/trivial_rebase.py
@@ -282,5 +282,6 @@
         SuExec(options, approval["account_id"], ' '.join(gerrit_approve_cmd))
     sys.exit(0)
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/update_blueprint.py b/jeepyb/cmd/update_blueprint.py
index 22efa84..07bcce9 100644
--- a/jeepyb/cmd/update_blueprint.py
+++ b/jeepyb/cmd/update_blueprint.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright (c) 2011 OpenStack, LLC.
+# Copyright (c) 2011 OpenStack Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -60,6 +60,7 @@
     c.readfp(fp)
     return c
 
+
 GERRIT_CONFIG = get_broken_config(GERRIT_CONFIG)
 SECURE_CONFIG = get_broken_config(GERRIT_SECURE_CONFIG)
 DB_HOST = GERRIT_CONFIG.get("database", "hostname")
@@ -173,5 +174,6 @@
 
     find_specs(lpconn, conn, args)
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/update_bug.py b/jeepyb/cmd/update_bug.py
index 64fa536..31fecf7 100644
--- a/jeepyb/cmd/update_bug.py
+++ b/jeepyb/cmd/update_bug.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright (c) 2011 OpenStack, LLC.
+# Copyright (c) 2011 OpenStack Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -25,7 +25,6 @@
 from launchpadlib import launchpad
 from launchpadlib import uris
 
-import jeepyb.gerritdb
 from jeepyb import projects as p
 from jeepyb import utils as u
 
@@ -73,8 +72,7 @@
                               submitter, branch, git_log, related=False):
     subject = '%s merged to %s (%s)' % (fix_or_related_fix(related),
                                         u.short_project_name(project), branch)
-    git_url = 'https://git.openstack.org/cgit/%s/commit/?id=%s' % (project,
-                                                                   commit)
+    git_url = 'https://opendev.org/%s/commit/%s' % (project, commit)
     body = '''Reviewed:  %s
 Committed: %s
 Submitter: %s
@@ -83,51 +81,8 @@
     bugtask.bug.newMessage(subject=subject, content=body)
 
 
-def set_in_progress(bugtask, launchpad, uploader, change_url):
-    """Set bug In progress with assignee being the uploader"""
-
-    # Retrieve uploader from Launchpad by correlating Gerrit E-mail
-    # address to OpenID, and only set if there is a clear match.
-    try:
-        searchkey = uploader[uploader.rindex("(") + 1:-1]
-    except ValueError:
-        searchkey = uploader
-
-    # The counterintuitive query is due to odd database schema choices
-    # in Gerrit. For example, an account with a secondary E-mail
-    # address added looks like...
-    # select email_address,external_id from account_external_ids
-    #     where account_id=1234;
-    # +-----------------+-----------------------------------------+
-    # | email_address   | external_id                             |
-    # +-----------------+-----------------------------------------+
-    # | plugh@xyzzy.com | https://login.ubuntu.com/+id/fR0bnU1 |
-    # | bar@foo.org     | mailto:bar@foo.org                      |
-    # | NULL            | username:quux                           |
-    # +-----------------+-----------------------------------------+
-    # ...thus we need a join on a secondary query to search against
-    # all the user's configured E-mail addresses.
-    #
-    # Worse, we also need to filter by active accounts only since
-    # picking an inactive account could result in using the wrong
-    # OpenId entirely.
-    #
-    query = """SELECT t.external_id FROM account_external_ids t
-            INNER JOIN (
-                SELECT t.account_id FROM account_external_ids t
-                WHERE t.email_address = %s )
-            original ON t.account_id = original.account_id
-            AND t.external_id LIKE 'https://login.ubuntu.com%%'
-            JOIN accounts a ON a.account_id = t.account_id
-            WHERE a.inactive = 'N'"""
-
-    cursor = jeepyb.gerritdb.connect().cursor()
-    cursor.execute(query, searchkey)
-    data = cursor.fetchone()
-    if data:
-        assignee = launchpad.people.getByOpenIDIdentifier(identifier=data[0])
-        if assignee:
-            bugtask.assignee = assignee
+def set_in_progress(bugtask, launchpad, change_url):
+    """Set bug In progress"""
 
     bugtask.status = "In Progress"
     bugtask.lp_save()
@@ -256,8 +211,7 @@
         if args.branch == 'master':
             if (bugtask.status not in [u'Fix Committed', u'Fix Released'] and
                     task.needs_change('set_in_progress')):
-                set_in_progress(bugtask, launchpad,
-                                args.uploader, args.change_url)
+                set_in_progress(bugtask, launchpad, args.change_url)
         else:
             series = args.branch.rsplit('/', 1)[-1]
 
@@ -268,8 +222,7 @@
                         task.needs_change('set_in_progress') and
                         reltask.status not in [u'Fix Committed',
                                                u'Fix Released']):
-                    set_in_progress(reltask, launchpad,
-                                    args.uploader, args.change_url)
+                    set_in_progress(reltask, launchpad, args.change_url)
                     break
 
         if args.patchset == '1' and (task.needs_change('add_comment') or
@@ -350,16 +303,19 @@
     parser.add_argument('--commit', default=None)
     parser.add_argument('--topic', default=None)
     parser.add_argument('--change-owner', default=None)
+    parser.add_argument('--change-owner-username', default=None)
     # change-abandoned
     parser.add_argument('--abandoner', default=None)
+    parser.add_argument('--abandoner-username', default=None)
     parser.add_argument('--reason', default=None)
     # change-merged
     parser.add_argument('--submitter', default=None)
+    parser.add_argument('--submitter-username', default=None)
     parser.add_argument('--newrev', default=None)
     # patchset-created
     parser.add_argument('--uploader', default=None)
+    parser.add_argument('--uploader-username', default=None)
     parser.add_argument('--patchset', default=None)
-    parser.add_argument('--is-draft', default=None)
     parser.add_argument('--kind', default=None)
 
     args = parser.parse_args()
diff --git a/jeepyb/cmd/welcome_message.py b/jeepyb/cmd/welcome_message.py
index b28f5e1..d09397d 100644
--- a/jeepyb/cmd/welcome_message.py
+++ b/jeepyb/cmd/welcome_message.py
@@ -18,7 +18,7 @@
 #
 # For example, this might be called as follows
 # python welcome_message.py --change Ia1fea1eab3976f1a9cb89ceb3ce1c6c6a7e79c42
-# --change-url \ https://review-dev.openstack.org/81 --project gtest-org/test \
+# --change-url \ https://review-dev.opendev.org/81 --project gtest-org/test \
 # --branch master --uploader User A. Example (user@example.com) --commit \
 # 05508ae633852469d2fd7786a3d6f1d06f87055b --patchset 1 patchset-merged \
 # --ssh-user=user --ssh-key=/home/user/.ssh/id_rsa
@@ -31,7 +31,7 @@
 import paramiko
 
 import jeepyb.gerritdb
-import jeepyb.log as l
+import jeepyb.log
 
 logger = logging.getLogger('welcome_reviews')
 
@@ -88,7 +88,8 @@
 Thanks again for participating in OpenDev, we look forward to seeing you
 around.
 
-Workflow Guide: https://docs.openstack.org/infra/manual/developers.html
+Workflow Guide:
+https://docs.opendev.org/opendev/infra-manual/latest/developers.html
 """
 
     if message_file:
@@ -154,16 +155,17 @@
     parser.add_argument('--dryrun', dest='dryrun', action='store_true')
     parser.add_argument('--no-dryrun', dest='dryrun', action='store_false')
     parser.set_defaults(dryrun=False)
-    l.setup_logging_arguments(parser)
+    jeepyb.log.setup_logging_arguments(parser)
 
     args = parser.parse_args()
 
-    l.configure_logging(args)
+    jeepyb.log.configure_logging(args)
 
     # they're a first-timer, post the message on 1st patchset
     if is_newbie(args.uploader) and args.patchset == '1' and not args.dryrun:
         post_message(args.commit, args.ssh_user, args.ssh_key,
                      args.message_file)
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/gerritdb.py b/jeepyb/gerritdb.py
index 8c06d2c..dade73c 100644
--- a/jeepyb/gerritdb.py
+++ b/jeepyb/gerritdb.py
@@ -1,5 +1,5 @@
 #! /usr/bin/env python
-# Copyright (C) 2011 OpenStack, LLC.
+# Copyright (C) 2011 OpenStack Foundation
 # Copyright (c) 2012 Hewlett-Packard Development Company, L.P.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/requirements.txt b/requirements.txt
index 62d2223..679b9ec 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,7 +3,7 @@
 # process, which may cause wedges in the gate later.
 pbr>=1.6
 
-gerritlib>=0.3.0
+gerritlib>=0.10.0
 PyMySQL
 paramiko>=1.13.0
 PyGithub
diff --git a/setup.cfg b/setup.cfg
index 24207d0..73ab438 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -3,9 +3,9 @@
 summary = Tools for managing gerrit projects and external sources.
 description-file =
     README.rst
-author = OpenStack Infrastructure Team
-author-email = openstack-infra@lists.openstack.org
-home-page = https://docs.openstack.org/infra/system-config/
+author = OpenDev Contributors
+author-email = service-discuss@lists.opendev.org
+home-page = https://docs.opendev.org/opendev/system-config/
 classifier =
     Intended Audience :: Information Technology
     Intended Audience :: System Administrators
diff --git a/test-requirements.txt b/test-requirements.txt
index d528919..117f7a3 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -1,4 +1,4 @@
 # The order of packages is significant, because pip processes them in the order
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
-hacking<0.11,>=0.10.2
+flake8
diff --git a/tox.ini b/tox.ini
index 835b4ac..46bd1ce 100644
--- a/tox.ini
+++ b/tox.ini
@@ -18,6 +18,7 @@
 
 [flake8]
 # E125 and H are intentionally ignored
-ignore = E125,H
+# W503 is a mistake in flake8
+ignore = E125,H,W503,W504
 show-source = True
 exclude = .venv,.tox,dist,doc,build,*.egg
