diff --git a/.gitignore b/.gitignore
index a5ea076..5175038 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
 SOURCES/ClusterLabs-resource-agents-e711383f.tar.gz
 SOURCES/SAPHanaSR-2067519.tar.gz
+SOURCES/SAPHanaSR-ScaleOut-a77e8c6.tar.gz
 SOURCES/aliyun-cli-2.1.10.tar.gz
 SOURCES/aliyun-python-sdk-core-2.8.5.tar.gz
 SOURCES/aliyun-python-sdk-ecs-4.9.3.tar.gz
@@ -10,3 +11,4 @@ SOURCES/jmespath-0.7.1.tar.gz
 SOURCES/pycryptodome-3.6.4.tar.gz
 SOURCES/pyroute2-0.4.13.tar.gz
 SOURCES/sap_cluster_connector-0015fe2.tar.gz
+SOURCES/sap_cluster_connector-f3644f5.tar.gz
diff --git a/.resource-agents.metadata b/.resource-agents.metadata
index c27a2c8..943736b 100644
--- a/.resource-agents.metadata
+++ b/.resource-agents.metadata
@@ -1,5 +1,6 @@
 0358e1cb7fe86b2105bd2646cbe86f3c0273844a SOURCES/ClusterLabs-resource-agents-e711383f.tar.gz
 92409ca65e8f4e63d5c308368861fa67ced470f1 SOURCES/SAPHanaSR-2067519.tar.gz
+e5624e3028720d0d55ab3d598655a1938042e26c SOURCES/SAPHanaSR-ScaleOut-a77e8c6.tar.gz
 306e131d8908ca794276bfe3a0b55ccc3bbd482f SOURCES/aliyun-cli-2.1.10.tar.gz
 b68122ef53a0857d020529ff85d14f0e905c327f SOURCES/aliyun-python-sdk-core-2.8.5.tar.gz
 c2a98b9a1562d223a76514f05028488ca000c395 SOURCES/aliyun-python-sdk-ecs-4.9.3.tar.gz
@@ -10,3 +11,4 @@ f8fbedae53dd8f8b2717a32de9a9ae0e15cba566 SOURCES/jmespath-0.7.1.tar.gz
 326a73f58a62ebee00c11a12cfdd838b196e0e8e SOURCES/pycryptodome-3.6.4.tar.gz
 147149db11104c06d405fd077dcd2aa1c345f109 SOURCES/pyroute2-0.4.13.tar.gz
 731c683ecc63b50fbc0823170e966b74ec2a0f51 SOURCES/sap_cluster_connector-0015fe2.tar.gz
