diff --git a/SOURCES/bz1913932-1-gcp-vpc-move-add-project-parameter.patch b/SOURCES/bz1913932-1-gcp-vpc-move-add-project-parameter.patch
new file mode 100644
index 0000000..16cfb10
--- /dev/null
+++ b/SOURCES/bz1913932-1-gcp-vpc-move-add-project-parameter.patch
@@ -0,0 +1,86 @@
+From 560683500b3f9d5d8e183a569daea27422ae5268 Mon Sep 17 00:00:00 2001
+From: Reid Wahl <nrwahl@protonmail.com>
+Date: Thu, 7 Jan 2021 12:25:04 -0800
+Subject: [PATCH] gcp-vpc-move-route, gcp-vpc-move-vip: Parameterize project ID
+
+Resolves: RHBZ#1913932
+Resolves: RHBZ#1913936
+
+Signed-off-by: Reid Wahl <nrwahl@protonmail.com>
+---
+ heartbeat/gcp-vpc-move-route.in | 13 ++++++++++++-
+ heartbeat/gcp-vpc-move-vip.in   | 16 ++++++++++++++--
+ 2 files changed, 26 insertions(+), 3 deletions(-)
+
+diff --git a/heartbeat/gcp-vpc-move-route.in b/heartbeat/gcp-vpc-move-route.in
+index d8e8ea8dd..179eba15a 100644
+--- a/heartbeat/gcp-vpc-move-route.in
++++ b/heartbeat/gcp-vpc-move-route.in
+@@ -106,6 +106,16 @@ Name of the VPC network
+ <content type="string" default="default" />
+ </parameter>
+ 
++<parameter name="project">
++<longdesc lang="en">
++Project ID of the instance. It can be useful to set this attribute if
++the instance is in a shared service project. Otherwise, the agent should
++be able to determine the project ID automatically.
++</longdesc>
++<shortdesc lang="en">Project ID</shortdesc>
++<content type="string" default="default" />
++</parameter>
++
+ <parameter name="interface">
+ <longdesc lang="en">
+ Name of the network interface
+@@ -215,7 +225,8 @@ def validate(ctx):
+   try:
+     ctx.instance = get_metadata('instance/name')
+     ctx.zone = get_metadata('instance/zone').split('/')[-1]
+-    ctx.project = get_metadata('project/project-id')
++    ctx.project = os.environ.get(
++        'OCF_RESKEY_project', get_metadata('project/project-id'))
+   except Exception as e:
+     logger.error(
+         'Instance information not found. Is this a GCE instance ?: %s', str(e))
+diff --git a/heartbeat/gcp-vpc-move-vip.in b/heartbeat/gcp-vpc-move-vip.in
+index 01d91a59d..e792f71d5 100755
+--- a/heartbeat/gcp-vpc-move-vip.in
++++ b/heartbeat/gcp-vpc-move-vip.in
+@@ -75,6 +75,16 @@ METADATA = \
+       <shortdesc lang="en">Host list</shortdesc>
+       <content type="string" default="" />
+     </parameter>
++    <parameter name="project" unique="0" required="0">
++      <longdesc lang="en">
++        Project ID of the instance. It can be useful to set this
++        attribute if the instance is in a shared service project.
++        Otherwise, the agent should be able to determine the project ID
++        automatically.
++      </longdesc>
++      <shortdesc lang="en">Project ID</shortdesc>
++      <content type="string" default="default" />
++    </parameter>
+     <parameter name="stackdriver_logging" unique="0" required="0">
+       <longdesc lang="en">If enabled (set to true), IP failover logs will be posted to stackdriver logging</longdesc>
+       <shortdesc lang="en">Stackdriver-logging support</shortdesc>
+@@ -267,7 +277,8 @@ def get_instances_list(project, exclude):
+ def gcp_alias_start(alias):
+   my_aliases = get_localhost_aliases()
+   my_zone = get_metadata('instance/zone').split('/')[-1]
+-  project = get_metadata('project/project-id')
++  project = os.environ.get(
++        'OCF_RESKEY_project', get_metadata('project/project-id'))
+ 
+   if alias in my_aliases:
+     # TODO: Do we need to check alias_range_name?
+@@ -315,7 +326,8 @@ def gcp_alias_start(alias):
+ def gcp_alias_stop(alias):
+   my_aliases = get_localhost_aliases()
+   my_zone = get_metadata('instance/zone').split('/')[-1]
+-  project = get_metadata('project/project-id')
++  project = os.environ.get(
++        'OCF_RESKEY_project', get_metadata('project/project-id'))
+ 
+   if alias in my_aliases:
+     logger.info('Removing %s from %s' % (alias, THIS_VM))
diff --git a/SOURCES/bz1913932-2-gcp-vpc-move-route-fixes.patch b/SOURCES/bz1913932-2-gcp-vpc-move-route-fixes.patch
new file mode 100644
index 0000000..a94f0ee
--- /dev/null
+++ b/SOURCES/bz1913932-2-gcp-vpc-move-route-fixes.patch
@@ -0,0 +1,106 @@
+From 523c4cee64b3b8ee9f603a940d83a6628531078d Mon Sep 17 00:00:00 2001
+From: Oyvind Albrigtsen <oalbrigt@redhat.com>
+Date: Tue, 19 Jan 2021 10:56:47 +0100
+Subject: [PATCH 1/2] gcp-vpc-move-route: fix stop-action when route stopped,
+ and fix check_conflicting_routes()
+
+---
+ heartbeat/gcp-vpc-move-route.in | 23 +++++++++++++++++------
+ 1 file changed, 17 insertions(+), 6 deletions(-)
+
+diff --git a/heartbeat/gcp-vpc-move-route.in b/heartbeat/gcp-vpc-move-route.in
+index 179eba15a..9fe985832 100644
+--- a/heartbeat/gcp-vpc-move-route.in
++++ b/heartbeat/gcp-vpc-move-route.in
+@@ -252,8 +252,19 @@ def validate(ctx):
+ def check_conflicting_routes(ctx):
+   fl = '(destRange = "%s*") AND (network = "%s") AND (name != "%s")' % (
+       ctx.ip, ctx.vpc_network_url, ctx.route_name)
+-  request = ctx.conn.routes().list(project=ctx.project, filter=fl)
+-  response = request.execute()
++  try:
++    request = ctx.conn.routes().list(project=ctx.project, filter=fl)
++    response = request.execute()
++  except googleapiclient.errors.HttpError as e:
++    if e.resp.status == 404:
++      logger.error('VPC network not found')
++      if 'stop' in sys.argv[1]:
++        sys.exit(OCF_SUCCESS)
++      else:
++        sys.exit(OCF_ERR_CONFIGURED)
++    else:
++      raise
++
+   route_list = response.get('items', None)
+   if route_list:
+     logger.error(
+@@ -353,16 +364,16 @@ def route_monitor(ctx):
+   logger.info('GCP route monitor: checking route table')
+ 
+   # Ensure that there is no route that we are not aware of that is also handling our IP
+-  check_conflicting_routes
++  check_conflicting_routes(ctx)
+ 
+   try:
+     request = ctx.conn.routes().get(project=ctx.project, route=ctx.route_name)
+     response = request.execute()
+   except googleapiclient.errors.HttpError as e:
+-    if 'Insufficient Permission' in e.content:
+-      return OCF_ERR_PERM
+-    elif e.resp.status == 404:
++    if e.resp.status == 404:
+       return OCF_NOT_RUNNING
++    elif 'Insufficient Permission' in e.content:
++      return OCF_ERR_PERM
+     else:
+       raise
+ 
+
+From 50dbfc3230e87b8d29163c235e6866d15fd6fc1b Mon Sep 17 00:00:00 2001
+From: Oyvind Albrigtsen <oalbrigt@redhat.com>
+Date: Tue, 19 Jan 2021 11:50:22 +0100
+Subject: [PATCH 2/2] gcp-vpc-move-vip: correctly return error when no
+ instances are returned
+
+---
+ heartbeat/gcp-vpc-move-vip.in | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/heartbeat/gcp-vpc-move-vip.in b/heartbeat/gcp-vpc-move-vip.in
+index e792f71d5..bbbd87b7a 100755
+--- a/heartbeat/gcp-vpc-move-vip.in
++++ b/heartbeat/gcp-vpc-move-vip.in
+@@ -263,8 +263,14 @@ def get_instances_list(project, exclude):
+   hostlist = []
+   request = CONN.instances().aggregatedList(project=project)
+   while request is not None:
+-    response = request.execute()
+-    zones = response.get('items', {})
++    try:
++      response = request.execute()
++      zones = response.get('items', {})
++    except googleapiclient.errors.HttpError as e:
++      if e.resp.status == 404:
++        logger.debug('get_instances_list(): no instances found')
++        return ''
++
+     for zone in zones.values():
+       for inst in zone.get('instances', []):
+         if inst['name'] != exclude:
+@@ -303,9 +309,13 @@ def gcp_alias_start(alias):
+       break
+ 
+   # Add alias IP range to localhost
+-  add_alias(
+-      project, my_zone, THIS_VM, alias,
+-      os.environ.get('OCF_RESKEY_alias_range_name'))
++  try:
++    add_alias(
++        project, my_zone, THIS_VM, alias,
++        os.environ.get('OCF_RESKEY_alias_range_name'))
++  except googleapiclient.errors.HttpError as e:
++    if e.resp.status == 404:
++      sys.exit(OCF_ERR_CONFIGURED)
+ 
+   # Verify that the IP range has been added
+   my_aliases = get_localhost_aliases()
diff --git a/SPECS/resource-agents.spec b/SPECS/resource-agents.spec
index 9bbaa2a..089ec99 100644
--- a/SPECS/resource-agents.spec
+++ b/SPECS/resource-agents.spec
@@ -70,7 +70,7 @@
 Name:		resource-agents
 Summary:	Open Source HA Reusable Cluster Resource Scripts
 Version:	4.1.1
-Release:	81%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist}
+Release:	86%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist}
 License:	GPLv2+ and LGPLv2+
 URL:		https://github.com/ClusterLabs/resource-agents
 %if 0%{?fedora} || 0%{?centos_version} || 0%{?rhel}
