Friday, February 25, 2022

[389-users] Re: OpenLDAP import into 389 Directory Server failing

Ok, I finished the migration, but I had to ditch openldap_to_ds, it never worked, even after I migrated our custom schema to 389-DS. (Thank you Paul for pointing me in the direction of schemas.). It also failed with 389-DS v2.0.

Here's what I did:

1. Uninstalled DS 1.4 and installed 2.0 from EPEL. This got me the entryuuid plugin.
2. Made a copy of slapd.d and exported the database to LDIF (using slapcat). Instructions for this can be found at: .
3. Used to convert our OpenLDAP schema file to DS, and copied the new file to /etc/dirsrv/schema. I found the script at .
4. Created a new DS instance using all the defaults, except:
- changed the instance name to one that represented my LDAP database purpose
- changed the suffix to match the suffix from my OpenLDAP database.
5. Removed unneeded and problematic OpenLDAP replsync entries from my LDIF export:
- entryCSN
- contextCSN
6. Used ldapadd to import the LDIF.
- ldapadd -x -D "cn=Directory Manager" -W -f myexport.ldif

Everything imported, and I now have a test copy of our LDAP DB in 389-DS!

Typing this up has me thinking though, since entryuuid is also just an OpenLDAP implementation, I should be able to remove that from my LDIF. Does anyone disagree with that? I need to give that a shot...

Thank you again Mark and Paul, and hopefully, this will help anyone else struggling with an OpenLDAP to 389-DS migration.

Jason Lewis
Systems Administrator

From: "Jason W. Lewis" <>
Date: Tuesday, February 22, 2022 at 16:15
To: "General discussion list for the 389 Directory server project." <>
Subject: Re: [389-users] OpenLDAP import into 389 Directory Server failing

Thanks for that.  I have gone through those docs already, and I'm still running into it.  My 389-ds-base package is version
Jason Lewis
Systems Administrator

From: Mark Reynolds <>
Date: Tuesday, February 22, 2022 at 16:08
To: "General discussion list for the 389 Directory server project." <>, "Jason W. Lewis" <>
Subject: Re: [389-users] OpenLDAP import into 389 Directory Server failing

External email – Please make sure you trust the source before clicking links or opening attachments.
What version of 389-ds-base are you using?
Check out these docs if you haven't already:
On 2/22/22 3:59 PM, Jason W. Lewis wrote:
After RHEL, etc dropped OpenLDAP, I've begun testing with 389 Directory Server. Currently, I'm trying to use openldap_to_ds to import slapd.d config and an LDIF export to import my old database into the new server.
I've created a new instance in 389-ds named terminal-config. I've tried the following variations on the idea, all of which gave me the same results:
1. exported the LDIF from OpenLDAP 2.4 on Oracle Linux 7 and CentOS 6 servers.
2. Rewrote all files being imported to make sure they weren't corrupt.
3. used relative and absolute path names to the files
4. Tried importing with a new instance (as mentioned above) and no instance at all
5. When using dscreate to make the new instance, I've tried setting it up differently (allowed sample entries and not, etc)
No matter what I do, this is what I get when I try:
[root@ldaptest ~]# openldap_to_ds terminal-config /root/slapd.d  /root/terminals.ldif
Examining OpenLDAP Configuration ...
Traceback (most recent call last):
  File "/usr/sbin/openldap_to_ds", line 250, in <module>
    result = do_migration(inst, log, args, skip_overlays)
  File "/usr/sbin/openldap_to_ds", line 178, in do_migration
    config = olConfig(args.slapd_config, log)
  File "/usr/lib/python3.6/site-packages/lib389/migrate/openldap/", line 305, in __init__
    for db in dbs
  File "/usr/lib/python3.6/site-packages/lib389/migrate/openldap/", line 305, in <listcomp>
    for db in dbs
  File "/usr/lib/python3.6/site-packages/lib389/migrate/openldap/", line 112, in __init__
    self.suffix = ensure_str(self.config[1]['olcSuffix'][0])
KeyError: 'olcSuffix'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/sbin/openldap_to_ds", line 257, in <module>
    log.error("Error: %s" % " - ".join(str(val) for val in msg.values()))
AttributeError: 'str' object has no attribute 'values'
[root@ldaptest ~]#
Any thoughts on what could be causing this?

Jason Lewis
Systems Administrator



CONFIDENTIALITY NOTICE: This e-mail message including attachments, if any, is intended exclusively for the person or entity to which it is addressed and may contain confidential and/or privileged material. If you are not the intended recipient, you are not authorized to read, print, retain, copy or disseminate this message or any part of it. If you receive this message in error, please contact the sender by reply e-mail and destroy all copies of the original message and attachments. Thank you

389-users mailing list --
To unsubscribe send an email to
Fedora Code of Conduct:
List Guidelines:
List Archives:
Do not reply to spam on the list, report it:
Directory Server Development Team

No comments:

Post a Comment