<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet href="https://dev.horde.org/themes/horde//default/feed-rss.xsl" type="text/xsl"?> 
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 
 <channel> 
  <title>ActiveSync -&gt; LDAP - addressbook entry cannot be created - CN (name) is missing</title> 
  <pubDate>Fri, 10 Apr 2026 17:02:26 +0000</pubDate> 
  <link>https://bugs.horde.org/ticket/14714</link> 
  <atom:link rel="self" type="application/rss+xml" title="ActiveSync -&gt; LDAP - addressbook entry cannot be created - CN (name) is missing" href="https://bugs.horde.org/ticket/14714/rss" /> 
  <description>ActiveSync -&gt; LDAP - addressbook entry cannot be created - CN (name) is missing</description> 
 
   
   
  <item> 
   <title>Hello,

I am using a few LDAP addressbooks, a few global r</title> 
   <description>Hello,

I am using a few LDAP addressbooks, a few global read only books and
one personal addressbook.  

The synchronisation from LDAP to activesync devices works fine.
A new entry from the webfrontend to LDAP and the activesync clients works fine.
Entries on LDAP are recoginzed on the webfrontend, with the known &quot;bug&quot; that activesync devices are not aware of a change/new entry.

If I try to add a new entry on my cell phone, it isn&#039;t created in the
LDAP backend, because of a missing cn field. I use the evolution schema on openldap. 

My relevant part of backends.local.php: 

$_ldap_uid = $GLOBALS[&#039;registry&#039;]-&gt;getAuth(&#039;bare&#039;);
$_ldap_basedn = &#039;dc=mydomain,dc=lan&#039;;
$cfgSources[&#039;personal_ldap&#039;] = array(
    // Disabled by default
    &#039;disabled&#039; =&gt; false,
    &#039;title&#039; =&gt; _($_ldap_uid . &quot; addressbook rw&quot;),
    &#039;type&#039; =&gt; &#039;ldap&#039;,
    &#039;params&#039; =&gt; array(
        &#039;server&#039; =&gt; &#039;ldap.mydomain.lan&#039;,
        &#039;tls&#039; =&gt; false,
        &#039;root&#039; =&gt; &#039;ou=&#039; . $_ldap_uid . &#039;,ou=Personal,ou=addressbook,&#039; . $_ldap_basedn,
        &#039;bind_dn&#039; =&gt; &#039;uid=&#039; . $_ldap_uid . &#039;,ou=User,ou=People,&#039; . $_ldap_basedn,
	&#039;bind_password&#039; =&gt; $GLOBALS[&#039;registry&#039;]-&gt;getAuthCredential(&#039;password&#039;),
        &#039;dn&#039; =&gt; array(&#039;uid&#039;),
        &#039;objectclass&#039; =&gt; array(&#039;top&#039;,
                               &#039;person&#039;,
                               // &#039;turbaContact&#039;,
                               &#039;inetOrgPerson&#039;,
                               // &#039;calEntry&#039;,
			       &#039;organizationalPerson&#039;,
		       		&#039;evolutionPerson&#039;),
        &#039;scope&#039; =&gt; &#039;one&#039;,
        &#039;charset&#039; =&gt; &#039;utf-8&#039;,
        &#039;version&#039; =&gt; 3
    ),
    &#039;map&#039; =&gt; array(
        &#039;__key&#039; =&gt; &#039;dn&#039;,
        &#039;__uid&#039; =&gt; &#039;uid&#039;,
        // From horde.schema:
        // &#039;__type&#039; =&gt; &#039;turbaType&#039;,
        // &#039;__members&#039; =&gt; &#039;turbaMembers&#039;,
	&#039;name&#039; =&gt; &#039;cn&#039;,
	&#039;lastname&#039; =&gt; &#039;sn&#039;,
	&#039;firstname&#039; =&gt; &#039;givenname&#039;,
	&#039;namePrefix&#039; =&gt; &#039;title&#039;,
	&#039;title&#039; =&gt; &#039;businessRole&#039;,

	&#039;photo&#039; =&gt; &#039;jpegphoto&#039;,
	&#039;birthday&#039; =&gt; &#039;birthdate&#039;,
	&#039;anniversary&#039; =&gt; &#039;anniversary&#039;,
	&#039;spouse&#039; =&gt; &#039;spouseName&#039;,
	// &#039;children&#039; =&gt; &#039;children&#039;, // still missing
        &#039;company&#039; =&gt; &#039;o&#039;,
        &#039;department&#039; =&gt; &#039;ou&#039;,
        &#039;businessCategory&#039; =&gt; &#039;businesscategory&#039;,
        &#039;emails&#039; =&gt; &#039;mail&#039;,
        &#039;workPhone&#039; =&gt; &#039;telephonenumber&#039;,
	&#039;fax&#039; =&gt; &#039;facsimiletelephonenumber&#039;,
	&#039;companyPhone&#039; =&gt; &#039;companyPhone&#039;,
	&#039;homePhone&#039; =&gt; &#039;homephone&#039;,
	&#039;cellPhone&#039; =&gt; &#039;mobile&#039;,
	&#039;carPhone&#039; =&gt; &#039;carphone&#039;,
	&#039;pager&#039; =&gt; &#039;pager&#039;,
	&#039;radioPhone&#039; =&gt; &#039;radio&#039;,
	&#039;assistant&#039; =&gt; &#039;assistantName&#039;,
	&#039;assistPhone&#039; =&gt; &#039;assistantPhone&#039;,
	&#039;manager&#039; =&gt; &#039;managerName&#039;,
	&#039;__tags&#039; =&gt; &#039;categories&#039;,
        &#039;workAddress&#039; =&gt; &#039;postaladdress&#039;,
	&#039;workStreet&#039; =&gt; &#039;street&#039;,
	&#039;workPostalCode&#039; =&gt; &#039;postalcode&#039;,
	&#039;workCity&#039; =&gt; &#039;l&#039;,
	&#039;workProvince&#039; =&gt; &#039;st&#039;,
	// &#039;workCountryFree&#039; =&gt; &#039;c&#039;, // no LDAP backend yet
	&#039;homeAddress&#039; =&gt; &#039;homepostaladdress&#039;,
	&#039;otherAddress&#039; =&gt; &#039;otherPostalAddress&#039;,
        &#039;notes&#039; =&gt; &#039;note&#039;,
        &#039;office&#039; =&gt; &#039;roomNumber&#039;,
        &#039;nickname&#039; =&gt; &#039;displayName&#039;,
        &#039;website&#039; =&gt; &#039;labeledURI&#039;,
        &#039;pgpPublicKey&#039; =&gt; &#039;userCertificate&#039;,
        &#039;smimePublicKey&#039; =&gt; &#039;userSMIMECertificate&#039;,
	&#039;freebusyUrl&#039; =&gt; &#039;freebusyuri&#039;,
	// &#039;imaddress1&#039; =&gt; &#039;imAddress&#039;, // no LDAP backend yet, multi value?
	// &#039;yomifirstname&#039; =&gt; &#039;yomiFirstname&#039; // no LDAP backend yet
	// &#039;yomilastname&#039; =&gt; &#039;yomiLastname&#039; // no LDAP backend yet
	// &#039;yomicompanyname&#039; =&gt; &#039;yomiCompanyName&#039; // NO LDAP and horde backend yet&#039; but activesync attribute
    ),
    &#039;search&#039; =&gt; array(
        &#039;name&#039;,
        &#039;emails&#039;,
        &#039;businessCategory&#039;,
        &#039;title&#039;,
        &#039;homePhone&#039;,
        &#039;workPhone&#039;,
	&#039;cellPhone&#039;,
	&#039;carPhone&#039;,
        &#039;homeAddress&#039;
    ),
    &#039;strict&#039; =&gt; array(
        &#039;dn&#039;, &#039;uid&#039;
    ),
    &#039;approximate&#039; =&gt; array(
        &#039;cn&#039;, &#039;name&#039;
    ),
    &#039;export&#039; =&gt; true,
    &#039;browse&#039; =&gt; true,
);

