diff --git a/library/ipaextras.py b/library/ipaextras.py
index 7a770d094468d163c4786c27dc08ecb98456fd02..c0a5652bd9d19902a6b26205addcffecd4466d24 100644
--- a/library/ipaextras.py
+++ b/library/ipaextras.py
@@ -99,15 +99,64 @@ EXAMPLES = '''
 RETURN = '''
 '''
 
-import logging
 import os
+import sys
+import tempfile
+import inspect
+import logging
+
 from ansible.module_utils.basic import AnsibleModule
-from ipalib.install import sysrestore
+from ipapython.version import NUM_VERSION, VERSION
+if NUM_VERSION < 40400:
+    raise Exception, "freeipa version '%s' is too old" % VERSION
+try:
+    from ipalib.install import sysrestore
+except ImportError:
+    from ipapython import sysrestore
 from ipaplatform.paths import paths
-from ipaclient.install.client import CCACHE_FILE, configure_ssh_config, \
-    configure_sshd_config, configure_automount, configure_firefox, \
-    configure_nisdomain
-from ipaclient.install import ntpconf
+try:
+    from ipaclient.install.client import CCACHE_FILE, configure_ssh_config, \
+        configure_sshd_config, configure_automount, configure_firefox, \
+        configure_nisdomain
+except ImportError:
+    # Create temporary copy of ipa-client-install script (as
+    # ipa_client_install.py) to be able to import the script easily and also
+    # to remove the global finally clause in which the generated ccache file
+    # gets removed. The ccache file will be needed in the next step.
+    # This is done in a temporary directory that gets removed right after
+    # ipa_client_install has been imported.
+    import shutil
+    temp_dir = tempfile.mkdtemp(dir="/tmp")
+    sys.path.append(temp_dir)
+    temp_file = "%s/ipa_client_install.py" % temp_dir
+
+    with open("/usr/sbin/ipa-client-install", "r") as f_in:
+        with open(temp_file, "w") as f_out:
+            for line in f_in:
+                if line.startswith("finally:"):
+                    break
+                f_out.write(line)
+    import ipa_client_install
+
+    shutil.rmtree(temp_dir, ignore_errors=True)
+    sys.path.remove(temp_dir)
+
+    argspec = inspect.getargspec(ipa_client_install.configure_nisdomain)
+    if len(argspec.args) == 3:
+        configure_nisdomain = ipa_client_install.configure_nisdomain
+    else:
+        def configure_nisdomain(options, domain, statestore=None):
+            return ipa_client_install.configure_nisdomain(options, domain)
+
+    CCACHE_FILE = paths.IPA_DNS_CCACHE
+    configure_ssh_config = ipa_client_install.configure_ssh_config
+    configure_sshd_config = ipa_client_install.configure_sshd_config
+    configure_automount = ipa_client_install.configure_automount
+    configure_firefox = ipa_client_install.configure_firefox
+try:
+    from ipaclient.install import ntpconf
+except ImportError:
+    from ipaclient import ntpconf
 
 def main():
     module = AnsibleModule(