@@ -262,6 +262,8 @@ Patch170:	bz1901357-crypt-1-support-symlink-devices.patch
 Patch171:	bz1902208-LVM-activate-stop-before-storage-service.patch
 Patch172:	bz1901357-crypt-2-dont-sanity-check-during-probe.patch
 Patch173:	bz1903677-ocf-shellfuncs-fix-traceback-redirection-bash5.patch
+Patch174:	bz1913932-1-gcp-vpc-move-add-project-parameter.patch
+Patch175:	bz1913932-2-gcp-vpc-move-route-fixes.patch
 
 # bundle patches
 Patch1000:	7-gcp-bundled.patch
@@ -591,6 +593,8 @@ exit 1
 %patch171 -p1
 %patch172 -p1
 %patch173 -p1
+%patch174 -p1
+%patch175 -p1
 
 chmod 755 heartbeat/nova-compute-wait
 chmod 755 heartbeat/NovaEvacuate
@@ -1154,6 +1158,11 @@ ccs_update_schema > /dev/null 2>&1 ||:
 %endif
 
 %changelog
+* Tue Jan 19 2021 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.1.1-86
+- gcp-vpc-move-route, gcp-vpc-move-vip: add project parameter
+
+  Resolves: rhbz#1913932
+
 * Thu Dec  3 2020 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.1.1-81
 - ocf-shellfuncs: fix traceback redirection for Bash 5+