In my Driver.php &quot;name&quot; maps to &quot;fileas&quot; 

The error in the activesync log is the following: (Name Motojj Tester, mobile number +491222666)

58444][2017-10-15T13:56:18+02:00] I:         Motojj
[58444][2017-10-15T13:56:18+02:00] ERR: Failed to add an object: [65] &quot;Object class violation&quot; DN: uid=20171015135618.Bo2SEPYeqk0T6RKOjifDs4I@ash.mydomain.de,ou=oliver,ou=Personal,ou=addressbook,dc=kobosix,dc=lan (attributes: [a:7:{s:2:&quot;sn&quot;;s:6:&quot;Tester&quot;;s:9:&quot;givenname&quot;;s:6:&quot;Motojj&quot;;s:6:&quot;mobile&quot;;s:11:&quot;+4912222666&quot;;s:4:&quot;note&quot;;s:1:&quot; &quot;;s:4:&quot;mail&quot;;s:2:&quot;,,&quot;;s:3:&quot;uid&quot;;s:53:&quot;20171015135618.Bo2SEPYeqk0T6RKOjifDs4I@ash.kobosix.de&quot;;s:11:&quot;objectclass&quot;;a:5:{i:0;s:3:&quot;top&quot;;i:1;s:6:&quot;person&quot;;i:2;s:13:&quot;inetOrgPerson&quot;;i:3;s:20:&quot;organizationalPerson&quot;;i:4;s:15:&quot;evolutionPerson&quot;;}}])

Let me know, if you need further logs / config files. 

Thanks and regards
Oliver
</description> 
   <pubDate>Tue, 17 Oct 2017 20:57:34 +0000</pubDate> 
   <link>https://bugs.horde.org/ticket/14714#t92316</link> 
  </item> 
   
   
 
 </channel> 
</rss> 
