diff --git a/ui/code-owners-service.js b/ui/code-owners-service.js
index 0e07411..8bb14d1 100644
--- a/ui/code-owners-service.js
+++ b/ui/code-owners-service.js
@@ -117,12 +117,20 @@
    * @param {string} project
    * @param {string} branch
    */
-  getBranchConfig(project, branch) {
-    return this.restApi.get(
+  async getBranchConfig(project, branch) {
+    const config = await this.restApi.get(
         `/projects/${encodeURIComponent(project)}/` +
         `branches/${encodeURIComponent(branch)}/` +
         `code_owners.branch_config`
     );
+    if (config.override_approval && !(config.override_approval instanceof Array)) {
+      // In the upcoming backend changes, the override_approval will be changed
+      // to array with (possible) multiple items.
+      // While this transition is in progress, the frontend supports both API -
+      // the old one and the new one.
+      return {...config, override_approval: [config.override_approval]};
+    }
+    return config;
   }
 }
 
diff --git a/ui/owner-requirement.js b/ui/owner-requirement.js
index d08bacc..1ad5b4b 100644
--- a/ui/owner-requirement.js
+++ b/ui/owner-requirement.js
@@ -112,7 +112,7 @@
       },
       _isOverriden: {
         type: Boolean,
-        computed: '_computeIsOverriden(model.branchConfig)',
+        computed: '_computeIsOverriden(change, model.branchConfig)',
       },
       _overrideInfoUrl: {
         type: String,
@@ -165,19 +165,23 @@
       ? branchConfig.general.override_info_url : '';
   }
 
-  _computeIsOverriden(branchConfig) {
-    if (!branchConfig || !branchConfig['override_approval']) {
-      // no override label configured
+  _computeIsOverriden(change, branchConfig) {
+    if (!change || !branchConfig || !branchConfig['override_approval']) {
+      // no override labels configured
       return false;
     }
 
-    const overridenLabel = branchConfig['override_approval'].label;
-    const overridenValue = branchConfig['override_approval'].value;
 
-    if (this.change.labels[overridenLabel]) {
-      const votes = this.change.labels[overridenLabel].all || [];
-      if (votes.find(v => `${v.value}` === `${overridenValue}`)) {
-        return true;
+    for(const requiredApprovalInfo of branchConfig['override_approval']) {
+      const overridenLabel = requiredApprovalInfo.label;
+      const overridenValue = Number(requiredApprovalInfo.value);
+      if (isNaN(overridenValue)) continue;
+
+      if (this.change.labels[overridenLabel]) {
+        const votes = change.labels[overridenLabel].all || [];
+        if (votes.find(v => Number(v.value) >= overridenValue)) {
+          return true;
+        }
       }
     }
 
