Merge branch 'stable-2.15' into stable-2.16

* stable-2.15:
  Ignore change deletion events for owners-autoassign

Change-Id: Ibf02ab41b9b7b6a55424f724dd501a131e1b0a42
diff --git a/WORKSPACE b/WORKSPACE
index 7b6285e..7dc7280 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,7 +3,7 @@
 load("//:bazlets.bzl", "load_bazlets")
 
 load_bazlets(
-    commit = "70d6ae0cee03c456fa4b32c807f3d13c032ef498",
+    commit = "56c9f4ed6dbe3c88f793851c88389637f3714a5d",
     #local_path = "/home/<user>/projects/bazlets",
 )
 
diff --git a/config.md b/config.md
index a284e55..6cba6eb 100644
--- a/config.md
+++ b/config.md
@@ -21,7 +21,7 @@
 - partial_regex: example
   owners:
       [...]
-- exact: /path/to/file.txt
+- exact: path/to/file.txt
       [...]
 ```
 
@@ -39,7 +39,8 @@
 
 Additional owners can be specified for files selected by other matching
 conditions (matchers section). Matching can be done by file suffix, regex
-(partial or full) and exact string comparison.
+(partial or full) and exact string comparison. For exact match, path is
+relative to the root of the repo.
 
 The plugin analyzes the latest patch set by looking at each file directory and
 building an OWNERS hierarchy. It stops once it finds an OWNERS file that has
@@ -72,7 +73,7 @@
 
 ```yaml
 matchers:
