diff --git a/ffdc/collect_ffdc.py b/ffdc/collect_ffdc.py
index 21c67ef..49e89fa 100644
--- a/ffdc/collect_ffdc.py
+++ b/ffdc/collect_ffdc.py
@@ -44,7 +44,7 @@
         thisFFDC.collect_ffdc()
 
         if not thisFFDC.receive_file_list:
-            click.echo("\n\tFFDC Collection from " + remote + " has failed\n\n.")
+            click.echo("\n\tFFDC Collection from " + remote + " has failed.\n\n")
         else:
             click.echo(str("\t" + str(len(thisFFDC.receive_file_list)))
                        + " files were retrieved from " + remote)
diff --git a/ffdc/ffdc_collector.py b/ffdc/ffdc_collector.py
index 3e4f788..5b84106 100644
--- a/ffdc/ffdc_collector.py
+++ b/ffdc/ffdc_collector.py
@@ -120,6 +120,11 @@
 
         self.remoteclient.ssh_remoteclient_login()
         print("\n\t[Check] %s SSH connection established.\t [OK]" % self.hostname)
+
+        # Check scp connection.
+        # If scp connection fails,
+        # continue with FFDC generation but skip scp files to local host.
+        self.remoteclient.scp_connection()
         return True
 
     def generate_ffdc(self, working_protocol_list):
@@ -146,15 +151,18 @@
                         self.remoteclient.execute_command(command)
                         progress_counter += 1
                         self.print_progress(progress_counter)
-                    print("\n\t[Run] Commands execution completed \t\t [OK]")
+                    print("\n\t[Run] Commands execution completed.\t\t [OK]")
 
-                    print("\n\n\tCopying FFDC files from remote system %s \n\n" % self.hostname)
-                    # Get default values for scp action.
-                    # self.location == local system for now
-                    self.set_ffdc_defaults()
-                    # Retrieving files from target system
-                    list_of_files = ffdc_actions[machine_type]['FILES']
-                    self.scp_ffdc(self.ffdc_dir_path, self.ffdc_prefix, list_of_files)
+                    if self.remoteclient.scpclient:
+                        print("\n\n\tCopying FFDC files from remote system %s.\n" % self.hostname)
+                        # Get default values for scp action.
+                        # self.location == local system for now
+                        self.set_ffdc_defaults()
+                        # Retrieving files from target system
+                        list_of_files = ffdc_actions[machine_type]['FILES']
+                        self.scp_ffdc(self.ffdc_dir_path, self.ffdc_prefix, list_of_files)
+                    else:
+                        print("\n\n\tSkip copying FFDC files from remote system %s.\n" % self.hostname)
                 else:
                     print("\n\tProtocol %s is not yet supported by this script.\n"
                           % ffdc_actions[machine_type]['PROTOCOL'][0])
@@ -175,8 +183,6 @@
 
         """
 
-        self.remoteclient.scp_connection()
-
         self.receive_file_list = []
         progress_counter = 0
         for filename in file_list:
diff --git a/ffdc/ssh_utility.py b/ffdc/ssh_utility.py
index 3a028e6..f1524a7 100644
--- a/ffdc/ssh_utility.py
+++ b/ffdc/ssh_utility.py
@@ -6,7 +6,7 @@
 from paramiko.ssh_exception import SSHException
 from paramiko.ssh_exception import BadHostKeyException
 from paramiko.buffered_pipe import PipeTimeout as PipeTimeout
-import scp
+from scp import SCPClient, SCPException
 import sys
 import socket
 from socket import timeout as SocketTimeout
@@ -94,7 +94,14 @@
         r"""
         Create a scp connection for file transfer.
         """
-        self.scpclient = scp.SCPClient(self.sshclient.get_transport())
+        try:
+            self.scpclient = SCPClient(self.sshclient.get_transport())
+            print("\n\t[Check] %s SCP transport established.\t [OK]" % self.hostname)
+        except (SCPException, SocketTimeout, PipeTimeout) as e:
+            self.scpclient = None
+            print("\n>>>>>\tERROR: SCP get_transport has failed. %s %s" % (e.__class__, e))
+            print(">>>>>\tScript continues generating FFDC on %s." % self.hostname)
+            print(">>>>>\tCollected data will need to be manually offloaded.")
 
     def scp_file_from_remote(self, remote_file, local_file):
 
@@ -111,7 +118,7 @@
 
         try:
             self.scpclient.get(remote_file, local_file)
-        except (scp.SCPException, SocketTimeout, PipeTimeout) as e:
+        except (SCPException, SocketTimeout, PipeTimeout) as e:
             # Log command with error. Return to caller for next file, if any.
             print("\n>>>>>\tERROR: Fail scp %s from remotehost %s %s\n\n" % (remote_file, e.__class__, e))
             return False
