I wonder what kind of "extension" you want to achieve.
with the latest iRedAdmin-Pro release (OpenLDAP edition), you can manage additional LDAP attribute names - they are defined in iRedAdmin-Pro config file. Here's the parameter names and comments, hope it helps a little. If you have any question, feel free to ask.
# Additional LDAP attribute names of user object you want to manage.
# Format:
#
# {'attribute_name': {'desc': 'A short description of this attribute',
# 'allowed_domains': [...],
# 'properties': [...]}}
# 'attribute_name2': {...}}
#
# Arguments
# ----------
#
# desc: string. [optional]
# a short description of this attribute.
# If not present, defaults to show attribute name.
#
# allowed_domains: list. [optional]
# a list of domain names which are allowed to use this attribute.
# if not present, defaults to allow all domains to use the attribute.
#
# properties: list. [optional]
# a list of pre-defined property names (string).
# If not present, defaults to ['string'].
#
# Properties
# ----------
#
# - 'require_global_admin': attribute is only managed by global domain admin.
# - 'multivalue': indicates attribute may contain multiple values.
# If not present, defaults to single value.
#
# - 'string': indicates attribute value is short text. will be displayed as
# HTML tag "<input type='text'>".
# - 'text': indicates attribute value is long text. will be displayed as HTML
# "<textarea>".
#
# Warning: 'string', 'text', 'integer' cannot be used at the same time for same
# attribute.
#
# Sample settings:
#
# {'carLicense': {}} # The minimalist setting, just attribute name.
#
# {'carLicense': {'desc': 'Car License',
# 'properties': ['string'],
# 'allowed_domains': ['example.com', 'test.com']}}
ADDITIONAL_MANAGED_USER_ATTRIBUTES = {}
# Additional LDAP objectClass for NEWLY created mail user.
# Sample value: ['inetOrgPerson', 'pwdPolicy', 'ownCloud']
ADDITIONAL_USER_OBJECTCLASSES = []
# Additional LDAP attribute names and values for NEWLY created mail user.
#
# Format:
# [(attribute_name, [...]),
# (attribute_name, [...])]
#
# Several placeholders are available:
# - %(mail)s: mail address of new user
# - %(domain)s: domain part of new user mail address
# - %(username)s: username part of new user mail address
# - %(cn)s: display name of new user
# - %(plain_password)s: new user's plain password
# - %(passwd)s: new user's encrypted password
# - %(quota)d: mailbox quota
# - %(sgroups)s: a list of assigned mailing lists
# - %(storageBaseDirectory)s: path of base storage
# - %(language)s: default language for web UI
# - %(recipient_bcc)s: recipient bcc email address
# - %(sender_bcc)s: sender bcc email address
# - %(next_uid)d: a server-wide free and unique integer for attr `uidNumber`
# - %(next_gid)d: a server-wide free and unique integer for attr `gidNumber`
# - %(shadowLastChange)d: number of days since 1970-01-01, defaults to today.
# - %(shadowLastChange)d+Xd: number of days since 1970-01-01, plus X days (+Xd).
#
# Sample:
#
# ADDITIONAL_USER_ATTRIBUTES = [('uidNumber', ['%(next_uid)d']),
# ('gidNumber', ['%(next_gid)d'])]
ADDITIONAL_USER_ATTRIBUTES = []