+4f1e98fe6ac60a513a1ce47b433b4fa637070be5 SOURCES/sap_cluster_connector-f3644f5.tar.gz
diff --git a/SOURCES/bz1692890-ocf_log-do-not-log-debug-when-HA_debug-unset.patch b/SOURCES/bz1692890-ocf_log-do-not-log-debug-when-HA_debug-unset.patch
new file mode 100644
index 0000000..4de33f1
--- /dev/null
+++ b/SOURCES/bz1692890-ocf_log-do-not-log-debug-when-HA_debug-unset.patch
@@ -0,0 +1,32 @@
+From aae26ca70ef910e83485778c1fb450941fe79e8a Mon Sep 17 00:00:00 2001
+From: Michele Baldessari <michele@acksyn.org>
+Date: Mon, 3 Dec 2018 16:48:14 +0100
+Subject: [PATCH] Do not log at debug log level when HA_debug is unset
+
+There might be situations (e.g. bundles) where the HA_debug variable
+is unset. It makes little sense to enable debug logging when the HA_debug env
+variable is unset.
+So let's skip debug logs when HA_debug is set to 0 or is unset.
+
+Tested inside a bundle and observed that previously seen 'ocf_log debug'
+calls are now correctly suppressed (w/ HA_debug being unset inside the
+container)
+
+Signed-off-by: Michele Baldessari <michele@acksyn.org>
+---
+ heartbeat/ocf-shellfuncs.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/heartbeat/ocf-shellfuncs.in b/heartbeat/ocf-shellfuncs.in
+index 043ab9bf2..b17297e1a 100644
+--- a/heartbeat/ocf-shellfuncs.in
++++ b/heartbeat/ocf-shellfuncs.in
+@@ -257,7 +257,7 @@ ha_log()
+ 
+ ha_debug() {
+ 
+-        if [ "x${HA_debug}" = "x0" ] ; then
++        if [ "x${HA_debug}" = "x0" ] || [ -z "${HA_debug}" ] ; then
+                 return 0
+         fi
+ 	if tty >/dev/null; then
diff --git a/SOURCES/bz1692973-tomcat-use-systemd-when-catalina.sh-unavailable.patch b/SOURCES/bz1692973-tomcat-use-systemd-when-catalina.sh-unavailable.patch
new file mode 100644
index 0000000..571196b
--- /dev/null
+++ b/SOURCES/bz1692973-tomcat-use-systemd-when-catalina.sh-unavailable.patch
@@ -0,0 +1,59 @@
+From b42ef7555de86cc29d165ae17682c223bfb23b6e Mon Sep 17 00:00:00 2001
+From: Oyvind Albrigtsen <oalbrigt@redhat.com>
+Date: Mon, 5 Nov 2018 16:38:01 +0100
+Subject: [PATCH 1/2] tomcat: use systemd on RHEL when catalina.sh is
+ unavailable
+
+---
+ heartbeat/tomcat | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/heartbeat/tomcat b/heartbeat/tomcat
+index 4812a0133..833870038 100755
+--- a/heartbeat/tomcat
++++ b/heartbeat/tomcat
+@@ -613,7 +613,6 @@ TOMCAT_NAME="${OCF_RESKEY_tomcat_name-tomcat}"
+ TOMCAT_CONSOLE="${OCF_RESKEY_script_log-/var/log/$TOMCAT_NAME.log}"
+ RESOURCE_TOMCAT_USER="${OCF_RESKEY_tomcat_user-root}"
+ RESOURCE_STATUSURL="${OCF_RESKEY_statusurl-http://127.0.0.1:8080}"
+-OCF_RESKEY_force_systemd_default=0
+ 
+ JAVA_HOME="${OCF_RESKEY_java_home}"
+ JAVA_OPTS="${OCF_RESKEY_java_opts}"
+@@ -630,6 +629,13 @@ if [ -z "$CATALINA_PID" ]; then
+ 	CATALINA_PID="${HA_RSCTMP}/${TOMCAT_NAME}_tomcatstate/catalina.pid"
+ fi
+ 
++# Only default to true for RedHat systems without catalina.sh
++if [ -e "$CATALINA_HOME/bin/catalina.sh" ] || ! is_redhat_based; then
++	OCF_RESKEY_force_systemd_default=0
++else
++	OCF_RESKEY_force_systemd_default=1
++fi
++
+ MAX_STOP_TIME="${OCF_RESKEY_max_stop_time}"
+ 
+ : ${OCF_RESKEY_force_systemd=${OCF_RESKEY_force_systemd_default}}
+
+From 9cb2b142a9ecb3a2d5a51cdd51b4005f08b9a97b Mon Sep 17 00:00:00 2001
+From: Oyvind Albrigtsen <oalbrigt@redhat.com>
+Date: Mon, 5 Nov 2018 17:09:43 +0100
+Subject: [PATCH 2/2] ocf-distro: add regex for RedHat version
+
+---
+ heartbeat/ocf-distro | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/heartbeat/ocf-distro b/heartbeat/ocf-distro
+index 530ee57ed..f69910c98 100644
+--- a/heartbeat/ocf-distro
++++ b/heartbeat/ocf-distro
+@@ -39,7 +39,7 @@ get_os_ver() {
+ 		VER=$(cat $_DEBIAN_VERSION_FILE)
+ 	elif [ -f $_REDHAT_RELEASE_FILE ]; then
+ 		OS=RedHat  # redhat or similar
+-		VER= # here some complex sed script
++		VER=$(sed "s/.* release \([^ ]\+\).*/\1/" $_REDHAT_RELEASE_FILE)
+ 	else
+ 		OS=$(uname -s)
+ 		VER=$(uname -r)
diff --git a/SOURCES/bz1711165-aws-vpc-move-ip-avoid-possible-race-condition.patch b/SOURCES/bz1711165-aws-vpc-move-ip-avoid-possible-race-condition.patch
new file mode 100644
index 0000000..8899055
--- /dev/null
+++ b/SOURCES/bz1711165-aws-vpc-move-ip-avoid-possible-race-condition.patch
@@ -0,0 +1,104 @@
+From 57f695d336cab33c61e754e463654ad6400f7b58 Mon Sep 17 00:00:00 2001
+From: gguifelixamz <fguilher@amazon.com>
+Date: Tue, 27 Nov 2018 17:06:05 +0000
+Subject: [PATCH 1/4] Enable --query flag in DescribeRouteTable API call to
+ avoid race condition with grep
+
+---
+ heartbeat/aws-vpc-move-ip | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/heartbeat/aws-vpc-move-ip b/heartbeat/aws-vpc-move-ip
+index 9b2043aca..d2aed7490 100755
+--- a/heartbeat/aws-vpc-move-ip
++++ b/heartbeat/aws-vpc-move-ip
+@@ -167,9 +167,10 @@ ec2ip_validate() {
+ ec2ip_monitor() {
+ 	if ocf_is_true ${OCF_RESKEY_monapi} || [ "$__OCF_ACTION" = "start" ] || ocf_is_probe; then
+ 		ocf_log info "monitor: check routing table (API call)"
+-		cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 describe-route-tables --route-table-ids $OCF_RESKEY_routing_table"
++                cmd=''$OCF_RESKEY_awscli' --profile '$OCF_RESKEY_profile' --output text ec2 describe-route-tables --route-table-ids '$OCF_RESKEY_routing_table' --query 'RouteTables[*].Routes[?DestinationCidrBlock==\`$OCF_RESKEY_address/32\`].InstanceId''
+ 		ocf_log debug "executing command: $cmd"
+-		ROUTE_TO_INSTANCE="$($cmd | grep $OCF_RESKEY_ip | awk '{ print $3 }')"
++                ROUTE_TO_INSTANCE=$($cmd)
++                ocf_log debug "Overlay IP is currently routed to ${ROUTE_TO_INSTANCE}"
+ 		if [ -z "$ROUTE_TO_INSTANCE" ]; then
+ 			ROUTE_TO_INSTANCE="<unknown>"
+ 		fi
+
+From 4d6371aca5dca35b902a480e07a08c1dc3373ca5 Mon Sep 17 00:00:00 2001
+From: gguifelixamz <fguilher@amazon.com>
+Date: Thu, 29 Nov 2018 11:39:26 +0000
+Subject: [PATCH 2/4] aws-vpc-move-ip: Fixed outer quotes and removed inner
+ quotes
+
+---
+ heartbeat/aws-vpc-move-ip | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/heartbeat/aws-vpc-move-ip b/heartbeat/aws-vpc-move-ip
+index d2aed7490..ced69bd13 100755
+--- a/heartbeat/aws-vpc-move-ip
++++ b/heartbeat/aws-vpc-move-ip
+@@ -167,7 +167,7 @@ ec2ip_validate() {
+ ec2ip_monitor() {
+ 	if ocf_is_true ${OCF_RESKEY_monapi} || [ "$__OCF_ACTION" = "start" ] || ocf_is_probe; then
+ 		ocf_log info "monitor: check routing table (API call)"
+-                cmd=''$OCF_RESKEY_awscli' --profile '$OCF_RESKEY_profile' --output text ec2 describe-route-tables --route-table-ids '$OCF_RESKEY_routing_table' --query 'RouteTables[*].Routes[?DestinationCidrBlock==\`$OCF_RESKEY_address/32\`].InstanceId''
++                cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 describe-route-tables --route-table-ids $OCF_RESKEY_routing_table --query RouteTables[*].Routes[?DestinationCidrBlock==\`$OCF_RESKEY_address/32\`].InstanceId"
+ 		ocf_log debug "executing command: $cmd"
+                 ROUTE_TO_INSTANCE=$($cmd)
+                 ocf_log debug "Overlay IP is currently routed to ${ROUTE_TO_INSTANCE}"
+
+From 09f4b061690a0e681aaf7314f1fc3e6f4e597cc8 Mon Sep 17 00:00:00 2001
+From: gguifelixamz <fguilher@amazon.com>
+Date: Thu, 29 Nov 2018 11:55:05 +0000
+Subject: [PATCH 3/4] aws-vpc-move-ip: Replaced indentation spaces with tabs
+ for consistency with the rest of the code
+
+---
+ heartbeat/aws-vpc-move-ip | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/heartbeat/aws-vpc-move-ip b/heartbeat/aws-vpc-move-ip
+index ced69bd13..3e827283e 100755
+--- a/heartbeat/aws-vpc-move-ip
++++ b/heartbeat/aws-vpc-move-ip
+@@ -167,10 +167,10 @@ ec2ip_validate() {
+ ec2ip_monitor() {
+ 	if ocf_is_true ${OCF_RESKEY_monapi} || [ "$__OCF_ACTION" = "start" ] || ocf_is_probe; then
+ 		ocf_log info "monitor: check routing table (API call)"
+-                cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 describe-route-tables --route-table-ids $OCF_RESKEY_routing_table --query RouteTables[*].Routes[?DestinationCidrBlock==\`$OCF_RESKEY_address/32\`].InstanceId"
++		cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 describe-route-tables --route-table-ids $OCF_RESKEY_routing_table --query RouteTables[*].Routes[?DestinationCidrBlock==\`$OCF_RESKEY_address/32\`].InstanceId"
+ 		ocf_log debug "executing command: $cmd"
+-                ROUTE_TO_INSTANCE=$($cmd)
+-                ocf_log debug "Overlay IP is currently routed to ${ROUTE_TO_INSTANCE}"
++		ROUTE_TO_INSTANCE=$($cmd)
++		ocf_log debug "Overlay IP is currently routed to ${ROUTE_TO_INSTANCE}"
+ 		if [ -z "$ROUTE_TO_INSTANCE" ]; then
+ 			ROUTE_TO_INSTANCE="<unknown>"
+ 		fi
+
+From fcf85551ce70cb4fb7ce24e21c361fdbe6fcce6b Mon Sep 17 00:00:00 2001
+From: gguifelixamz <fguilher@amazon.com>
+Date: Thu, 29 Nov 2018 13:07:32 +0000
+Subject: [PATCH 4/4] aws-vpc-move-ip: In cmd variable on ec2ip_monitor():
+ replaced _address with _ip and modified to use single quotes
+
+---
+ heartbeat/aws-vpc-move-ip | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/heartbeat/aws-vpc-move-ip b/heartbeat/aws-vpc-move-ip
+index 3e827283e..331ee184f 100755
+--- a/heartbeat/aws-vpc-move-ip
++++ b/heartbeat/aws-vpc-move-ip
+@@ -167,7 +167,7 @@ ec2ip_validate() {
+ ec2ip_monitor() {
+ 	if ocf_is_true ${OCF_RESKEY_monapi} || [ "$__OCF_ACTION" = "start" ] || ocf_is_probe; then
+ 		ocf_log info "monitor: check routing table (API call)"
+-		cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 describe-route-tables --route-table-ids $OCF_RESKEY_routing_table --query RouteTables[*].Routes[?DestinationCidrBlock==\`$OCF_RESKEY_address/32\`].InstanceId"
++		cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 describe-route-tables --route-table-ids $OCF_RESKEY_routing_table --query RouteTables[*].Routes[?DestinationCidrBlock=='$OCF_RESKEY_ip/32'].InstanceId"
+ 		ocf_log debug "executing command: $cmd"
+ 		ROUTE_TO_INSTANCE=$($cmd)
+ 		ocf_log debug "Overlay IP is currently routed to ${ROUTE_TO_INSTANCE}"
diff --git a/SOURCES/bz1711925-aws-vpc-move-ip-1-multi-route-table-support.patch b/SOURCES/bz1711925-aws-vpc-move-ip-1-multi-route-table-support.patch
new file mode 100644
index 0000000..b724aa3
--- /dev/null
+++ b/SOURCES/bz1711925-aws-vpc-move-ip-1-multi-route-table-support.patch
@@ -0,0 +1,122 @@
+--- a/heartbeat/aws-vpc-move-ip	2019-05-20 10:54:01.527329668 +0200
++++ b/heartbeat/aws-vpc-move-ip	2019-05-20 11:33:35.386089091 +0200
+@@ -93,11 +93,19 @@
+ <content type="string" default="" />
+ </parameter>
+ 
++<parameter name="address">
++<longdesc lang="en">
++Deprecated IP address param. Use the ip param instead.
++</longdesc>
++<shortdesc lang="en">Deprecated VPC private IP Address</shortdesc>
++<content type="string" default="" />
++</parameter>
++
+ <parameter name="routing_table" required="1">
+ <longdesc lang="en">
+-Name of the routing table, where the route for the IP address should be changed, i.e. rtb-...
++Name of the routing table(s), where the route for the IP address should be changed. If declaring multiple routing tables they should be separated by comma. Example: rtb-XXXXXXXX,rtb-YYYYYYYYY
+ </longdesc>
+-<shortdesc lang="en">routing table name</shortdesc>
++<shortdesc lang="en">routing table name(s)</shortdesc>
+ <content type="string" default="" />
+ </parameter>
+ 
+@@ -129,6 +137,13 @@
+ END
+ }
+ 
++ec2ip_set_address_param_compat(){
++	# Include backward compatibility for the deprecated address parameter
++	if [ -z  "$OCF_RESKEY_ip" ] && [ -n "$OCF_RESKEY_address" ]; then
++		OCF_RESKEY_ip="$OCF_RESKEY_address"
++	fi
++}
++
+ ec2ip_validate() {
+ 	for cmd in aws ip curl; do
+ 		check_binary "$cmd"
+@@ -150,20 +165,29 @@
+ }
+ 
+ ec2ip_monitor() {
+-	if ocf_is_true ${OCF_RESKEY_monapi} || [ "$__OCF_ACTION" = "start" ]; then
+-		ocf_log info "monitor: check routing table (API call)"
+-		cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 describe-route-tables --route-table-ids $OCF_RESKEY_routing_table --query RouteTables[*].Routes[?DestinationCidrBlock=='$OCF_RESKEY_ip/32'].InstanceId"
+-		ocf_log debug "executing command: $cmd"
+-		ROUTE_TO_INSTANCE=$($cmd)
+-		ocf_log debug "Overlay IP is currently routed to ${ROUTE_TO_INSTANCE}"
+-		if [ -z "$ROUTE_TO_INSTANCE" ]; then
+-			ROUTE_TO_INSTANCE="<unknown>"
+-		fi
++        MON_RES=""
++	if ocf_is_true ${OCF_RESKEY_monapi} || [ "$__OCF_ACTION" = "start" ] || ocf_is_probe; then
++		for rtb in $(echo $OCF_RESKEY_routing_table | sed -e 's/,/ /g'); do
++			ocf_log info "monitor: check routing table (API call) - $rtb"
++			cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 describe-route-tables --route-table-ids $rtb --query RouteTables[*].Routes[?DestinationCidrBlock=='$OCF_RESKEY_ip/32'].InstanceId"
++			ocf_log debug "executing command: $cmd"
++			ROUTE_TO_INSTANCE="$($cmd)"
++			ocf_log debug "Overlay IP is currently routed to ${ROUTE_TO_INSTANCE}"
++			if [ -z "$ROUTE_TO_INSTANCE" ]; then
++				ROUTE_TO_INSTANCE="<unknown>"
++			fi
++
++			if [ "$EC2_INSTANCE_ID" != "$ROUTE_TO_INSTANCE" ]; then 
++				ocf_log warn "not routed to this instance ($EC2_INSTANCE_ID) but to instance $ROUTE_TO_INSTANCE on $rtb"
++				MON_RES="$MON_RES $rtb"
++			fi
++			sleep 1
++		done
+ 
+-		if [ "$EC2_INSTANCE_ID" != "$ROUTE_TO_INSTANCE" ];then 
+-			ocf_log warn "not routed to this instance ($EC2_INSTANCE_ID) but to instance $ROUTE_TO_INSTANCE"
++		if [ ! -z "$MON_RES" ]; then
+ 			return $OCF_NOT_RUNNING
+ 		fi
++
+ 	else
+ 		ocf_log debug "monitor: Enhanced Monitoring disabled - omitting API call"
+ 	fi
+@@ -195,19 +219,23 @@
+ }
+ 
+ ec2ip_get_and_configure() {
+-	# Adjusting the routing table
+-	cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile ec2 replace-route --route-table-id $OCF_RESKEY_routing_table --destination-cidr-block ${OCF_RESKEY_ip}/32 --instance-id $EC2_INSTANCE_ID"
+-	ocf_log debug "executing command: $cmd"
+-	$cmd
+-	rc=$?
+-	if [ "$rc" != 0 ]; then
+-		ocf_log warn "command failed, rc: $rc"
+-		return $OCF_ERR_GENERIC
+-	fi
++	for rtb in $(echo $OCF_RESKEY_routing_table | sed -e 's/,/ /g'); do
++		cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 replace-route --route-table-id $rtb --destination-cidr-block ${OCF_RESKEY_ip}/32 --instance-id $EC2_INSTANCE_ID"
++		ocf_log debug "executing command: $cmd"
++		$cmd
++		rc=$?
++		if [ "$rc" != 0 ]; then
++			ocf_log warn "command failed, rc: $rc"
++			return $OCF_ERR_GENERIC
++		fi
++		sleep 1
++	done
+ 
+ 	# Reconfigure the local ip address
+ 	ec2ip_drop
+-	ip addr add "${OCF_RESKEY_ip}/32" dev $OCF_RESKEY_interface
++	cmd="ip addr add ${OCF_RESKEY_ip}/32 dev $OCF_RESKEY_interface"
++	ocf_log debug "executing command: $cmd"
++	$cmd
+ 	rc=$?
+ 	if [ $rc != 0 ]; then
+ 		ocf_log warn "command failed, rc: $rc"
+@@ -289,6 +317,8 @@
+ 	exit $OCF_ERR_PERM
+ fi
+ 
++ec2ip_set_address_param_compat
++
+ ec2ip_validate
+ 
+ case $__OCF_ACTION in
diff --git a/SOURCES/bz1711925-aws-vpc-move-ip-2-fix-route-update-multi-NICs.patch b/SOURCES/bz1711925-aws-vpc-move-ip-2-fix-route-update-multi-NICs.patch
new file mode 100644
index 0000000..c283801
--- /dev/null
+++ b/SOURCES/bz1711925-aws-vpc-move-ip-2-fix-route-update-multi-NICs.patch
@@ -0,0 +1,221 @@
+From 9f2b9cc09f7e2df163ff95585374f860f3dc58eb Mon Sep 17 00:00:00 2001
+From: Tomas Krojzl <tomas_krojzl@cz.ibm.com>
+Date: Tue, 16 Apr 2019 18:40:29 +0200
+Subject: [PATCH 1/6] Fix for VM having multiple network interfaces
+
+---
+ heartbeat/aws-vpc-move-ip | 22 +++++++++++++++++++++-
+ 1 file changed, 21 insertions(+), 1 deletion(-)
+
+diff --git a/heartbeat/aws-vpc-move-ip b/heartbeat/aws-vpc-move-ip
+index 090956434..a91c2dd11 100755
+--- a/heartbeat/aws-vpc-move-ip
++++ b/heartbeat/aws-vpc-move-ip
+@@ -219,8 +219,28 @@ ec2ip_drop() {
+ }
+ 
+ ec2ip_get_and_configure() {
++	cmd="ip -br link show dev $OCF_RESKEY_interface | tr -s ' ' | cut -d' ' -f3"
++	ocf_log debug "executing command: $cmd"
++	MAC_ADDR="$(eval $cmd)"
++	rc=$?
++	if [ $rc != 0 ]; then
++		ocf_log warn "command failed, rc: $rc"
++		return $OCF_ERR_GENERIC
++	fi
++  ocf_log debug "MAC address associated with interface ${OCF_RESKEY_interface}: ${MAC_ADDR}"
++
++	cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 describe-instances --instance-ids $EC2_INSTANCE_ID --query 'Reservations[*].Instances[*].NetworkInterfaces[*].[NetworkInterfaceId,MacAddress]' | grep ${MAC_ADDR} | cut -f1"
++	ocf_log debug "executing command: $cmd"
++	EC2_NETWORK_INTERFACE_ID="$(eval $cmd)"
++	rc=$?
++	if [ $rc != 0 ]; then
++		ocf_log warn "command failed, rc: $rc"
++		return $OCF_ERR_GENERIC
++	fi
++  ocf_log debug "network interface id associated MAC address ${MAC_ADDR}: ${EC2_NETWORK_INTERFACE_ID}"
++
+ 	for rtb in $(echo $OCF_RESKEY_routing_table | sed -e 's/,/ /g'); do
+-		cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 replace-route --route-table-id $rtb --destination-cidr-block ${OCF_RESKEY_ip}/32 --instance-id $EC2_INSTANCE_ID"
++		cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 replace-route --route-table-id $rtb --destination-cidr-block ${OCF_RESKEY_ip}/32 --network-interface-id $EC2_NETWORK_INTERFACE_ID"
+ 		ocf_log debug "executing command: $cmd"
+ 		$cmd
+ 		rc=$?
+
+From a871a463134ebb2456b5f37a343bf9034f5f4074 Mon Sep 17 00:00:00 2001
+From: krojzl <tomas_krojzl@cz.ibm.com>
+Date: Tue, 16 Apr 2019 18:49:32 +0200
+Subject: [PATCH 2/6] Fixing indentation
+
+---
+ heartbeat/aws-vpc-move-ip | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/heartbeat/aws-vpc-move-ip b/heartbeat/aws-vpc-move-ip
+index a91c2dd11..a46d10d30 100755
+--- a/heartbeat/aws-vpc-move-ip
++++ b/heartbeat/aws-vpc-move-ip
+@@ -227,7 +227,7 @@ ec2ip_get_and_configure() {
+ 		ocf_log warn "command failed, rc: $rc"
+ 		return $OCF_ERR_GENERIC
+ 	fi
+-  ocf_log debug "MAC address associated with interface ${OCF_RESKEY_interface}: ${MAC_ADDR}"
++	ocf_log debug "MAC address associated with interface ${OCF_RESKEY_interface}: ${MAC_ADDR}"
+ 
+ 	cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 describe-instances --instance-ids $EC2_INSTANCE_ID --query 'Reservations[*].Instances[*].NetworkInterfaces[*].[NetworkInterfaceId,MacAddress]' | grep ${MAC_ADDR} | cut -f1"
+ 	ocf_log debug "executing command: $cmd"
+@@ -237,7 +237,7 @@ ec2ip_get_and_configure() {
+ 		ocf_log warn "command failed, rc: $rc"
+ 		return $OCF_ERR_GENERIC
+ 	fi
+-  ocf_log debug "network interface id associated MAC address ${MAC_ADDR}: ${EC2_NETWORK_INTERFACE_ID}"
++	ocf_log debug "network interface id associated MAC address ${MAC_ADDR}: ${EC2_NETWORK_INTERFACE_ID}"
+ 
+ 	for rtb in $(echo $OCF_RESKEY_routing_table | sed -e 's/,/ /g'); do
+ 		cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 replace-route --route-table-id $rtb --destination-cidr-block ${OCF_RESKEY_ip}/32 --network-interface-id $EC2_NETWORK_INTERFACE_ID"
+
+From 068680427dff620a948ae25f090bc154b02f17b9 Mon Sep 17 00:00:00 2001
+From: krojzl <tomas_krojzl@cz.ibm.com>
+Date: Wed, 17 Apr 2019 14:22:31 +0200
+Subject: [PATCH 3/6] Requested fix to avoid using AWS API
+
+---
+ heartbeat/aws-vpc-move-ip | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/heartbeat/aws-vpc-move-ip b/heartbeat/aws-vpc-move-ip
+index a46d10d30..2910552f2 100755
+--- a/heartbeat/aws-vpc-move-ip
++++ b/heartbeat/aws-vpc-move-ip
+@@ -229,7 +229,7 @@ ec2ip_get_and_configure() {
+ 	fi
+ 	ocf_log debug "MAC address associated with interface ${OCF_RESKEY_interface}: ${MAC_ADDR}"
+ 
+-	cmd="$OCF_RESKEY_awscli --profile $OCF_RESKEY_profile --output text ec2 describe-instances --instance-ids $EC2_INSTANCE_ID --query 'Reservations[*].Instances[*].NetworkInterfaces[*].[NetworkInterfaceId,MacAddress]' | grep ${MAC_ADDR} | cut -f1"
++	cmd="curl -s http://169.254.169.254/latest/meta-data/network/interfaces/macs/${MAC_ADDR}/interface-id"
+ 	ocf_log debug "executing command: $cmd"
+ 	EC2_NETWORK_INTERFACE_ID="$(eval $cmd)"
+ 	rc=$?
+
+From 207a2ba66ba7196180d27674aa204980fcd25de2 Mon Sep 17 00:00:00 2001
+From: krojzl <tomas_krojzl@cz.ibm.com>
+Date: Fri, 19 Apr 2019 11:14:21 +0200
+Subject: [PATCH 4/6] More robust approach of getting MAC address
+
+---
+ heartbeat/aws-vpc-move-ip | 29 +++++++++++++++++++++--------
+ 1 file changed, 21 insertions(+), 8 deletions(-)
+
+diff --git a/heartbeat/aws-vpc-move-ip b/heartbeat/aws-vpc-move-ip
+index 2910552f2..3a848b7e3 100755
+--- a/heartbeat/aws-vpc-move-ip
++++ b/heartbeat/aws-vpc-move-ip
+@@ -219,15 +219,28 @@ ec2ip_drop() {
+ }
+ 
+ ec2ip_get_and_configure() {
+-	cmd="ip -br link show dev $OCF_RESKEY_interface | tr -s ' ' | cut -d' ' -f3"
+-	ocf_log debug "executing command: $cmd"
+-	MAC_ADDR="$(eval $cmd)"
+-	rc=$?
+-	if [ $rc != 0 ]; then
+-		ocf_log warn "command failed, rc: $rc"
+-		return $OCF_ERR_GENERIC
++	MAC_FILE="/sys/class/net/${OCF_RESKEY_interface}/address"
++	if [ -f $MAC_FILE ]; then
++		cmd="cat ${MAC_FILE}"
++		ocf_log debug "executing command: $cmd"
++		MAC_ADDR="$(eval $cmd)"
++		rc=$?
++		if [ $rc != 0 ]; then
++			ocf_log warn "command failed, rc: $rc"
++			return $OCF_ERR_GENERIC
++		fi
++		ocf_log debug "MAC address associated with interface ${OCF_RESKEY_interface}: ${MAC_ADDR}"
++	else
++		cmd="ip -br link show dev ${OCF_RESKEY_interface} | tr -s ' ' | cut -d' ' -f3"
++		ocf_log debug "executing command: $cmd"
++		MAC_ADDR="$(eval $cmd)"
++		rc=$?
++		if [ $rc != 0 ]; then
++			ocf_log warn "command failed, rc: $rc"
++			return $OCF_ERR_GENERIC
++		fi
++		ocf_log debug "MAC address associated with interface ${OCF_RESKEY_interface}: ${MAC_ADDR}"
+ 	fi
+-	ocf_log debug "MAC address associated with interface ${OCF_RESKEY_interface}: ${MAC_ADDR}"
+ 
+ 	cmd="curl -s http://169.254.169.254/latest/meta-data/network/interfaces/macs/${MAC_ADDR}/interface-id"
+ 	ocf_log debug "executing command: $cmd"
+
+From cdcc12a9c1431125b0d5298176e5242bfc9fbe29 Mon Sep 17 00:00:00 2001
+From: krojzl <tomas_krojzl@cz.ibm.com>
+Date: Fri, 19 Apr 2019 11:20:09 +0200
+Subject: [PATCH 5/6] Moving shared part outside if
+
+---
+ heartbeat/aws-vpc-move-ip | 25 +++++++++----------------
+ 1 file changed, 9 insertions(+), 16 deletions(-)
+
+diff --git a/heartbeat/aws-vpc-move-ip b/heartbeat/aws-vpc-move-ip
+index 3a848b7e3..bfe23e5bf 100755
+--- a/heartbeat/aws-vpc-move-ip
++++ b/heartbeat/aws-vpc-move-ip
+@@ -222,26 +222,19 @@ ec2ip_get_and_configure() {
+ 	MAC_FILE="/sys/class/net/${OCF_RESKEY_interface}/address"
+ 	if [ -f $MAC_FILE ]; then
+ 		cmd="cat ${MAC_FILE}"
+-		ocf_log debug "executing command: $cmd"
+-		MAC_ADDR="$(eval $cmd)"
+-		rc=$?
+-		if [ $rc != 0 ]; then
+-			ocf_log warn "command failed, rc: $rc"
+-			return $OCF_ERR_GENERIC
+-		fi
+-		ocf_log debug "MAC address associated with interface ${OCF_RESKEY_interface}: ${MAC_ADDR}"
+ 	else
+ 		cmd="ip -br link show dev ${OCF_RESKEY_interface} | tr -s ' ' | cut -d' ' -f3"
+-		ocf_log debug "executing command: $cmd"
+-		MAC_ADDR="$(eval $cmd)"
+-		rc=$?
+-		if [ $rc != 0 ]; then
+-			ocf_log warn "command failed, rc: $rc"
+-			return $OCF_ERR_GENERIC
+-		fi
+-		ocf_log debug "MAC address associated with interface ${OCF_RESKEY_interface}: ${MAC_ADDR}"
+ 	fi
+ 
++	ocf_log debug "executing command: $cmd"
++	MAC_ADDR="$(eval $cmd)"
++	rc=$?
++	if [ $rc != 0 ]; then
++		ocf_log warn "command failed, rc: $rc"
++		return $OCF_ERR_GENERIC
++	fi
++	ocf_log debug "MAC address associated with interface ${OCF_RESKEY_interface}: ${MAC_ADDR}"
++
+ 	cmd="curl -s http://169.254.169.254/latest/meta-data/network/interfaces/macs/${MAC_ADDR}/interface-id"
+ 	ocf_log debug "executing command: $cmd"
+ 	EC2_NETWORK_INTERFACE_ID="$(eval $cmd)"
+
+From c3fc114fc64f6feb015c5342923fd2afc367ae28 Mon Sep 17 00:00:00 2001
+From: krojzl <tomas_krojzl@cz.ibm.com>
+Date: Fri, 19 Apr 2019 11:22:55 +0200
+Subject: [PATCH 6/6] Linting adjustment
+
+---
+ heartbeat/aws-vpc-move-ip | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/heartbeat/aws-vpc-move-ip b/heartbeat/aws-vpc-move-ip
+index bfe23e5bf..2757c27d0 100755
+--- a/heartbeat/aws-vpc-move-ip
++++ b/heartbeat/aws-vpc-move-ip
+@@ -225,7 +225,6 @@ ec2ip_get_and_configure() {
+ 	else
+ 		cmd="ip -br link show dev ${OCF_RESKEY_interface} | tr -s ' ' | cut -d' ' -f3"
+ 	fi
+-
+ 	ocf_log debug "executing command: $cmd"
+ 	MAC_ADDR="$(eval $cmd)"
+ 	rc=$?
diff --git a/SOURCES/bz1721274-SAPHanaSR-monitor-fix-tolower-error.patch b/SOURCES/bz1721274-SAPHanaSR-monitor-fix-tolower-error.patch
new file mode 100644
index 0000000..57e0a6f
--- /dev/null
+++ b/SOURCES/bz1721274-SAPHanaSR-monitor-fix-tolower-error.patch
@@ -0,0 +1,23 @@
+From 9eafa6e3dd9735bdd1e4e447d9e8c3d4da1e9c30 Mon Sep 17 00:00:00 2001
+From: Oyvind Albrigtsen <oalbrigt@redhat.com>
+Date: Thu, 27 Jun 2019 10:38:46 +0200
+Subject: [PATCH] SAPHanaSR-monitor: fix tolower() issue, which seems to be an
+ artifact from a2p (Awk to Perl)
+
+---
+ SAPHana/bin/SAPHanaSR-monitor | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/SAPHanaSR-ScaleOut-a77e8c6/SAPHana/bin/SAPHanaSR-monitor b/SAPHanaSR-ScaleOut-a77e8c6/SAPHana/bin/SAPHanaSR-monitor
+index 737545c..da6bf08 100755
+--- a/SAPHanaSR-ScaleOut-a77e8c6/SAPHana/bin/SAPHanaSR-monitor
++++ b/SAPHanaSR-ScaleOut-a77e8c6/SAPHana/bin/SAPHanaSR-monitor
+@@ -219,7 +219,7 @@ sub processMonitor() {
+     #
+     $sid=$sids[0];   # currently ony one sid is supported
+     ( $sid, $ino ) = split(":", $sid);
+-    $sid=tolower("$sid");
++    $sid=lc("$sid");
+     get_hana_attributes($sid, \%Host, \%HName, \%Global, \%GName, \%Site,   \%SName);
+     if ( keys(%Host) == 0 ) {
+         printf "No attributes found for SID=%s\n", $sid;
diff --git a/SPECS/resource-agents.spec b/SPECS/resource-agents.spec
index 6c6b664..0c717c3 100644
--- a/SPECS/resource-agents.spec
+++ b/SPECS/resource-agents.spec
@@ -41,9 +41,15 @@
 %global sap_script_prefix sap_cluster_connector
 %global sap_script_hash 0015fe2
 
+%global sap_script_package_prefix sap_cluster_connector
+%global sap_script_package_hash f3644f5
+
 %global saphana_prefix SAPHanaSR
 %global saphana_hash 2067519
 
+%global saphana_scaleout_prefix SAPHanaSR-ScaleOut
+%global saphana_scaleout_hash a77e8c6
+
 %global bundled_lib_dir		bundled
 # google-cloud-sdk bundle
 %global googlecloudsdk		google-cloud-sdk
@@ -89,7 +95,7 @@
 Name:		resource-agents
 Summary:	Open Source HA Reusable Cluster Resource Scripts
 Version:	4.1.1
-Release:	12%{?dist}.8
+Release:	12%{?dist}.19
 License:	GPLv2+ and LGPLv2+ and ASL 2.0
 URL:		https://github.com/ClusterLabs/resource-agents
 %if 0%{?fedora} || 0%{?centos_version} || 0%{?rhel}
@@ -99,16 +105,18 @@ Group:		Productivity/Clustering/HA
 %endif
 Source0:	%{upstream_prefix}-%{upstream_version}.tar.gz
 Source1:	%{sap_script_prefix}-%{sap_script_hash}.tar.gz
-Source2:	%{saphana_prefix}-%{saphana_hash}.tar.gz
-Source3:	%{googlecloudsdk}-%{googlecloudsdk_version}-linux-x86_64.tar.gz
-Source4:	%{pyroute2}-%{pyroute2_version}.tar.gz
-Source5:	%{colorama}-%{colorama_version}.tar.gz
-Source6:	%{jmespath}-%{jmespath_version}.tar.gz
-Source7:	%{pycryptodome}-%{pycryptodome_version}.tar.gz
-Source8:	%{aliyunsdkcore}-%{aliyunsdkcore_version}.tar.gz
-Source9:	%{aliyunsdkecs}-%{aliyunsdkecs_version}.tar.gz
-Source10:	%{aliyunsdkvpc}-%{aliyunsdkvpc_version}.tar.gz
-Source11:	%{aliyuncli}-%{aliyuncli_version}.tar.gz
+Source2:	%{sap_script_package_prefix}-%{sap_script_package_hash}.tar.gz
+Source3:	%{saphana_prefix}-%{saphana_hash}.tar.gz
+Source4:	%{saphana_scaleout_prefix}-%{saphana_scaleout_hash}.tar.gz
+Source5:	%{googlecloudsdk}-%{googlecloudsdk_version}-linux-x86_64.tar.gz
+Source6:	%{pyroute2}-%{pyroute2_version}.tar.gz
+Source7:	%{colorama}-%{colorama_version}.tar.gz
+Source8:	%{jmespath}-%{jmespath_version}.tar.gz
+Source9:	%{pycryptodome}-%{pycryptodome_version}.tar.gz
+Source10:	%{aliyunsdkcore}-%{aliyunsdkcore_version}.tar.gz
+Source11:	%{aliyunsdkecs}-%{aliyunsdkecs_version}.tar.gz
+Source12:	%{aliyunsdkvpc}-%{aliyunsdkvpc_version}.tar.gz
+Source13:	%{aliyuncli}-%{aliyuncli_version}.tar.gz
 Patch0:		bz1596139-1-nova-compute-wait-NovaEvacuate.patch
 Patch1:		bz1470840-LVM-volume_group_check_only.patch
 Patch2:		bz1538689-vdo-vol.patch
@@ -142,6 +150,14 @@ Patch29:	bz1641946-1-rabbitmq-cluster-fail-in-minority-partition.patch
 Patch30:	bz1641946-2-rabbitmq-cluster-fix-stop-regression.patch
 Patch31:	bz1657138-rabbitmq-cluster-ensure-node-attribures-removed.patch
 Patch32:	bz1656733-rabbitmq-cluster-retry-start-cluster-join-fails.patch
+#Patch33:	bz1692889-1-rabbitmq-cluster-debug-log-mnesia-query-fails.patch
+#Patch34:	bz1692889-2-rabbitmq-cluster-suppress-additional-output.patch
+Patch35:	bz1692890-ocf_log-do-not-log-debug-when-HA_debug-unset.patch
+Patch36:	bz1692973-tomcat-use-systemd-when-catalina.sh-unavailable.patch
+Patch37:	bz1711165-aws-vpc-move-ip-avoid-possible-race-condition.patch
+Patch38:	bz1711925-aws-vpc-move-ip-1-multi-route-table-support.patch
+Patch39:	bz1711925-aws-vpc-move-ip-2-fix-route-update-multi-NICs.patch
+Patch40:	bz1721274-SAPHanaSR-monitor-fix-tolower-error.patch
 # bundle patches
 Patch1000:	bz1568588-7-gcp-bundled.patch
 Patch1001:	bz1568588-8-google-cloud-sdk-fixes.patch
@@ -330,6 +346,45 @@ The SAP HANA resource agents interface with  Pacemaker to allow
 SAP instances to be managed in a cluster environment.
 %endif
 
+%ifarch x86_64 ppc64le
+%package sap-hana-scaleout
+License:	GPLv2+
+Summary:	SAP HANA Scale-Out cluster resource agents
+Version:	0.163.2
+Release:	1%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist}.5
+%if 0%{?fedora} || 0%{?centos_version} || 0%{?rhel}
+Group:		System Environment/Base
+%else
+Group:		Productivity/Clustering/HA
+%endif
+Requires:	resource-agents >= 4.1.1-12
+Requires:	perl
+
+%description sap-hana-scaleout
+The SAP HANA Scale-Out resource agents interface with Pacemaker
+to allow SAP HANA Scale-Out instances to be managed in a cluster
+environment.
+%endif
+
+%ifarch x86_64 ppc64le
+%package -n sap-cluster-connector
+License:	GPLv2+
+Summary:	SAP cluster connector script
+Version:	3.0.1
+Release:	1%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist}.5
+%if 0%{?fedora} || 0%{?centos_version} || 0%{?rhel}
+Group:		System Environment/Base
+%else
+Group:		Productivity/Clustering/HA
+%endif
+Requires:	resource-agents-sap >= 4.1.1-12
+Requires:	perl
+
+%description -n sap-cluster-connector
+The SAP connector script interface with Pacemaker to allow SAP
+instances to be managed in a cluster environment.
+%endif
+
 %prep
 %if 0%{?suse_version} == 0 && 0%{?fedora} == 0 && 0%{?centos_version} == 0 && 0%{?rhel} == 0
 %{error:Unable to determine the distribution/version. This is generally caused by missing /etc/rpm/macros.dist. Please install the correct build packages or define the required macros manually.}
@@ -338,6 +393,8 @@ exit 1
 %setup -q -n %{upstream_prefix}-%{upstream_version}
 %setup -T -D -a 1 -n %{upstream_prefix}-%{upstream_version}
 %setup -T -D -a 2 -n %{upstream_prefix}-%{upstream_version}
+%setup -T -D -a 3 -n %{upstream_prefix}-%{upstream_version}
+%setup -T -D -a 4 -n %{upstream_prefix}-%{upstream_version}
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
@@ -371,18 +428,29 @@ exit 1
 %patch30 -p1
 %patch31 -p1
 %patch32 -p1
+#%patch33 -p1
+#%patch34 -p1
+%patch35 -p1
+%patch36 -p1
+%patch37 -p1 -F2
+%patch38 -p1
+%patch39 -p1
+%patch40 -p1
 
 # add SAPHana agents to Makefile.am
 mv %{saphana_prefix}-%{saphana_hash}/SAPHana/ra/SAPHana* heartbeat
-sed -i -e '/			SAPInstance		\\/a\			SAPHana			\\\n			SAPHanaTopology		\\' heartbeat/Makefile.am
-sed -i -e '/                          ocf_heartbeat_SAPInstance.7 \\/a\                          ocf_heartbeat_SAPHana.7 \\\n                          ocf_heartbeat_SAPHanaTopology.7 \\' doc/man/Makefile.am
+mv %{saphana_scaleout_prefix}-%{saphana_scaleout_hash}/SAPHana/ra/SAPHanaController heartbeat
+mv %{saphana_scaleout_prefix}-%{saphana_scaleout_hash}/SAPHana/ra/SAPHanaTopology heartbeat/SAPHanaTopologyScaleOut
+sed -i -e 's/\(<resource-agent name="SAPHanaTopology\)/\1ScaleOut/' heartbeat/SAPHanaTopologyScaleOut
+sed -i -e '/			SAPInstance		\\/a\			SAPHana			\\\n			SAPHanaTopology		\\\n			SAPHanaController	\\\n			SAPHanaTopologyScaleOut	\\' heartbeat/Makefile.am
+sed -i -e '/                          ocf_heartbeat_SAPInstance.7 \\/a\                          ocf_heartbeat_SAPHana.7 \\\n                          ocf_heartbeat_SAPHanaTopology.7 \\\n                          ocf_heartbeat_SAPHanaController.7 \\\n                          ocf_heartbeat_SAPHanaTopologyScaleOut.7 \\' doc/man/Makefile.am
 
 # bundles
 mkdir -p %{bundled_lib_dir}
 
 # google-cloud-sdk bundle
 %ifarch x86_64
-tar -xzf %SOURCE3 -C %{bundled_lib_dir}
+tar -xzf %SOURCE5 -C %{bundled_lib_dir}
 # gcp*: append bundled-directory to search path, gcloud-ra
 %patch1000 -p1
 # google-cloud-sdk fixes
@@ -452,7 +520,7 @@ cp %{googlecloudsdk_dir}/lib/third_party/containerregistry/LICENSE %{googlecloud
 cp %{googlecloudsdk_dir}/lib/third_party/prompt_toolkit/LICENSE %{googlecloudsdk}_prompt_toolkit_LICENSE
 
 # python-pyroute2 bundle
-tar -xzf %SOURCE4 -C %{bundled_lib_dir}
+tar -xzf %SOURCE6 -C %{bundled_lib_dir}
 mv %{bundled_lib_dir}/%{pyroute2}-%{pyroute2_version} %{pyroute2_dir}
 cp %{pyroute2_dir}/README.md %{pyroute2}_README.md
 cp %{pyroute2_dir}/README.license.md %{pyroute2}_README.license.md
@@ -460,7 +528,7 @@ cp %{pyroute2_dir}/LICENSE.Apache.v2 %{pyroute2}_LICENSE.Apache.v2
 cp %{pyroute2_dir}/LICENSE.GPL.v2 %{pyroute2}_LICENSE.GPL.v2
 
 # python-colorama bundle
-tar -xzf %SOURCE5 -C %{bundled_lib_dir}
+tar -xzf %SOURCE7 -C %{bundled_lib_dir}
 mv %{bundled_lib_dir}/%{colorama}-%{colorama_version} %{colorama_dir}
 cp %{colorama_dir}/LICENSE.txt %{colorama}_LICENSE.txt
 cp %{colorama_dir}/README.rst %{colorama}_README.rst
@@ -471,7 +539,7 @@ rm -rf *.egg-info
 popd
 
 # python-jmespath bundle
-tar -xzf %SOURCE6 -C %{bundled_lib_dir}
+tar -xzf %SOURCE8 -C %{bundled_lib_dir}
 mv %{bundled_lib_dir}/jmespath.py-%{jmespath_version} %{jmespath_dir}
 cp %{jmespath_dir}/LICENSE.txt %{jmespath}_LICENSE.txt
 cp %{jmespath_dir}/README.rst %{jmespath}_README.rst
@@ -481,28 +549,28 @@ rm -rf jmespath.egg-info
 popd
 
 # python-pycryptodome bundle
-tar -xzf %SOURCE7 -C %{bundled_lib_dir}
+tar -xzf %SOURCE9 -C %{bundled_lib_dir}
 mv %{bundled_lib_dir}/%{pycryptodome}-%{pycryptodome_version} %{pycryptodome_dir}
 cp %{pycryptodome_dir}/README.rst %{pycryptodome}_README.rst
 cp %{pycryptodome_dir}/LICENSE.rst %{pycryptodome}_LICENSE.rst
 
 # python-aliyun-sdk-core bundle
-tar -xzf %SOURCE8 -C %{bundled_lib_dir}
+tar -xzf %SOURCE10 -C %{bundled_lib_dir}
 mv %{bundled_lib_dir}/%{aliyunsdkcore}-%{aliyunsdkcore_version} %{aliyunsdkcore_dir}
 cp %{aliyunsdkcore_dir}/README.rst %{aliyunsdkcore}_README.rst
 
 # python-aliyun-sdk-ecs bundle
-tar -xzf %SOURCE9 -C %{bundled_lib_dir}
+tar -xzf %SOURCE11 -C %{bundled_lib_dir}
 mv %{bundled_lib_dir}/%{aliyunsdkecs}-%{aliyunsdkecs_version} %{aliyunsdkecs_dir}
 cp %{aliyunsdkecs_dir}/README.rst %{aliyunsdkecs}_README.rst
 
 # python-aliyun-sdk-vpc bundle
-tar -xzf %SOURCE10 -C %{bundled_lib_dir}
+tar -xzf %SOURCE12 -C %{bundled_lib_dir}
 mv %{bundled_lib_dir}/%{aliyunsdkvpc}-%{aliyunsdkvpc_version} %{aliyunsdkvpc_dir}
 cp %{aliyunsdkvpc_dir}/README.rst %{aliyunsdkvpc}_README.rst
 
 # aliyuncli bundle
-tar -xzf %SOURCE11 -C %{bundled_lib_dir}
+tar -xzf %SOURCE13 -C %{bundled_lib_dir}
 mv %{bundled_lib_dir}/%{aliyuncli}-%{aliyuncli_version} %{aliyuncli_dir}
 cp %{aliyuncli_dir}/README.rst %{aliyuncli}_README.rst
 cp %{aliyuncli_dir}/LICENSE %{aliyuncli}_LICENSE
@@ -605,15 +673,34 @@ popd
 rm -rf %{buildroot}
 make install DESTDIR=%{buildroot}
 
-test -d %{buildroot}/usr/sbin || mkdir %{buildroot}/usr/sbin
-mv %{sap_script_prefix}-%{sap_script_hash}/redhat/sap_redhat_cluster_connector %{buildroot}/%{_sbindir}
+test -d %{buildroot}/%{_sbindir} || mkdir %{buildroot}/%{_sbindir}
+cp %{sap_script_prefix}-%{sap_script_hash}/redhat/sap_redhat_cluster_connector %{buildroot}/%{_sbindir}
+
+test -d %{buildroot}/%{_bindir} || mkdir %{buildroot}/%{_bindir}
+cp %{sap_script_package_prefix}-%{sap_script_package_hash}/redhat/sap_cluster_connector %{buildroot}/%{_bindir}
+mkdir %{buildroot}/%{_datadir}/sap_cluster_connector
+cp -rv %{sap_script_package_prefix}-%{sap_script_package_hash}/redhat/{run_checks,checks} %{buildroot}/%{_datadir}/sap_cluster_connector
+gzip %{sap_script_package_prefix}-%{sap_script_package_hash}/redhat/man/*.8
+cp %{sap_script_package_prefix}-%{sap_script_package_hash}/redhat/man/*.8.gz %{buildroot}/%{_mandir}/man8
+
+install -m 0755 %{saphana_scaleout_prefix}-%{saphana_scaleout_hash}/SAPHana/bin/{SAPHanaSR-monitor,SAPHanaSR-showAttr} %{buildroot}/%{_sbindir}
+mkdir %{buildroot}/%{_usr}/lib/SAPHanaSR-ScaleOut
+install -m 0444 %{saphana_scaleout_prefix}-%{saphana_scaleout_hash}/SAPHana/test/SAPHanaSRTools.pm %{buildroot}/%{_usr}/lib/SAPHanaSR-ScaleOut/SAPHanaSRTools.pm
+mkdir -p %{buildroot}/%{_datadir}/SAPHanaSR-ScaleOut/samples
+install -m 0644 %{saphana_scaleout_prefix}-%{saphana_scaleout_hash}/SAPHana/srHook/SAPHanaSR.py %{buildroot}/%{_datadir}/SAPHanaSR-ScaleOut
+install -m 0444 %{saphana_scaleout_prefix}-%{saphana_scaleout_hash}/SAPHana/crmconfig/* %{buildroot}/%{_datadir}/SAPHanaSR-ScaleOut/samples
+install -m 0444 %{saphana_scaleout_prefix}-%{saphana_scaleout_hash}/SAPHana/srHook/global.ini %{buildroot}/%{_datadir}/SAPHanaSR-ScaleOut/samples
+gzip %{saphana_scaleout_prefix}-%{saphana_scaleout_hash}/SAPHana/man/SAPHanaSR*.?
+cp %{saphana_scaleout_prefix}-%{saphana_scaleout_hash}/SAPHana/man/SAPHanaSR*.7.gz %{buildroot}/%{_mandir}/man7
+cp %{saphana_scaleout_prefix}-%{saphana_scaleout_hash}/SAPHana/man/SAPHanaSR*.8.gz %{buildroot}/%{_mandir}/man8
+
 
 # google-cloud-sdk bundle
 %ifarch x86_64
 pushd %{googlecloudsdk_dir}
 mkdir -p %{buildroot}/usr/lib/%{name}/%{googlecloudsdk_dir}
 cp -a bin data lib %{buildroot}/usr/lib/%{name}/%{googlecloudsdk_dir}
-mkdir %{buildroot}/%{_bindir}
+test -d %{buildroot}/%{_bindir} || mkdir %{buildroot}/%{_bindir}
 ln -s /usr/lib/%{name}/%{googlecloudsdk_dir}/bin/gcloud-ra %{buildroot}/%{_bindir}
 popd
 
@@ -731,12 +818,19 @@ rm -rf %{buildroot}
 # Supported, but in another sub package
 ###
 %exclude %{_sbindir}/sap_redhat_cluster_connector
+%exclude %{_bindir}/sap_cluster_connector
+%exclude %{_sbindir}/SAPHanaSR*
 %exclude /usr/lib/ocf/resource.d/heartbeat/SAP*
 %exclude /usr/lib/ocf/lib/heartbeat/sap*
 %exclude %{_mandir}/man7/*SAP*
+%exclude %{_mandir}/man8/*SAP*
+%exclude %{_usr}/lib/SAPHanaSR-ScaleOut
+%exclude %{_datadir}/SAPHanaSR-ScaleOut
+%exclude %{_mandir}/man8/sap_cluster_connector*
+%exclude %{_datadir}/sap_cluster_connector
 %exclude /usr/lib/ocf/resource.d/heartbeat/gcp*
 %exclude %{_mandir}/man7/*gcp*
-%exclude /usr/lib/%{name}/%{bundled_lib_dir}
+%exclude /usr/lib/%{name}
 
 ###
 # Unsupported
@@ -942,11 +1036,60 @@ ccs_update_schema > /dev/null 2>&1 ||:
 %ifarch x86_64 ppc64le
 %files sap-hana
 %defattr(-,root,root)
-/usr/lib/ocf/resource.d/heartbeat/SAPHana*
-%{_mandir}/man7/*SAPHana*
+/usr/lib/ocf/resource.d/heartbeat/SAPHana
+/usr/lib/ocf/resource.d/heartbeat/SAPHanaTopology
+%{_mandir}/man7/*SAPHana.*
+%{_mandir}/man7/*SAPHanaTopology.*
+%endif
+
+%ifarch x86_64 ppc64le
+%files sap-hana-scaleout
+%defattr(-,root,root)
+/usr/lib/ocf/resource.d/heartbeat/SAPHanaController
+/usr/lib/ocf/resource.d/heartbeat/SAPHanaTopologyScaleOut
+%{_mandir}/man7/*SAPHanaController*
+%{_mandir}/man7/*SAPHanaTopologyScaleOut*
+%{_sbindir}/SAPHanaSR*
+%{_mandir}/man7/SAPHanaSR*
+%{_mandir}/man8/SAPHanaSR*
+%{_usr}/lib/SAPHanaSR-ScaleOut
+%{_datadir}/SAPHanaSR-ScaleOut
+%endif
+
+%ifarch x86_64 ppc64le
+%files -n sap-cluster-connector
+%defattr(-,root,root)
+%{_bindir}/sap_cluster_connector
+%{_mandir}/man8/sap_cluster_connector*
+%{_datadir}/sap_cluster_connector
 %endif
 
 %changelog
+* Thu Jun 27 2019 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.1.1-12.19
+- resource-agents-sap-hana-scaleout: new subpackage
+
+  Resolves: rhbz#1721274
+
+* Tue Jun 25 2019 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.1.1-12.17
+- sap-cluster-connector: new subpackage
+
+  Resolves: rhbz#1721412
+
+* Tue May 21 2019 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.1.1-12.13
+- aws-vpc-move-ip: use "--query" to avoid a possible race condition
+- aws-vpc-move-ip: add multi route-table support and fix issue
+  w/multiple NICs
+
+  Resolves: rhbz#1711165
+  Resolves: rhbz#1711925
+
+* Thu Apr 11 2019 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.1.1-12.10
+- ocf_log: do not log debug messages when HA_debug unset
+- tomcat: use systemd when catalina.sh is unavailable
+
+  Resolves: rhbz#1655655
+  Resolves: rhbz#1646770
+
 * Thu Jan 17 2019 Oyvind Albrigtsen <oalbrigt@redhat.com> - 4.1.1-12.8
 - rabbitmq-cluster: retry start when cluster join fails
   Resolves: rhbz#1656733