-- suffix: *.config
+- suffix: .config
   owners:
   - Configuration Managers
 ```
@@ -199,7 +200,7 @@
 ## Example 4 - Owners based on matchers
 
 Often the ownership comes from the developer's skills and competencies and
-cannot be purely defined by the project's directory structure.
+cannot be defined solely by the project's directory structure.
 For instance, all the files ending with .sql should be owned and signed-off by
 the DBA while all the ones ending with .css by approved by the UX Team.
 
@@ -234,6 +235,19 @@
 (Mister Dba) and the .css files (either John Creative or Matt Designer) have
 provided their Code-Review +2 feedback.
 
+The `add_match_owner_approval` predicate would also honour the OWNERS file
+without matchers, giving, therefore, the possibility of having different ownership
+criteria for different subdirectories. Example: /foo-dir/OWNERS can define a
+directory-based ownership while /bar-dir/OWNERS can rely on matching rules.
+
+__PERFORMANCE NOTE: The predicate `add_match_owner_approval` looks,
+at first sight, more powerful and versatile. However, it may generate a significant
+number of reductions and therefore, impact the Gerrit server performance.
+When used with changes with a high number of files involved, it may even crash
+the Gerrit default `rules.reductionLimit`.
+When not using any matcher in the OWNERS file, prefer the `add_owner_approval`,
+which generates a minimal number of reductions.__
+
 ## Example 5 - Owners details on a per-file basis
 
 When using the owners with a series of matchers associated to different set of
@@ -266,4 +280,4 @@
 removed from the "need" section of the change.
 
 In this way, it is always clear which owner needs to provide their feedback on
-which file of the change.
\ No newline at end of file
+which file of the change.
diff --git a/owners-autoassign/BUILD b/owners-autoassign/BUILD
index 42a32bc..463afcb 100644
--- a/owners-autoassign/BUILD
+++ b/owners-autoassign/BUILD
@@ -11,8 +11,8 @@
         "Implementation-Title: Gerrit OWNERS autoassign plugin",
         "Implementation-URL: https://gerrit.googlesource.com/plugins/owners",
         "Gerrit-PluginName: owners-autoassign",
-        "Gerrit-Module: com.vmware.gerrit.owners.common.AutoassignModule",
-        "Gerrit-ApiVersion: 2.15",
+        "Gerrit-Module: com.googlesource.gerrit.owners.common.AutoassignModule",
+        "Gerrit-ApiVersion: 2.16",
     ],
     resources = glob(["src/main/**/*"]),
     deps = [
diff --git a/owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/AutoassignModule.java b/owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/AutoassignModule.java
similarity index 95%
rename from owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/AutoassignModule.java
rename to owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/AutoassignModule.java
index a341505..d6bdaef 100644
--- a/owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/AutoassignModule.java
+++ b/owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/AutoassignModule.java
@@ -14,7 +14,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
 import com.google.gerrit.extensions.registration.DynamicSet;
diff --git a/owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/GitRefListener.java b/owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/GitRefListener.java
similarity index 98%
rename from owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/GitRefListener.java
rename to owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/GitRefListener.java
index 85b98d2..7ddd6a7 100644
--- a/owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/GitRefListener.java
+++ b/owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/GitRefListener.java
@@ -14,7 +14,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import static com.google.gerrit.extensions.client.DiffPreferencesInfo.Whitespace.IGNORE_NONE;
 
@@ -137,7 +137,7 @@
     }
   }
 
-  void processEvent(Repository repository, Event event) {
+  public void processEvent(Repository repository, Event event) {
     Change.Id cId = Change.Id.fromRef(event.getRefName());
     Changes changes = api.changes();
     // The provider injected by Gerrit is shared with other workers on the
diff --git a/owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManager.java b/owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/ReviewerManager.java
similarity index 97%
rename from owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManager.java
rename to owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/ReviewerManager.java
index 8e5b167..3335144 100644
--- a/owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManager.java
+++ b/owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/ReviewerManager.java
@@ -14,7 +14,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.gerrit.extensions.api.GerritApi;
 import com.google.gerrit.extensions.api.changes.AddReviewerInput;
@@ -86,8 +86,8 @@
                 account,
                 changeInfo._number);
           }
-          gApi.changes().id(changeInfo.id).current().review(in);
         }
+        gApi.changes().id(changeInfo.id).current().review(in);
       }
     } catch (RestApiException | OrmException e) {
       log.error("Couldn't add reviewers to the change", e);
diff --git a/owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManagerException.java b/owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/ReviewerManagerException.java
similarity index 95%
rename from owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManagerException.java
rename to owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/ReviewerManagerException.java
index 2425514..34b6109 100644
--- a/owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManagerException.java
+++ b/owners-autoassign/src/main/java/com/googlesource/gerrit/owners/common/ReviewerManagerException.java
@@ -14,7 +14,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 public class ReviewerManagerException extends Exception {
   private static final long serialVersionUID = 1L;
diff --git a/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/GitRefListenerTest.java b/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/GitRefListenerTest.java
index 8fb940c..e3d4be4 100644
--- a/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/GitRefListenerTest.java
+++ b/owners-autoassign/src/test/java/com/vmware/gerrit/owners/common/GitRefListenerTest.java
@@ -22,6 +22,9 @@
 import com.google.gerrit.server.util.OneOffRequestContext;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.googlesource.gerrit.owners.common.Accounts;
+import com.googlesource.gerrit.owners.common.GitRefListener;
+import com.googlesource.gerrit.owners.common.ReviewerManager;
 import org.eclipse.jgit.lib.Repository;
 import org.junit.Ignore;
 
@@ -49,7 +52,7 @@
   }
 
   @Override
-  void processEvent(Repository repository, Event event) {
+  public void processEvent(Repository repository, Event event) {
     processedEvents++;
   }
 
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/Accounts.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/Accounts.java
similarity index 94%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/Accounts.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/Accounts.java
index 0320414..0fdf717 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/Accounts.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/Accounts.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.gerrit.reviewdb.client.Account;
 import com.google.inject.ImplementedBy;
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/AccountsImpl.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/AccountsImpl.java
similarity index 88%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/AccountsImpl.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/AccountsImpl.java
index a5e7d26..e83269a 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/AccountsImpl.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/AccountsImpl.java
@@ -12,13 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import static com.google.gerrit.server.account.externalids.ExternalId.SCHEME_GERRIT;
 import static com.google.gerrit.server.account.externalids.ExternalId.SCHEME_MAILTO;
 import static com.google.gerrit.server.account.externalids.ExternalId.SCHEME_USERNAME;
 
-import com.google.gerrit.common.errors.NoSuchGroupException;
 import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.reviewdb.client.Account.Id;
 import com.google.gerrit.reviewdb.client.AccountGroup;
@@ -50,7 +49,7 @@
   private final AccountResolver resolver;
   private final AccountCache byId;
   private final GroupCache groupCache;
-  private final GroupMembers.Factory groupMembers;
+  private final GroupMembers groupMembers;
   private final IdentifiedUser adminUser;
   private final OneOffRequestContext oneOffRequestContext;
 
@@ -59,13 +58,13 @@
       AccountResolver resolver,
       AccountCache byId,
       GroupCache groupCache,
-      GroupMembers.Factory groupMembersFactory,
+      GroupMembers groupMembers,
       OneOffRequestContext oneOffRequestContext,
       IdentifiedUser.GenericFactory userFactory) {
     this.resolver = resolver;
     this.byId = byId;
     this.groupCache = groupCache;
-    this.groupMembers = groupMembersFactory;
+    this.groupMembers = groupMembers;
     this.adminUser = userFactory.create(new Account.Id(1000000));
     this.oneOffRequestContext = oneOffRequestContext;
   }
@@ -92,10 +91,10 @@
 
     try (ManualRequestContext ctx = oneOffRequestContext.openAs(adminUser.getAccountId())) {
 
-      return groupMembers.create(adminUser).listAccounts(group.get().getGroupUUID(), null).stream()
+      return groupMembers.listAccounts(group.get().getGroupUUID(), null).stream()
           .map(Account::getId)
           .collect(Collectors.toSet());
-    } catch (NoSuchGroupException | NoSuchProjectException | OrmException | IOException e) {
+    } catch (NoSuchProjectException | OrmException | IOException e) {
       log.error("Unable to list accounts in group " + group, e);
       return Collections.emptySet();
     }
@@ -141,16 +140,20 @@
   }
 
   private boolean isFullMatch(Account.Id id, String nameOrEmail) {
-    AccountState accountState = byId.get(id);
-    Account account = accountState.getAccount();
-    return isFullNameMatch(accountState, nameOrEmail)
+    Optional<AccountState> accountState = byId.get(id);
+    if (!accountState.isPresent()) {
+      return false;
+    }
+
+    Account account = accountState.get().getAccount();
+    return isFullNameMatch(account, nameOrEmail)
         || nameOrEmail.equalsIgnoreCase(account.getPreferredEmail())
-        || accountState.getExternalIds().stream()
+        || accountState.get().getExternalIds().stream()
             .anyMatch(eid -> isEMailMatch(eid, nameOrEmail) || isUsernameMatch(eid, nameOrEmail));
   }
 
-  private boolean isFullNameMatch(AccountState account, String fullName) {
-    return Optional.ofNullable(account.getAccount().getFullName())
+  private boolean isFullNameMatch(Account account, String fullName) {
+    return Optional.ofNullable(account.getFullName())
         .filter(n -> n.trim().equalsIgnoreCase(fullName))
         .isPresent();
   }
@@ -172,7 +175,7 @@
   }
 
   private boolean isActive(Account.Id accountId) {
-    return byId.get(accountId).getAccount().isActive();
+    return byId.get(accountId).map(AccountState::getAccount).map(Account::isActive).orElse(false);
   }
 
   private Optional<String> keySchemeRest(String scheme, ExternalId.Key key) {
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/ConfigurationParser.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/ConfigurationParser.java
similarity index 97%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/ConfigurationParser.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/ConfigurationParser.java
index 48b7bc3..2f5c5c0 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/ConfigurationParser.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/ConfigurationParser.java
@@ -13,9 +13,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
-import static com.vmware.gerrit.owners.common.StreamUtils.iteratorStream;
+import static com.googlesource.gerrit.owners.common.StreamUtils.iteratorStream;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/ExactMatcher.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/ExactMatcher.java
similarity index 94%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/ExactMatcher.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/ExactMatcher.java
index 04c3c32..f638a32 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/ExactMatcher.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/ExactMatcher.java
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.gerrit.reviewdb.client.Account;
 import java.util.Set;
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/JgitWrapper.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/JgitWrapper.java
similarity index 89%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/JgitWrapper.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/JgitWrapper.java
index c076c6e..c1a7368 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/JgitWrapper.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/JgitWrapper.java
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
 import static org.eclipse.jgit.lib.FileMode.TYPE_FILE;
@@ -34,9 +34,14 @@
 
   public static Optional<byte[]> getBlobAsBytes(Repository repository, String revision, String path)
       throws IOException {
+    ObjectId objectId = repository.resolve(revision);
+    if (objectId == null) {
+      return Optional.empty();
+    }
+
     try (final TreeWalk w =
         TreeWalk.forPath(
-            repository, path, parseCommit(repository, repository.resolve(revision)).getTree())) {
+            repository, path, parseCommit(repository, objectId).getTree())) {
 
       return Optional.ofNullable(w)
           .filter(walk -> (walk.getRawMode(0) & TYPE_MASK) == TYPE_FILE)
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/Matcher.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/Matcher.java
similarity index 96%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/Matcher.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/Matcher.java
index df0df2b..d57116b 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/Matcher.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/Matcher.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.gerrit.reviewdb.client.Account;
 import java.util.Set;
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/OptionalUtils.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/OptionalUtils.java
similarity index 94%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/OptionalUtils.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/OptionalUtils.java
index 7a6f83c..f35941d 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/OptionalUtils.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/OptionalUtils.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import java.util.Optional;
 
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/OwnersConfig.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/OwnersConfig.java
similarity index 97%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/OwnersConfig.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/OwnersConfig.java
index e827691..0c29516 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/OwnersConfig.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/OwnersConfig.java
@@ -14,7 +14,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/OwnersMap.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/OwnersMap.java
similarity index 97%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/OwnersMap.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/OwnersMap.java
index 30f796c..8af46e3 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/OwnersMap.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/OwnersMap.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.Maps;
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/PartialRegExMatcher.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/PartialRegExMatcher.java
similarity index 95%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/PartialRegExMatcher.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/PartialRegExMatcher.java
index e33704b..759170f 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/PartialRegExMatcher.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/PartialRegExMatcher.java
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.gerrit.reviewdb.client.Account;
 import java.util.Set;
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/PathOwners.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/PathOwners.java
similarity index 98%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/PathOwners.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/PathOwners.java
index 614ac4c..bb53419 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/PathOwners.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/PathOwners.java
@@ -14,11 +14,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import static com.google.gerrit.reviewdb.client.Patch.COMMIT_MSG;
 import static com.google.gerrit.reviewdb.client.Patch.MERGE_LIST;
-import static com.vmware.gerrit.owners.common.JgitWrapper.getBlobAsBytes;
+import static com.googlesource.gerrit.owners.common.JgitWrapper.getBlobAsBytes;
 
 import com.google.common.collect.Maps;
 import com.google.common.collect.Multimaps;
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/PathOwnersEntry.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/PathOwnersEntry.java
similarity index 98%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/PathOwnersEntry.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/PathOwnersEntry.java
index a1cf85f..3a7111d 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/PathOwnersEntry.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/PathOwnersEntry.java
@@ -14,7 +14,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/RegExMatcher.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/RegExMatcher.java
similarity index 95%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/RegExMatcher.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/RegExMatcher.java
index c4b13ff..2f1c23d 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/RegExMatcher.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/RegExMatcher.java
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.gerrit.reviewdb.client.Account;
 import java.util.Set;
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/StreamUtils.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/StreamUtils.java
similarity index 94%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/StreamUtils.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/StreamUtils.java
index 99bceac..0f8bac3 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/StreamUtils.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/StreamUtils.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import java.util.Iterator;
 import java.util.stream.Stream;
diff --git a/owners-common/src/main/java/com/vmware/gerrit/owners/common/SuffixMatcher.java b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/SuffixMatcher.java
similarity index 94%
rename from owners-common/src/main/java/com/vmware/gerrit/owners/common/SuffixMatcher.java
rename to owners-common/src/main/java/com/googlesource/gerrit/owners/common/SuffixMatcher.java
index d7a481f..4c72b7a 100644
--- a/owners-common/src/main/java/com/vmware/gerrit/owners/common/SuffixMatcher.java
+++ b/owners-common/src/main/java/com/googlesource/gerrit/owners/common/SuffixMatcher.java
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.gerrit.reviewdb.client.Account;
 import java.util.Set;
diff --git a/owners-common/src/test/java/com/vmware/gerrit/owners/common/ClassicConfig.java b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/ClassicConfig.java
similarity index 96%
rename from owners-common/src/test/java/com/vmware/gerrit/owners/common/ClassicConfig.java
rename to owners-common/src/test/java/com/googlesource/gerrit/owners/common/ClassicConfig.java
index ee14e25..e388125 100644
--- a/owners-common/src/test/java/com/vmware/gerrit/owners/common/ClassicConfig.java
+++ b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/ClassicConfig.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.gerrit.reviewdb.client.Account;
 import org.junit.Ignore;
diff --git a/owners-common/src/test/java/com/vmware/gerrit/owners/common/Config.java b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/Config.java
similarity index 98%
rename from owners-common/src/test/java/com/vmware/gerrit/owners/common/Config.java
rename to owners-common/src/test/java/com/googlesource/gerrit/owners/common/Config.java
index 36d2497..a5df462 100644
--- a/owners-common/src/test/java/com/vmware/gerrit/owners/common/Config.java
+++ b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/Config.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.eq;
diff --git a/owners-common/src/test/java/com/vmware/gerrit/owners/common/MatcherConfig.java b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/MatcherConfig.java
similarity index 97%
rename from owners-common/src/test/java/com/vmware/gerrit/owners/common/MatcherConfig.java
rename to owners-common/src/test/java/com/googlesource/gerrit/owners/common/MatcherConfig.java
index c1e8637..a2b20d8 100644
--- a/owners-common/src/test/java/com/vmware/gerrit/owners/common/MatcherConfig.java
+++ b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/MatcherConfig.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import org.junit.Ignore;
 
diff --git a/owners-common/src/test/java/com/vmware/gerrit/owners/common/PathOwnersTest.java b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/PathOwnersTest.java
similarity index 98%
rename from owners-common/src/test/java/com/vmware/gerrit/owners/common/PathOwnersTest.java
rename to owners-common/src/test/java/com/googlesource/gerrit/owners/common/PathOwnersTest.java
index 77dc597..42a1796 100644
--- a/owners-common/src/test/java/com/vmware/gerrit/owners/common/PathOwnersTest.java
+++ b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/PathOwnersTest.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
diff --git a/owners-common/src/test/java/com/vmware/gerrit/owners/common/RegexMatcherTest.java b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/RegexMatcherTest.java
similarity index 96%
rename from owners-common/src/test/java/com/vmware/gerrit/owners/common/RegexMatcherTest.java
rename to owners-common/src/test/java/com/googlesource/gerrit/owners/common/RegexMatcherTest.java
index 8d3aa0f..1fd557b 100644
--- a/owners-common/src/test/java/com/vmware/gerrit/owners/common/RegexMatcherTest.java
+++ b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/RegexMatcherTest.java
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
diff --git a/owners-common/src/test/java/com/vmware/gerrit/owners/common/RegexTest.java b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/RegexTest.java
similarity index 95%
rename from owners-common/src/test/java/com/vmware/gerrit/owners/common/RegexTest.java
rename to owners-common/src/test/java/com/googlesource/gerrit/owners/common/RegexTest.java
index 51cf937..47f9381 100644
--- a/owners-common/src/test/java/com/vmware/gerrit/owners/common/RegexTest.java
+++ b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/RegexTest.java
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import static com.google.common.truth.Truth.assertThat;
-import static com.vmware.gerrit.owners.common.MatcherConfig.exactMatcher;
-import static com.vmware.gerrit.owners.common.MatcherConfig.partialRegexMatcher;
-import static com.vmware.gerrit.owners.common.MatcherConfig.regexMatcher;
-import static com.vmware.gerrit.owners.common.MatcherConfig.suffixMatcher;
-import static com.vmware.gerrit.owners.common.StreamUtils.iteratorStream;
+import static com.googlesource.gerrit.owners.common.MatcherConfig.exactMatcher;
+import static com.googlesource.gerrit.owners.common.MatcherConfig.partialRegexMatcher;
+import static com.googlesource.gerrit.owners.common.MatcherConfig.regexMatcher;
+import static com.googlesource.gerrit.owners.common.MatcherConfig.suffixMatcher;
+import static com.googlesource.gerrit.owners.common.StreamUtils.iteratorStream;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.powermock.api.easymock.PowerMock.replayAll;
diff --git a/owners-common/src/test/java/com/vmware/gerrit/owners/common/TestAccounts.java b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/TestAccounts.java
similarity index 95%
rename from owners-common/src/test/java/com/vmware/gerrit/owners/common/TestAccounts.java
rename to owners-common/src/test/java/com/googlesource/gerrit/owners/common/TestAccounts.java
index 7141931..ba48011 100644
--- a/owners-common/src/test/java/com/vmware/gerrit/owners/common/TestAccounts.java
+++ b/owners-common/src/test/java/com/googlesource/gerrit/owners/common/TestAccounts.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners.common;
+package com.googlesource.gerrit.owners.common;
 
 import com.google.gerrit.reviewdb.client.Account;
 import java.util.Arrays;
diff --git a/owners/BUILD b/owners/BUILD
index d0c1efc..05c1fa7 100644
--- a/owners/BUILD
+++ b/owners/BUILD
@@ -2,7 +2,7 @@
 load("//lib/prolog:prolog.bzl", "prolog_cafe_library")
 
 PROLOG_PREDICATES = glob(["src/main/java/gerrit_owners/**/*.java"]) + [
-    "src/main/java/com/vmware/gerrit/owners/OwnersStoredValues.java",
+    "src/main/java/com/googlesource/gerrit/owners/OwnersStoredValues.java",
 ]
 
 java_library(
@@ -34,8 +34,8 @@
         "Implementation-Title: Gerrit OWNERS plugin",
         "Implementation-URL: https://gerrit.googlesource.com/plugins/owners",
         "Gerrit-PluginName: owners",
-        "Gerrit-Module: com.vmware.gerrit.owners.OwnersModule",
-        "Gerrit-ApiVersion: 2.15",
+        "Gerrit-Module: com.googlesource.gerrit.owners.OwnersModule",
+        "Gerrit-ApiVersion: 2.16",
     ],
     resources = glob(["src/main/resources/**/*"]),
     deps = [
diff --git a/owners/src/main/java/com/vmware/gerrit/owners/CompileStub.java b/owners/src/main/java/com/googlesource/gerrit/owners/CompileStub.java
similarity index 94%
rename from owners/src/main/java/com/vmware/gerrit/owners/CompileStub.java
rename to owners/src/main/java/com/googlesource/gerrit/owners/CompileStub.java
index 66be624..f8cddfb 100644
--- a/owners/src/main/java/com/vmware/gerrit/owners/CompileStub.java
+++ b/owners/src/main/java/com/googlesource/gerrit/owners/CompileStub.java
@@ -13,7 +13,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners;
+package com.googlesource.gerrit.owners;
 
 /** A stub class only used for pleasing BUCK. */
 public class CompileStub {}
diff --git a/owners/src/main/java/com/vmware/gerrit/owners/OwnerPredicateProvider.java b/owners/src/main/java/com/googlesource/gerrit/owners/OwnerPredicateProvider.java
similarity index 88%
rename from owners/src/main/java/com/vmware/gerrit/owners/OwnerPredicateProvider.java
rename to owners/src/main/java/com/googlesource/gerrit/owners/OwnerPredicateProvider.java
index 0470aea..ef0b92b 100644
--- a/owners/src/main/java/com/vmware/gerrit/owners/OwnerPredicateProvider.java
+++ b/owners/src/main/java/com/googlesource/gerrit/owners/OwnerPredicateProvider.java
@@ -14,13 +14,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners;
+package com.googlesource.gerrit.owners;
 
 import com.google.common.collect.ImmutableSet;
 import com.google.gerrit.extensions.annotations.Listen;
-import com.google.gerrit.rules.PredicateProvider;
+import com.google.gerrit.server.rules.PredicateProvider;
 import com.google.inject.Inject;
-import com.vmware.gerrit.owners.common.Accounts;
+import com.googlesource.gerrit.owners.common.Accounts;
 
 /** Gerrit OWNERS Prolog Predicate Provider. */
 @Listen
diff --git a/owners/src/main/java/com/vmware/gerrit/owners/OwnersModule.java b/owners/src/main/java/com/googlesource/gerrit/owners/OwnersModule.java
similarity index 90%
rename from owners/src/main/java/com/vmware/gerrit/owners/OwnersModule.java
rename to owners/src/main/java/com/googlesource/gerrit/owners/OwnersModule.java
index c4a5f80..750c58e 100644
--- a/owners/src/main/java/com/vmware/gerrit/owners/OwnersModule.java
+++ b/owners/src/main/java/com/googlesource/gerrit/owners/OwnersModule.java
@@ -13,10 +13,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners;
+package com.googlesource.gerrit.owners;
 
 import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.gerrit.rules.PredicateProvider;
+import com.google.gerrit.server.rules.PredicateProvider;
 import com.google.inject.AbstractModule;
 
 public class OwnersModule extends AbstractModule {
diff --git a/owners/src/main/java/com/vmware/gerrit/owners/OwnersStoredValues.java b/owners/src/main/java/com/googlesource/gerrit/owners/OwnersStoredValues.java
similarity index 87%
rename from owners/src/main/java/com/vmware/gerrit/owners/OwnersStoredValues.java
rename to owners/src/main/java/com/googlesource/gerrit/owners/OwnersStoredValues.java
index 97502b1..18abe29 100644
--- a/owners/src/main/java/com/vmware/gerrit/owners/OwnersStoredValues.java
+++ b/owners/src/main/java/com/googlesource/gerrit/owners/OwnersStoredValues.java
@@ -14,14 +14,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.vmware.gerrit.owners;
+package com.googlesource.gerrit.owners;
 
-import com.google.gerrit.rules.StoredValue;
-import com.google.gerrit.rules.StoredValues;
 import com.google.gerrit.server.patch.PatchList;
+import com.google.gerrit.server.rules.StoredValue;
+import com.google.gerrit.server.rules.StoredValues;
 import com.googlecode.prolog_cafe.lang.Prolog;
-import com.vmware.gerrit.owners.common.Accounts;
-import com.vmware.gerrit.owners.common.PathOwners;
+import com.googlesource.gerrit.owners.common.Accounts;
+import com.googlesource.gerrit.owners.common.PathOwners;
 import org.eclipse.jgit.lib.Repository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/owners/src/main/java/gerrit_owners/PRED_file_owners_2.java b/owners/src/main/java/gerrit_owners/PRED_file_owners_2.java
index 06557e2..4e7263a 100644
--- a/owners/src/main/java/gerrit_owners/PRED_file_owners_2.java
+++ b/owners/src/main/java/gerrit_owners/PRED_file_owners_2.java
@@ -14,12 +14,12 @@
 
 package gerrit_owners;
 
-import static com.vmware.gerrit.owners.common.StreamUtils.iteratorStream;
+import static com.googlesource.gerrit.owners.common.StreamUtils.iteratorStream;
 
 import com.google.gerrit.reviewdb.client.Account;
-import com.google.gerrit.rules.PrologEnvironment;
-import com.google.gerrit.rules.StoredValues;
 import com.google.gerrit.server.IdentifiedUser;
+import com.google.gerrit.server.rules.PrologEnvironment;
+import com.google.gerrit.server.rules.StoredValues;
 import com.googlecode.prolog_cafe.exceptions.PInstantiationException;
 import com.googlecode.prolog_cafe.exceptions.PrologException;
 import com.googlecode.prolog_cafe.lang.Operation;
@@ -28,8 +28,8 @@
 import com.googlecode.prolog_cafe.lang.SymbolTerm;
 import com.googlecode.prolog_cafe.lang.Term;
 import com.googlecode.prolog_cafe.lang.VariableTerm;
-import com.vmware.gerrit.owners.OwnersStoredValues;
-import com.vmware.gerrit.owners.common.PathOwners;
+import com.googlesource.gerrit.owners.OwnersStoredValues;
+import com.googlesource.gerrit.owners.common.PathOwners;
 import java.io.File;
 import java.util.Map;
 import java.util.Set;
@@ -76,7 +76,7 @@
     }
     Account account = user.asIdentifiedUser().state().getAccount();
     String userName = account.getFullName();
-    return userName;
+    return sanitizeAsSubmitLabel(userName);
   }
 
   public Term createFormattedList(Prolog engine, Term key) {
@@ -86,9 +86,13 @@
         iteratorStream(owners.getFileOwners().get(path).iterator())
             .map(id -> getFullNameFromId(engine, id))
             .collect(Collectors.toSet());
-    String ownVerb = ownersNames.size() > 1 ? " own " : " owns ";
-    String userNames = ownersNames.stream().collect(Collectors.joining(", "));
-    return SymbolTerm.create(userNames + ownVerb + (new File(path)).getName());
+    String ownVerb = ownersNames.size() > 1 ? "-own-" : "-owns-";
+    String userNames = ownersNames.stream().collect(Collectors.joining("-"));
+    return SymbolTerm.create(userNames + ownVerb + sanitizeAsSubmitLabel(new File(path).getName()));
+  }
+
+  private String sanitizeAsSubmitLabel(String anyLabelPart) {
+    return anyLabelPart.replaceAll("[\\s_\\.]+", "-");
   }
 
   private static IdentifiedUser.GenericFactory userFactory(Prolog engine) {
diff --git a/owners/src/main/java/gerrit_owners/PRED_matcher_owner_2.java b/owners/src/main/java/gerrit_owners/PRED_matcher_owner_2.java
index 3afc6c7..5abf7ad 100644
--- a/owners/src/main/java/gerrit_owners/PRED_matcher_owner_2.java
+++ b/owners/src/main/java/gerrit_owners/PRED_matcher_owner_2.java
@@ -26,8 +26,8 @@
 import com.googlecode.prolog_cafe.lang.StructureTerm;
 import com.googlecode.prolog_cafe.lang.SymbolTerm;
 import com.googlecode.prolog_cafe.lang.Term;
-import com.vmware.gerrit.owners.OwnersStoredValues;
-import com.vmware.gerrit.owners.common.PathOwners;
+import com.googlesource.gerrit.owners.OwnersStoredValues;
+import com.googlesource.gerrit.owners.common.PathOwners;
 import java.util.Iterator;
 import java.util.Map;
 
diff --git a/owners/src/main/java/gerrit_owners/PRED_matcher_path_1.java b/owners/src/main/java/gerrit_owners/PRED_matcher_path_1.java
index 3cb3bb9..4bbc734 100644
--- a/owners/src/main/java/gerrit_owners/PRED_matcher_path_1.java
+++ b/owners/src/main/java/gerrit_owners/PRED_matcher_path_1.java
@@ -23,8 +23,8 @@
 import com.googlecode.prolog_cafe.lang.Prolog;
 import com.googlecode.prolog_cafe.lang.SymbolTerm;
 import com.googlecode.prolog_cafe.lang.Term;
-import com.vmware.gerrit.owners.OwnersStoredValues;
-import com.vmware.gerrit.owners.common.PathOwners;
+import com.googlesource.gerrit.owners.OwnersStoredValues;
+import com.googlesource.gerrit.owners.common.PathOwners;
 import java.util.Iterator;
 
 /** 'owner_path'(-Path) */
diff --git a/owners/src/main/java/gerrit_owners/PRED_owner_2.java b/owners/src/main/java/gerrit_owners/PRED_owner_2.java
index 92b77c9..5697a32 100644
--- a/owners/src/main/java/gerrit_owners/PRED_owner_2.java
+++ b/owners/src/main/java/gerrit_owners/PRED_owner_2.java
@@ -26,8 +26,8 @@
 import com.googlecode.prolog_cafe.lang.StructureTerm;
 import com.googlecode.prolog_cafe.lang.SymbolTerm;
 import com.googlecode.prolog_cafe.lang.Term;
-import com.vmware.gerrit.owners.OwnersStoredValues;
-import com.vmware.gerrit.owners.common.PathOwners;
+import com.googlesource.gerrit.owners.OwnersStoredValues;
+import com.googlesource.gerrit.owners.common.PathOwners;
 import java.util.Iterator;
 import java.util.Map;
 
diff --git a/owners/src/main/java/gerrit_owners/PRED_owner_path_1.java b/owners/src/main/java/gerrit_owners/PRED_owner_path_1.java
index 90936e0..df973b3 100644
--- a/owners/src/main/java/gerrit_owners/PRED_owner_path_1.java
+++ b/owners/src/main/java/gerrit_owners/PRED_owner_path_1.java
@@ -23,8 +23,8 @@
 import com.googlecode.prolog_cafe.lang.Prolog;
 import com.googlecode.prolog_cafe.lang.SymbolTerm;
 import com.googlecode.prolog_cafe.lang.Term;
-import com.vmware.gerrit.owners.OwnersStoredValues;
-import com.vmware.gerrit.owners.common.PathOwners;
+import com.googlesource.gerrit.owners.OwnersStoredValues;
+import com.googlesource.gerrit.owners.common.PathOwners;
 import java.util.Iterator;
 
 /** 'owner_path'(-Path) */
diff --git a/owners/src/main/prolog/gerrit_owners.pl b/owners/src/main/prolog/gerrit_owners.pl
index 157f0b6..1fe2a22 100644
--- a/owners/src/main/prolog/gerrit_owners.pl
+++ b/owners/src/main/prolog/gerrit_owners.pl
@@ -24,7 +24,7 @@
 add_owner_approval(In, Out) :-
   owner_path(Path),
   \+ owner_approved(Path),
-  Out = [label('Code-Review from owners', need(_)) | In],
+  Out = [label('Code-Review-from-owners', need(_)) | In],
   !.
 
 add_owner_approval(In, Out) :- In = Out.
@@ -32,7 +32,7 @@
 add_owner_approval(Users, In, Out) :-
   owner_path(Path),
   \+ owner_approved(Users, Path),
-  Out = [label('Code-Review from owners', need(_)) | In],
+  Out = [label('Code-Review-from-owners', need(_)) | In],
   !.
 
 add_owner_approval(_, In, Out) :- In = Out.
@@ -67,7 +67,7 @@
     findall(US,code_review_user(US),Approvers),
     matcher_needed(Approvers,P,W),
     \+ W == [],
-    Out = [label('Code-Review from owners', need(_)) | In], !.
+    Out = [label('Code-Review-from-owners', need(_)) | In], !.
 
 add_match_owner_approval(In,Out) :- Out = In.