From 779d6af56da8facfcaf2a4ad7ed689dc36bd986a Mon Sep 17 00:00:00 2001
From: Quanah Gibson-Mount <quanah@openldap.org>
Date: Sat, 1 Sep 2007 01:48:46 +0000
Subject: [PATCH] Sync 2.4 guide with HEAD for 2.4.5

---
 doc/guide/COPYRIGHT                  |    6 +-
 doc/guide/admin/Makefile             |   26 +-
 doc/guide/admin/README.spellcheck    |   16 +
 doc/guide/admin/appendix-changes.sdf |  208 ++++
 doc/guide/admin/appendix-configs.sdf |   14 +
 doc/guide/admin/aspell.en.pws        | 1406 ++++++++++++++++++++++++++
 doc/guide/admin/backends.sdf         |  262 +++++
 doc/guide/admin/config.sdf           |    4 +-
 doc/guide/admin/config_dit.gif       |  Bin 4599 -> 0 bytes
 doc/guide/admin/config_dit.png       |  Bin 0 -> 19735 bytes
 doc/guide/admin/config_local.gif     |  Bin 1910 -> 0 bytes
 doc/guide/admin/config_local.png     |  Bin 0 -> 4172 bytes
 doc/guide/admin/config_ref.gif       |  Bin 3134 -> 0 bytes
 doc/guide/admin/config_ref.png       |  Bin 0 -> 7556 bytes
 doc/guide/admin/config_x500fe.gif    |  Bin 1667 -> 0 bytes
 doc/guide/admin/config_x500ref.gif   |  Bin 2395 -> 0 bytes
 doc/guide/admin/dbtools.sdf          |    2 +-
 doc/guide/admin/guide.book           |    3 +
 doc/guide/admin/install.sdf          |   12 +-
 doc/guide/admin/intro.sdf            |  148 ++-
 doc/guide/admin/intro_dctree.gif     |  Bin 6054 -> 0 bytes
 doc/guide/admin/intro_dctree.png     |  Bin 0 -> 21788 bytes
 doc/guide/admin/intro_tree.gif       |  Bin 6622 -> 0 bytes
 doc/guide/admin/intro_tree.png       |  Bin 0 -> 24714 bytes
 doc/guide/admin/maintenance.sdf      |  110 ++
 doc/guide/admin/master.sdf           |   27 +-
 doc/guide/admin/monitoringslapd.sdf  |   11 +-
 doc/guide/admin/overlays.sdf         |  413 ++++++++
 doc/guide/admin/preface.sdf          |    4 +-
 doc/guide/admin/proxycache.sdf       |  148 ---
 doc/guide/admin/referrals.sdf        |    7 +
 doc/guide/admin/replication.gif      |  Bin 3538 -> 0 bytes
 doc/guide/admin/replication.sdf      |  897 ++++++++++------
 doc/guide/admin/runningslapd.sdf     |    4 +-
 doc/guide/admin/sasl.sdf             |   19 +-
 doc/guide/admin/schema.sdf           |   32 +-
 doc/guide/admin/security.sdf         |    3 +-
 doc/guide/admin/slapdconf2.sdf       |  137 +--
 doc/guide/admin/slapdconfig.sdf      |  138 +--
 doc/guide/admin/syncrepl.sdf         |  404 --------
 doc/guide/admin/title.sdf            |    2 +-
 doc/guide/admin/tls.sdf              |    5 +-
 doc/guide/admin/troubleshooting.sdf  |   89 ++
 doc/guide/admin/tuning.sdf           |  383 +++++--
 doc/guide/plain.sdf                  |    2 +-
 doc/guide/preamble.sdf               |    5 +-
 doc/guide/release/copyright.sdf      |    6 +-
 47 files changed, 3676 insertions(+), 1277 deletions(-)
 create mode 100644 doc/guide/admin/README.spellcheck
 create mode 100644 doc/guide/admin/appendix-changes.sdf
 create mode 100644 doc/guide/admin/appendix-configs.sdf
 create mode 100644 doc/guide/admin/aspell.en.pws
 create mode 100644 doc/guide/admin/backends.sdf
 delete mode 100644 doc/guide/admin/config_dit.gif
 create mode 100644 doc/guide/admin/config_dit.png
 delete mode 100644 doc/guide/admin/config_local.gif
 create mode 100644 doc/guide/admin/config_local.png
 delete mode 100644 doc/guide/admin/config_ref.gif
 create mode 100644 doc/guide/admin/config_ref.png
 delete mode 100644 doc/guide/admin/config_x500fe.gif
 delete mode 100644 doc/guide/admin/config_x500ref.gif
 create mode 100644 doc/guide/admin/guide.book
 delete mode 100644 doc/guide/admin/intro_dctree.gif
 create mode 100644 doc/guide/admin/intro_dctree.png
 delete mode 100644 doc/guide/admin/intro_tree.gif
 create mode 100644 doc/guide/admin/intro_tree.png
 create mode 100644 doc/guide/admin/maintenance.sdf
 create mode 100644 doc/guide/admin/overlays.sdf
 delete mode 100644 doc/guide/admin/proxycache.sdf
 delete mode 100644 doc/guide/admin/replication.gif
 delete mode 100644 doc/guide/admin/syncrepl.sdf
 create mode 100644 doc/guide/admin/troubleshooting.sdf

diff --git a/doc/guide/COPYRIGHT b/doc/guide/COPYRIGHT
index 27a4e73735..3e2fba9504 100644
--- a/doc/guide/COPYRIGHT
+++ b/doc/guide/COPYRIGHT
@@ -36,9 +36,11 @@ Public License.
 
 ---
 
-Portions Copyright 1999-2005 Howard Y.H. Chu.
-Portions Copyright 1999-2005 Symas Corporation.
+Portions Copyright 1999-2007 Howard Y.H. Chu.
+Portions Copyright 1999-2007 Symas Corporation.
 Portions Copyright 1998-2003 Hallvard B. Furuseth.
+Portions Copyright 2007 Gavin Henry
+Portions Copyright 2007 Suretec Systems
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
diff --git a/doc/guide/admin/Makefile b/doc/guide/admin/Makefile
index dfae7270e9..6b33980f98 100644
--- a/doc/guide/admin/Makefile
+++ b/doc/guide/admin/Makefile
@@ -18,16 +18,19 @@ sdf-src: \
 	../plain.sdf \
 	../preamble.sdf \
 	abstract.sdf \
+	appendix-configs.sdf \
+	backends.sdf \
 	config.sdf \
 	dbtools.sdf \
 	glossary.sdf \
 	guide.sdf \
 	install.sdf \
 	intro.sdf \
+	maintenance.sdf \
 	master.sdf \
 	monitoringslapd.sdf \
+	overlays.sdf \
 	preface.sdf \
-	proxycache.sdf \
 	quickstart.sdf \
 	referrals.sdf \
 	replication.sdf \
@@ -36,21 +39,19 @@ sdf-src: \
 	schema.sdf \
 	security.sdf \
 	slapdconfig.sdf \
-	syncrepl.sdf \
 	title.sdf \
 	tls.sdf \
+	troubleshooting.sdf \
 	tuning.sdf
 
 sdf-img: \
 	../images/LDAPlogo.gif \
-	config_local.gif \
-	config_ref.gif \
+	config_dit.png \
+	config_local.png \
+	config_ref.png \
 	config_repl.gif \
-	config_x500fe.gif \
-	config_x500ref.gif \
-	intro_dctree.gif \
-	intro_tree.gif \
-	replication.gif
+	intro_dctree.png \
+	intro_tree.png \
 
 guide.html: guide.sdf sdf-src sdf-img
 	sdf -2html guide.sdf
@@ -62,6 +63,7 @@ admin.html: admin.sdf sdf-src sdf-img
 	sdf -DPDF -2html admin.sdf
 
 guide.pdf: admin.html
-	htmldoc --book --duplex --bottom 36 --top 36 \
-		--toclevels 2 \
-		-f guide.pdf admin.html
+	htmldoc --batch guide.book
+
+clean: 
+	rm -f *.pdf *.html *~
diff --git a/doc/guide/admin/README.spellcheck b/doc/guide/admin/README.spellcheck
new file mode 100644
index 0000000000..729b247882
--- /dev/null
+++ b/doc/guide/admin/README.spellcheck
@@ -0,0 +1,16 @@
+# $OpenLDAP$
+# Copyright 2007 The OpenLDAP Foundation, All Rights Reserved.
+# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
+#
+# README.spellcheck 
+#
+
+aspell.en.pws
+	We use aspell to spell check the Admin Guide and Man Pages.
+	
+	Please move aspell.en.pws to ~/.aspell.en.pws and run:
+	
+	aspell --lang=en_US -c <filename>
+	
+	If you add additional words and terms, please add
+	them or copy them to aspell.en.pws and commit.
diff --git a/doc/guide/admin/appendix-changes.sdf b/doc/guide/admin/appendix-changes.sdf
new file mode 100644
index 0000000000..4ee1dce248
--- /dev/null
+++ b/doc/guide/admin/appendix-changes.sdf
@@ -0,0 +1,208 @@
+# $OpenLDAP$
+# Copyright 2007 The OpenLDAP Foundation, All Rights Reserved.
+# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
+
+H1: Changes Since Previous Release
+
+The following sections attempt to summarize the new features and changes in OpenLDAP
+software since the 2.3.x release and the OpenLDAP Admin Guide.
+
+H2: New Guide Sections
+
+In order to make the Admin Guide more thorough and cover the majority of questions
+asked on the OpenLDAP mailing lists and scenarios discussed there, we have added the following new sections:
+
+* {{SECT:When should I use LDAP?}}
+* {{SECT:When should I not use LDAP?}}
+* {{SECT:LDAP vs RDBMS}}
+* {{SECT:Backends}}
+* {{SECT:Overlays}}
+* {{SECT:Replication}}
+* {{SECT:Maintenance}}
+* {{SECT:Monitoring}}
+* {{SECT:Tuning}}
+* {{SECT:Troubleshooting}}
+* {{SECT:Changes Since Previous Release}}
+* {{SECT:Configuration File Examples}}
+* {{SECT:Glossary}}
+
+Also, the table of contents is now 3 levels deep to ease navigation.
+
+
+H2: New Features and Enhancements in 2.4
+
+H3: Better {{B:cn=config}} functionality
+
+There is a new slapd-config(5) manpage for the {{B:cn=config}} backend. The 
+original design called for auto-renaming of config entries when you insert or 
+delete entries with ordered names, but that was not implemented in 2.3. It is 
+now in 2.4. This means, e.g., if you have
+
+>   olcDatabase={1}bdb,cn=config
+>   olcSuffix: dc=example,dc=com
+
+and you want to add a new subordinate, now you can ldapadd:
+
+>   olcDatabase={1}bdb,cn=config
+>   olcSuffix: dc=foo,dc=example,dc=com
+
+This will insert a new BDB database in slot 1 and bump all following databases
+ down one, so the original BDB database will now be named:
+
+>   olcDatabase={2}bdb,cn=config
+>   olcSuffix: dc=example,dc=com
+
+H3: Better {{B:cn=schema}} functionality
+
+In 2.3 you were only able to add new schema elements, not delete or modify 
+existing elements. In 2.4 you can modify schema at will. (Except for the 
+hardcoded system schema, of course.)
+
+H3: More sophisticated Syncrepl configurations
+
+The original implementation of Syncrepl in OpenLDAP 2.2 was intended to support 
+multiple consumers within the same database, but that feature never worked and 
+was removed from OpenLDAP 2.3; you could only configure a single consumer in 
+any database.
+
+In 2.4 you can configure multiple consumers in a single database. The configuration 
+possibilities here are quite complex and numerous. You can configure consumers 
+over arbitrary subtrees of a database (disjoint or overlapping). Any portion 
+of the database may in turn be provided to other consumers using the Syncprov 
+overlay. The Syncprov overlay works with any number of consumers over a single 
+database or over arbitrarily many glued databases.
+
+H3: N-Way Multimaster Replication
+
+As a consequence of the work to support multiple consumer contexts, the syncrepl 
+system now supports full N-Way multimaster replication with entry-level conflict 
+resolution. There are some important constraints, of course: In order to maintain 
+consistent results across all servers, you must maintain tightly synchronized 
+clocks across all participating servers (e.g., you must use NTP on all servers). 
+
+The entryCSNs used for replication now record timestamps with microsecond resolution, 
+instead of just seconds. The delta-syncrepl code has not been updated to support 
+multimaster usage yet, that will come later in the 2.4 cycle.
+
+H3: Replicating {{slapd}} Configuration (syncrepl and {{B:cn=config}})
+
+Syncrepl was explicitly disabled on cn=config in 2.3. It is now fully supported 
+in 2.4; you can use syncrepl to replicate an entire server configuration from 
+one server to arbitrarily many other servers. It's possible to clone an entire 
+running slapd using just a small (less than 10 lines) seed configuration, or 
+you can just replicate the schema subtrees, etc. Tests 049 and 050 in the test 
+suite provide working examples of these capabilities.
+
+
+H3: Push-Mode Replication
+
+In 2.3 you could configure syncrepl as a full push-mode replicator by using it 
+in conjunction with a back-ldap pointed at the target server. But because the 
+back-ldap database needs to have a suffix corresponding to the target's suffix, 
+you could only configure one instance per slapd.
+
+In 2.4 you can define a database to be "hidden", which means that its suffix is 
+ignored when checking for name collisions, and the database will never be used 
+to answer requests received by the frontend. Using this "hidden" database feature 
+allows you to configure multiple databases with the same suffix, allowing you to 
+set up multiple back-ldap instances for pushing replication of a single database 
+to multiple targets. There may be other uses for hidden databases as well (e.g., 
+using a syncrepl consumer to maintain a *local* mirror of a database on a separate filesystem).
+
+
+H3: More extensive TLS configuration control
+
+In 2.3, the TLS configuration in slapd was only used by the slapd listeners. For 
+outbound connections used by e.g. back-ldap or syncrepl their TLS parameters came 
+from the system's ldap.conf file.
+
+In 2.4 all of these sessions inherit their settings from the main slapd configuration, 
+but settings can be individually overridden on a per-config-item basis. This is 
+particularly helpful if you use certificate-based authentication and need to use a 
+different client certificate for different destinations.
+
+
+H3: Performance enhancements
+
+Too many to list. Some notable changes - ldapadd used to be a couple of orders 
+of magnitude slower than "slapadd -q". It's now at worst only about half the 
+speed of slapadd -q. Some comparisons of all the 2.x OpenLDAP releases are available 
+at {{URL:http://www.openldap.org/pub/hyc/scale2007.pdf}}
+
+That compared 2.0.27, 2.1.30, 2.2.30, 2.3.33, and HEAD). Toward the latter end 
+of the "Cached Search Performance" chart it gets hard to see the difference 
+because the run times are so small, but the new code is about 25% faster than 2.3, 
+which was about 20% faster than 2.2, which was about 100% faster than 2.1, which 
+was about 100% faster than 2.0, in that particular search scenario. That test 
+basically searched a 1.3GB DB of 380836 entries (all in the slapd entry cache) 
+in under 1 second. i.e., on a 2.4GHz CPU with DDR400 ECC/Registered RAM we can 
+search over 500 thousand entries per second. The search was on an unindexed 
+attribute using a filter that would not match any entry, forcing slapd to examine 
+every entry in the DB, testing the filter for a match.
+
+Essentially the slapd entry cache in back-bdb/back-hdb is so efficient the search 
+processing time is almost invisible; the runtime is limited only by the memory 
+bandwidth of the machine. (The search data rate corresponds to about 3.5GB/sec; 
+the memory bandwidth on the machine is only about 4GB/sec due to ECC and register latency.)
+
+H3: New overlays
+
+* slapo-constraint (Attribute value constraints)
+* slapo-dds (Dynamic Directory Services, RFC 2589)
+* slapo-memberof (reverse group membership maintenance)
+
+H3: New features in existing Overlays
+
+* slapo-pcache
+  - Inspection/Maintenance 
+    -- the cache database can be directly accessed via
+       LDAP by adding a specific control to each LDAP request; a specific
+       extended operation allows to consistently remove cached entries and entire
+       cached queries
+  - Hot Restart
+    -- cached queries are saved on disk at shutdown, and reloaded if
+      not expired yet at subsequent restart
+
+* slapo-rwm can safely interoperate with other overlays
+* Dyngroup/Dynlist merge, plus security enhancements
+  - added dgIdentity support (draft-haripriya-dynamicgroup)
+
+H3: New features in slapd
+
+* monitoring of back-{b,h}db: cache fill-in, non-indexed searches,
+* session tracking control (draft-wahl-ldap-session)
+* subtree delete in back-sql (draft-armijo-ldap-treedelete)
+
+H3: New features in libldap
+
+* ldap_sync client API (LDAP Content Sync Operation, RFC 4533)
+
+H3: New clients, tools and tool enhancements
+
+* ldapexop for arbitrary extended operations
+* Complete support of controls in request/response for all clients
+* LDAP Client tools now honor SRV records 
+
+H3: New build options
+
+* Support for building against GnuTLS
+
+
+H2: Obsolete Features Removed From 2.4
+
+These features were strongly deprecated in 2.3 and removed in 2.4.
+
+H3: Slurpd
+
+Please read the {{SECT:Replication}} section as to why this is no longer in
+OpenLDAP
+
+H3: back-ldbm
+
+back-ldbm was both slow and unreliable. Its byzantine indexing code was
+prone to spontaneous corruption, as were the underlying database libraries
+that were commonly used (e.g. GDBM or NDBM). back-bdb and back-hdb are
+superior in every aspect, with simplified indexing to avoid index corruption,
+fine-grained locking for greater concurrency, hierarchical caching for
+greater performance, streamlined on-disk format for greater efficiency
+and portability, and full transaction support for greater reliability.
diff --git a/doc/guide/admin/appendix-configs.sdf b/doc/guide/admin/appendix-configs.sdf
new file mode 100644
index 0000000000..81aaf86f86
--- /dev/null
+++ b/doc/guide/admin/appendix-configs.sdf
@@ -0,0 +1,14 @@
+# $OpenLDAP$
+# Copyright 2007 The OpenLDAP Foundation, All Rights Reserved.
+# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
+
+H1: Configuration File Examples
+
+
+H2: slapd.conf
+
+
+H2: ldap.conf
+
+
+H2: a-n-other.conf
diff --git a/doc/guide/admin/aspell.en.pws b/doc/guide/admin/aspell.en.pws
new file mode 100644
index 0000000000..a28b908c2f
--- /dev/null
+++ b/doc/guide/admin/aspell.en.pws
@@ -0,0 +1,1406 @@
+personal_ws-1.1 en 1405 
+nattrsets
+inappropriateAuthentication
+api
+olcAttributeTypes
+BhY
+reqEnd
+olcOverlayConfig
+shoesize
+olcTLSCACertificateFile
+CGI
+cdx
+DCE
+DAP
+attributename
+lsei
+dbconfig
+arg
+kurt
+authzID
+authzid
+authzId
+DAs
+ddd
+userApplications
+BNF
+attrs
+mixin
+wholeSubtree
+chainingRequired
+ldapport
+hallvard
+ASN
+acknowledgements
+Chu
+ava
+monitorCounter
+del
+DDR
+testObject
+OrgPerson
+IGJlZ
+olcUpdateref
+ECC
+deleteDN
+cli
+ltdl
+CAPI
+dev
+serverctrls
+olcDbDirectory
+xvfB
+BSI
+modv
+nonleaf
+errCode
+PhotoURI
+buf
+cdef
+monitorConnectionLocalAddress
+dir
+EGD
+dit
+retoidp
+ando
+edu
+caseExactSubstringsMatch
+bvstrdup
+AUTHNAME
+memrealloc
+auditExtended
+replog
+ludp
+metainformation
+CRL
+CRP
+olcReferral
+XLDFLAGS
+metadirectory
+csn
+siiiib
+stateful
+olcModulePath
+maxentries
+authc
+seeAlso
+searchbase
+searchBase
+realnamingcontext
+dn's
+DNs
+DN's
+dns
+dereference
+sortKey
+authzTo
+lossy
+gcc
+CWD
+lssl
+organizationalRole
+DSA
+derefInSearching
+pwdGraceUseTime
+DSE
+groupOfURLs
+modrdn
+ModRDN
+modrDN
+pwdFailureCountInterval
+homePhone
+eng
+paramName
+errUnsolicitedData
+Heimdal
+EOF
+authz
+XINCPATH
+LTFINISH
+plaintext
+indices
+reqAssertion
+olcDbUri
+dst
+env
+oplist
+MirrorMode
+mirrormode
+objclass
+Bint
+dup
+hdb
+gid
+stderr
+caseIgnoreOrderingMatch
+moduledir
+gif
+jpegPhoto
+lsasl
+judgmentday
+prepend
+subentry
+dbcache
+mkversion
+objectClasses
+objectclasses
+searchResultReference
+fmt
+qdescrs
+olcSuffix
+supportedControl
+GHz
+libpath
+INADDR
+compareDN
+sizelimit
+unixODBC
+APIs
+blen
+attrsOnly
+attrsonly
+slappasswd
+referralsPreferred
+oids
+OIDs
+wBDARESEhgVG
+syncIdSet
+olcTLSCipherSuite
+username
+sizeLimitExceeded
+subst
+idl
+chroot
+iff
+auditDelete
+numbits
+ZKKuqbEKJfKSXhUbHG
+reqRespControls
+TLSCertificateKeyFile
+olcAccess
+proxyTemplates
+neverDerefaliases
+RootDN
+rootdn
+loglevel
+args
+caseExactOrderingMatch
+olcDbQuarantine
+RELEASEDATE
+baseDN
+basedn
+argv
+GSS
+schemachecking
+whoami
+WhoAmI
+syslogd
+dataflow
+subentries
+attrpair
+BerkeleyDB's
+singleLevel
+entryDN
+dSAOperation
+includedir
+inplace
+LDAPAPIFeatureInfo
+logbase
+ing
+moduleload
+IPC
+Makefile
+getpid
+GETREALM
+numericString
+MANSECT
+XXXX
+domainstyle
+bvarray
+Choi
+iscritical
+subschema
+slapindex
+plugin
+distinguishedNameMatch
+derefAliases
+baseObject
+kdz
+reqMod
+ldb
+srcdir
+pwdExpireWarning
+localstatedir
+sockbuf
+PENs
+ipv
+IPv
+ghenry
+hyc
+multimaster
+noop
+DEFS
+joe
+testAttr
+syncrepl
+pwdFailureTime
+timestamp
+whitespaces
+ISP
+ldp
+monitorInfo
+bjensen
+newPasswd
+irresponsive
+len
+perl
+dynlist
+browseable
+attrvalue
+pers
+retcode
+rootpw
+matchedDN
+auditReadObject
+idletimeout
+intermediateResponse
+myOID
+structuralObjectClass
+integerMatch
+openldap
+OpenLDAP
+moddn
+rewriteEngine
+AVAs
+accesslog
+searchDN
+reqOld
+MDn
+aspell
+TLSCACertificateFile
+mem
+peername
+syncUUIDs
+database's
+krb
+bool
+logins
+jts
+memberAttr
+newpasswdfile
+newPasswdFile
+ucdata
+LLL
+confdir
+BerValues
+olcDbLinearIndex
+Elfrink
+AUTOREMOVE
+countp
+realloc
+bsize
+CThreads
+structs
+desc
+LTCOMPILE
+bindmethod
+olcDbCheckpoint
+modme
+refreshOnly
+PIII
+pwdPolicySubentry
+FIXME
+realanonymous
+caseExactMatch
+olcSizeLimit
+Bourne
+attr
+objectidentifier
+objectIdentifier
+refint
+msgtype
+OBJEXT
+LRL
+subtrees
+realdnattr
+entrymods
+admittable
+libtool's
+dupbv
+searchResultEntry
+lud
+modifyTimestamp
+TLSEphemeralDHParamFile
+LRU
+syncprov
+strvals
+preread
+auth
+nis
+regexec
+adamsom
+objclasses
+deallocation
+strdup
+gsMatch
+adamson
+UniqueName
+ppErrStr
+DESTDIR
+oid
+saslpasswd
+interoperate
+bindwhen
+Solaris
+oOjM
+msg
+submatch
+refreshAndPersist
+monitorServer
+attributeUsage
+soelim
+objectIdentiferMatch
+olc
+PEM
+Autoconf
+alloc
+PDU
+OLF
+inetorgperson
+inetOrgPerson
+deleteoldrdn
+monitorCounterObject
+pid
+CPAN
+sharedstatedir
+OLP
+LDFLAGS
+dereferencing
+errcodep
+xeXBkeFxlZ
+accessor's
+extendedop
+ple
+NTP
+reqSizeLimit
+ORed
+NUL
+namingContexts
+num
+reqAttrsOnly
+ldappasswd
+online
+libdir
+unindexed
+ObjectClassDescription
+attrdesc
+efgh
+exopPasswdDN
+ranlib
+olcAttributeOptions
+lineno
+storages
+nameAndOptionalUID
+png
+INCPATH
+organizationalPerson
+integerOrderingMatch
+OSI
+subschemaSubentry
+cond
+conf
+bvec
+rdn
+ECHOPROMPT
+RDBM
+subany
+runningslapd
+configs
+datagram
+crlcheck
+conn
+builddir
+OTP
+entrylimit
+attrdescN
+logold
+pos
+sbi
+PRD
+reqEntries
+pre
+bvals
+unixusers
+olcReadonly
+olcReadOnly
+pwdChangedTime
+mySQL
+sdf
+suffixmassage
+referralDN
+sed
+statslog
+perror
+ldapexop
+bvecadd
+distributedOperation
+sel
+versa
+TBC
+telephonenumber
+telephoneNumber
+DLDAP
+peernamestyle
+SHA
+filename
+rpath
+argsfile
+ptr
+INCDIR
+pwd
+dctree
+rnd
+quanah
+lastmod
+TCL
+sprintf
+shm
+logops
+dnattr
+subdir
+searchAttrDN
+cctrls
+tcp
+strlen
+spellcheck
+ludpp
+typedef
+olcDbIDLcacheSize
+ostring
+mwrscdx
+SMD
+UCD
+cancelled
+crit
+lucyB
+slp
+rdns
+CPUs
+TGT
+modulepath
+quickstart
+mySNMP
+tgz
+UDP
+RDBMs
+rdbms
+Matic
+qdstring
+gunzip
+librewrite
+UFl
+src
+lastName
+ufn
+cron
+sql
+pwdPolicyChecker
+uid
+olcDbConfig
+refreshDone
+ssf
+replogfile
+rwm
+TOC
+vec
+LDAPDN
+compareAttrDN
+endmacro
+tls
+repl
+monitoringslapd
+referralsp
+tmp
+SRP
+olcDbNosync
+conns
+SSL
+PDkzODdASFxOQ
+SRV
+rwx
+sss
+deallocators
+Contribware
+URLlist
+str
+subinitial
+CSNs
+sbin
+dbtools
+datasource
+sbio
+posp
+errText
+prepended
+labeledURI
+scdx
+startup
+const
+wBDABALD
+octetStringSubstringsStringMatch
+ttl
+bvalue
+bvdup
+stringa
+stringb
+hasSubordinates
+oldPasswd
+sys
+pwdPolicy
+slapd
+sasl
+slapauth
+MANCOMPRESS
+octetStringOrderingStringMatch
+updatedn
+UpdateDN
+slapdindex
+searchFilter
+uri
+slapi
+tty
+liblunicode
+url
+entryExpireTimestamp
+priv
+slapo
+UTF
+vlv
+ctrl
+TXN
+virtualnamingcontext
+eatBlanks
+slimit
+ldaprc
+usr
+txt
+proc
+generalizedTime
+loopback
+unmassaged
+mechs
+freemods
+initgroups
+auditCompare
+GDBM
+DSA's
+compareFalse
+resultCode
+resultcode
+noSuchObject
+params
+groupnummer
+searchEntryDN
+negttl
+chainingPreferred
+TABs
+retdatap
+errAuxObject
+postoperation
+realself
+olcPasswordHash
+concat
+debuglevel
+addAttrDN
+credp
+ldaphost
+pwdMaxFailure
+octetStringMatch
+extparam
+auditWriteObject
+colaligns
+Diffie
+attributevalue
+AttributeValue
+SIGTERM
+MyCompany
+al
+AAQSkZJRgABAAAAAQABAAD
+cd
+contextCSN
+ar
+pthreads
+monitorTimestamp
+de
+reqAuthzID
+backend's
+backends
+cn
+lcrypto
+infodir
+groupstyle
+ldapsearch
+cp
+displayName
+eg
+bv
+olcBackendConfig
+dn
+fd
+LDAPSync
+fG
+fi
+eq
+FIPS
+dx
+et
+eu
+hh
+olcLogLevel
+slurpd
+logevels
+IG
+addDN
+tbls
+ldapmodify
+kb
+syslog
+io
+ip
+dynacl
+aXRoIGEgc
+enum
+slapdconf
+reqFilter
+ld
+xyz
+TLSCertificateFile
+idassert
+failover
+kerberos
+lookups
+md
+iZ
+SysNet
+BerValue
+idlcachesize
+struct
+UCASE
+errno
+syslogged
+mk
+ng
+oc
+errOp
+pwdMaxAge
+truelies
+NL
+mr
+reindex
+newentry
+ok
+mv
+preinstalled
+regex
+saslmech
+rc
+config
+ou
+policyDN
+sb
+olcSyncrepl
+QN
+strtol
+runtime
+NOSYNC
+slapover
+RL
+sockname
+MANCOMPRESSSUFFIX
+makeinfo
+coltags
+ro
+rp
+EXEEXT
+sockurl
+th
+sn
+ru
+UG
+ss
+su
+TP
+reqMethod
+XLIBS
+PhotoObject
+tt
+keycol
+namingContext
+rlookups
+searchstack
+NOECHOPROMPT
+sldb
+wi
+AlmostASearchRequest
+xf
+param
+MChAODQ
+caseExactIA
+Vu
+Za
+idlecachesize
+ws
+errSleepTime
+INSTALLFLAGS
+pthread
+pwdHistory
+slen
+errUnsolicitedOID
+dyngroup
+filtertype
+rewriteRules
+criticality
+preoperation
+smbk
+subord
+reqVersion
+errp
+ZZ
+entryCSNs
+dlopen
+continuated
+newsuperior
+newSuperior
+Preprocessor
+XXLIBS
+deallocate
+reqScope
+llber
+bitstringa
+sbindir
+apache's
+noidlen
+monitorContext
+resync
+fqdn
+authPassword
+LDAPMatchingRule
+olcIdleTimeout
+treedelete
+auditAdd
+reqSession
+derated
+LDVERSION
+IANA
+olcDbSearchStack
+bitstrings
+rscdx
+schemas
+minssf
+ldapadd
+pseudorootdn
+lldap
+gssapi
+applicatio
+nelems
+liblutil
+wrscdx
+scherr
+internet
+logfilter
+lutil
+themself
+libexec
+dnpattern
+proxying
+reqType
+Kartik
+libexecdir
+inetd
+pwdSafeModify
+contrib
+FQDNs
+bjorn
+myLDAP
+SNMP
+myObjectClass
+thru
+olcLastMod
+commonName
+testTwo
+olcFrontendConfig
+LDAPObjectClass
+attributeTypes
+LTINSTALL
+hostname
+Symas
+numattrsets
+msgid
+ldapmodrdn
+ldapbis
+attributeoptions
+serverID
+memberof
+pseudorootpw
+CFLAGS
+substr
+pwdAllowUserChange
+rewriteRule
+XXXXXXXXXX
+credlen
+departmentNumber
+rewriteMap
+logfile
+vals
+LDAPAVA
+modifyAttrDN
+dcedn
+olcOverlay
+exop
+berelement
+BerElement
+olcRootDN
+octetString
+SampleLDAP
+expr
+PostgreSQL
+bvstr
+filesystem
+pathtest
+objectClass
+objectclass
+submatches
+newrdn
+armijo
+addBlanks
+reqMessage
+exts
+SSHA
+func
+filterlist
+modifyDN
+syncuser
+Masarati
+LDAPSyntax
+oldpasswdfile
+oldPasswdFile
+reqDN
+SSFs
+ietf
+unwillingToPerform
+oidlen
+searchFilterAttrDN
+CPPFLAGS
+slapadd
+Clatworthy
+urldesc
+substrings
+Apurva
+slapacl
+multiclassing
+monitoredInfo
+LTLINK
+ETCDIR
+reqId
+setspec
+scanf
+TLSv
+distinguishedname
+distinguishedName
+BerVarray
+caseIgnoreSubstrin
+ldapwhoami
+URLattr
+generalizedTimeOrderingMatch
+requestdata
+timelimit
+subr
+cachesize
+olcRootPW
+SSLv
+domainScope
+LDAPMessage
+LTVERSION
+memalloc
+refreshDeletes
+BerkeleyDB
+pathspec
+uint
+Poitou
+whitespace
+dynstyle
+slaptest
+zeilenga
+WebUpdate
+numericoid
+changelog
+ChangeLog
+creatorsName
+ascii
+wahl
+uniqueMember
+slapcat
+lwrap
+ldapfilter
+errDisconnect
+sermersheim
+rootdns
+searchResult
+libtool
+servercredp
+AttributeTypeDescription
+LTFLAGS
+authcDN
+TLSCipherSuite
+supportedSASLMechanisms
+rootDSE
+dsaparam
+cachefree
+UMich's
+schemadir
+attribute's
+extern
+varchar
+olcDbCacheSize
+olcDbCachesize
+authcid
+authcID
+POSIX
+hnPk
+ldapext
+authzFrom
+Google
+olcSchemaConfig
+newsup
+sbiod
+XXXLIBS
+LDAPBASE
+Supr
+olcDatabaseConfig
+rwxrwxrwx
+aeeiib
+reqStart
+sasldb
+somevalue
+LIBRELEASE
+starttls
+StartTLS
+LDAPSchemaExtensionItem
+reqReferral
+shtool
+Pierangelo
+attrstyle
+backend
+portnumber
+subjectAltName
+errObject
+valsort
+bervals
+berval's
+derefFindingBaseObj
+checkpointed
+keytab
+groupnaam
+frontend
+sctrls
+dbnum
+olcLdapConfig
+sessionlog
+attrset
+entryCSN
+strcast
+kbyte
+modifiersName
+keytbl
+olcHdbConfig
+README
+memcalloc
+inet
+saslargs
+givenname
+givenName
+olcDbMode
+pidfile
+olcLimits
+memvfree
+tuple
+superset
+directoryString
+proxyTemplate
+proxytemplate
+wildcards
+monitoredObject
+TTLs
+LxsdLy
+olcTimeLimit
+stringal
+init
+Locators
+bvalues
+reqResult
+impl
+outvalue
+returnCode
+returncode
+attributeDescription
+attrval
+dnssrv
+ciphersuite
+auditlog
+reqControls
+notypes
+myAttributeType
+stringbv
+keyval
+calloc
+chmod
+Subbarao
+setstyle
+subdirectories
+errlist
+slapdn
+uncached
+ldapapiinfo
+groupOfUniqueNames
+dhparam
+slapd's
+slapds
+inputfile
+RDBMSes
+wildcard
+Locator
+errAbsObject
+errABsObject
+SASL's
+html
+searchResultDone
+olcBdbConfig
+ldapmod
+LDAPMod
+olcHidden
+userPassword
+TLSRandFile
+use'd
+auditBind
+requestDN
+lockdetect
+selfstyle
+liblber
+ERXRTc
+printf
+AutoConfig
+localhost
+lber
+noprompt
+databasenumber
+hasSubordintes
+URIs
+lang
+auditSearch
+ldapdelete
+reqTimeLimit
+cacertdir
+queryid
+Warper
+XDEFS
+urls
+URL's
+postalAddress
+postaladdress
+passwd
+plugins
+george
+http
+uppercased
+Poobah
+libldap
+ldap
+ldbm
+ursula
+LDAPModifying
+slapdconfig
+dnSubtreeMatch
+olcSaslSecProps
+olcSaslSecprops
+auditModify
+groupOfNames
+jensen
+reloadHint
+prepending
+olcGlobal
+matchingRule
+matchingrule
+SmVuc
+MSSQL
+hostnames
+ctrlp
+lltdl
+ctrls
+rewriter
+secprops
+namespace
+whsp
+realusers
+dnstyle
+suffixalias
+proxyAttrset
+proxyAttrSet
+proxyattrset
+pwdMustChange
+ldif
+bvfree
+sleeptime
+pwdCheckQuality
+msgidp
+pwdAttribute
+PRNGD
+LDAPRDN
+entryUUIDs
+proxycache
+proxyCache
+SERATGCgaGBYWGDEjJR
+noanonymous
+accessee
+createTimestamp
+nretries
+auditAbandon
+LDAPAttributeType
+logdb
+procs
+realdn
+alwaysDerefAliases
+ppolicy
+jpeg
+functionalities
+pcache
+caseIgnoreMatch
+sysconfdir
+checkpointing
+rebindproc
+dryrun
+noplain
+exattrs
+Jong
+proxied
+firstName
+accesslevel
+login
+rewriteContext
+dcObject
+newparent
+numericStringMatch
+TLSVerifyClient
+subtree
+multi
+immSupr
+manpage
+assciated
+wZFQrDD
+serverctrlsp
+onelevel
+abcd
+reqcert
+referralsRequired
+Hyuk
+olcServerID
+reqDerefAliases
+newSuperiorDN
+passwdfile
+errMatchedDN
+everytime
+mkdep
+olcDbindex
+olcDbIndex
+syntaxOID
+reqData
+databasetype
+woid
+numericStringOrderingMatch
+clientctrls
+RetCodes
+pwdAccountLockedTime
+attrtype
+LIBVERSION
+proto
+endif
+reqNewRDN
+ldapi
+notoc
+matcheddnp
+mkdir
+mech
+pwdMinAge
+ldaps
+userCertificate
+LDAPv
+IPsec
+tokenization
+olcModuleList
+robert
+generalizedTimeMatch
+UMLDAP
+OpenLDAP's
+lookup
+ABNF
+olcDbShmKey
+pwdLockoutDuration
+TLSCACertificatePath
+ldapuri
+ldapurl
+ACIs
+behera
+olcObjectIdentifier
+endblock
+proxyAuthz
+pagedResults
+bitstring
+ACLs
+berptr
+olcModuleLoad
+attributetype
+attributeType
+auditModRDN
+cacert
+freebuf
+IDSET
+pwdGraceAuthnLimit
+invalue
+XKYnrjvGT
+srvtab
+referralAttrDN
+requestoid
+basename
+substring
+booleanMatch
+babs
+pPasswd
+msgfree
+slapdconfigfile
+olcDatabase
+builtin
+hardcoded
+SIGINT
+MAXLEN
+xpasswd
+cleartext
+extensibleObject
+pwdLockout
+SIGHUP
+reqDeleteOldRDN
+reqAttr
+subfinal
+berval
+octothorpe
+LTONLY
+filesystems
+urandom
+NDBM
+abcdefgh
+olcBackend
+errmsgp
+boolean
+updateref
+regcomp
+contextp
+filtercomp
+LDAPNOINIT
+deref
+preallocated
+syntaxes
+memberURL
+monitorRuntimeConfig
+bindDn
+bindDN
+binddn
+methodp
+timelimitExceeded
+pwdInHistory
+LTSTATIC
+requestors
+requestor's
+LDAPCONF
+saslauthd
+MKDEPFLAG
+gecos
+entryUUID
+gnutls
+GNUtls
+GnuTLS
+postread
+timeval
+DHAVE
+caseIgnoreSubstringsMatch
+monitorIsShadow
+syncdata
+olcPidFile
+hostport
+backload
+bindir
+olcObjectClasses
+auditObject
+LDIFv
+strcasecmp
+LTHREAD
+dereferenced
+entryTtl
+LDAPControl
+pwdMinLength
+ldapcompare
+readonly
+readOnly
+RANDFILE
+attrlist
+aci
+directoryOperation
+selfwrite
+pwdReset
+acl
+attrname
+ADH
+searchable
+bindmethods
+logpurge
+reqNewSuperior
+multiproxy
+dereferences
+datadir
+malloc
+UUIDs
+veryclean
+userid
+Kumar
+AES
+bdb
+manageDSAit
+ManageDsaIT
+bindpw
+monitorContainer
+pEntry
+baz
+memfree
+lresolv
+objectIdentifierMatch
+Blowfish
+mkln
+numericStringSubstringsMatch
+openssl
+OpenSSL
+ModName
+cacheable
+freeit
+pathname
+ber
+ali
+mandir
+changetype
+CAs
+CA's
+typeA
+bvecfree
+ODBC
+typeB
+unescaped
+devel
+pwdCheckModule
+LDAPURLDesc
+authzDN
diff --git a/doc/guide/admin/backends.sdf b/doc/guide/admin/backends.sdf
new file mode 100644
index 0000000000..013288f453
--- /dev/null
+++ b/doc/guide/admin/backends.sdf
@@ -0,0 +1,262 @@
+# $OpenLDAP$
+# Copyright 2007 The OpenLDAP Foundation, All Rights Reserved.
+# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
+
+H1: Backends
+
+
+H2: Berkeley DB Backends
+
+
+H3: Overview
+
+The {{bdb}} backend to {{slapd}}(8) is the recommended primary backend for a 
+normal {{slapd}} database.  It uses the Oracle Berkeley DB ({{TERM:BDB}}) 
+package to store data. It makes extensive use of indexing and caching 
+(see the {{SECT:Tuning}} section) to speed data access.
+
+{{hdb}} is a variant of the {{bdb}} backend that uses a hierarchical database 
+layout which supports subtree renames. It is otherwise identical to the {{bdb}}
+ behavior, and all the same configuration options apply.
+
+Note: An {{hdb}} database needs a large {{idlcachesize}} for good search performance, 
+typically three times the {{cachesize}} (entry cache size) or larger.
+
+H3: back-bdb/back-hdb Configuration
+
+MORE LATER
+
+H3: Further Information
+
+{{slapd-bdb}}(5)
+
+H2: LDAP
+
+
+H3: Overview
+
+The LDAP backend to {{slapd}}(8) is not an actual database; instead it acts 
+as a proxy to forward incoming requests to another LDAP server. While 
+processing requests it will also chase referrals, so that referrals are fully
+processed instead of being returned to the {{slapd}} client.
+
+Sessions that explicitly {{Bind}} to the {{back-ldap}} database always create 
+their own private connection to the remote LDAP server. Anonymous sessions 
+will share a single anonymous connection to the remote server. For sessions 
+bound through other mechanisms, all sessions with the same DN will share the 
+same connection. This connection pooling strategy can enhance the proxy’s 
+efficiency by reducing the overhead of repeatedly making/breaking multiple 
+connections.
+
+The ldap database can also act as an information service, i.e. the identity 
+of locally authenticated clients is asserted to the remote server, possibly 
+in some modified form. For this purpose, the proxy binds to the remote server 
+with some administrative identity, and, if required, authorizes the asserted 
+identity. 
+
+H3: back-ldap Configuration
+
+LATER
+
+H3: Further Information
+
+{{slapd-ldap}}(5)
+
+H2: LDIF
+
+
+H3: Overview
+
+The LDIF backend to {{slapd}}(8) is a basic storage backend that stores 
+entries in text files in LDIF format, and exploits the filesystem to create 
+the tree structure of the database. It is intended as a cheap, low performance 
+easy to use backend.
+
+When using the {{cn=config}} dynamic configuration database with persistent
+storage, the configuration data is stored using this backend. See {{slapd-config}}(5)
+for more information
+
+H3: back-ldif Configuration
+
+LATER
+
+H3: Further Information
+
+{{slapd-ldif}}(5)
+
+H2: Metadirectory
+
+
+H3: Overview
+
+The meta backend to {{slapd}}(8) performs basic LDAP proxying with respect 
+to a set of remote LDAP servers, called "targets". The information contained 
+in these servers can be presented as belonging to a single Directory Information 
+Tree ({{TERM:DIT}}).
+
+A basic knowledge of the functionality of the {{slapd-ldap}}(5) backend is 
+recommended. This backend has been designed as an enhancement of the ldap 
+backend. The two backends share many features (actually they also share portions
+ of code). While the ldap backend is intended to proxy operations directed 
+ to a single server, the meta backend is mainly intended for proxying of 
+ multiple servers and possibly naming context  masquerading.
+
+These features, although useful in many scenarios, may result in excessive 
+overhead for some applications, so its use should be carefully considered.
+
+
+H3: back-meta Configuration
+
+LATER
+
+H3: Further Information
+
+{{slapd-meta}}(5)
+
+H2: Monitor
+
+
+H3: Overview
+
+The monitor backend to {{slapd}}(8) is not an actual database; if enabled, 
+it is automatically generated and dynamically maintained by slapd with 
+information about the running status of the daemon.
+
+To inspect all monitor information, issue a subtree search with base {{cn=Monitor}}, 
+requesting that attributes "+" and "*" are returned. The monitor backend produces 
+mostly operational attributes, and LDAP only returns operational attributes 
+that are explicitly requested.  Requesting attribute "+" is an extension which 
+requests all operational attributes.
+
+See the {{SECT:Monitoring}} section.
+
+H3: back-monitor Configuration
+
+LATER
+
+H3: Further Information
+
+{{slapd-monitor}}(5)
+
+H2: Null
+
+
+H3: Overview
+
+The Null backend to {{slapd}}(8) is surely the most useful part of slapd:
+
+* Searches return success but no entries.
+* Compares return compareFalse.
+* Updates return success (unless readonly is on) but do nothing.
+* Binds other than as the rootdn fail unless the database option "bind on" is given.
+* The slapadd(8) and slapcat(8) tools are equally exciting.
+
+Inspired by the {{F:/dev/null}} device.
+
+H3: back-null Configuration
+
+LATER
+
+H3: Further Information
+
+{{slapd-null}}(5)
+
+H2: Passwd
+
+
+H3: Overview
+
+The PASSWD backend to {{slapd}}(8) serves up the user account information 
+listed in the system {{passwd}}(5) file.
+
+This backend is provided for demonstration purposes only. The DN of each entry 
+is "uid=<username>,<suffix>".
+
+H3: back-passwd Configuration
+
+LATER
+
+H3: Further Information
+
+{{slapd-passwd}}(5)
+
+H2: Perl/Shell
+
+H3: Overview
+
+The Perl backend to {{slapd}}(8) works by embedding a {{perl}}(1) interpreter 
+into {{slapd}}(8). Any perl database section of the configuration file 
+{{slapd.conf}}(5) must then specify what Perl module to use. Slapd then creates 
+a new Perl object that handles all the requests for that particular instance of the backend.
+
+The Shell backend to {{slapd}}(8) executes external programs to implement 
+operations, and is designed to make it easy to tie an existing database to the 
+slapd front-end. This backend is is primarily intended to be used in prototypes.
+
+H3: back-perl/back-shell Configuration
+
+LATER
+
+H3: Further Information
+
+{{slapd-shell}}(5) and {{slapd-perl}}(5)
+
+H2: Relay
+
+
+H3: Overview
+
+The primary purpose of this {{slapd}}(8) backend is to map a naming context 
+defined in a database running in the same {{slapd}}(8) instance into a 
+virtual naming context, with attributeType and objectClass manipulation, if
+required. It requires the rwm overlay.
+
+This backend and the above mentioned overlay are experimental.
+
+H3: back-relay Configuration
+
+LATER
+
+H3: Further Information
+
+{{slapd-relay}}(5)
+
+H2: SQL
+
+
+H3: Overview
+
+The primary purpose of this {{slapd}}(8) backend is to PRESENT information 
+stored in some RDBMS as an LDAP subtree without any programming (some SQL and 
+maybe stored procedures can’t be considered programming, anyway ;).
+
+That is, for example, when you (some ISP) have account information you use in 
+an RDBMS, and want to use modern solutions that expect such information in LDAP 
+(to authenticate users, make email lookups etc.). Or you want to synchronize or 
+distribute information between different sites/applications that use RDBMSes 
+and/or LDAP. Or whatever else...
+
+It is {{B:NOT}} designed as a general-purpose backend that uses RDBMS instead of 
+BerkeleyDB (as the standard BDB backend does), though it can be used as such with 
+several limitations. Please see {{SECT: LDAP vs RDBMS}} for discussion.
+
+The idea is to use some meta-information to translate LDAP queries to SQL queries, 
+leaving relational schema untouched, so that old applications can continue using 
+it without any modifications. This allows SQL and LDAP applications to interoperate 
+without replication, and exchange data as needed.
+
+The SQL backend is designed to be tunable to virtually any relational schema without 
+having to change source (through that meta-information mentioned). Also, it uses 
+ODBC to connect to RDBMSes, and is highly configurable for SQL dialects RDBMSes 
+may use, so it may be used for integration and distribution of data on different 
+RDBMSes, OSes, hosts etc., in other words, in highly heterogeneous environment.
+
+This backend is experimental.
+
+H3: back-sql Configuration
+
+LATER
+
+H3: Further Information
+
+{{slapd-sql}}(5)
diff --git a/doc/guide/admin/config.sdf b/doc/guide/admin/config.sdf
index 05700cfe4d..f80ec4a1d3 100644
--- a/doc/guide/admin/config.sdf
+++ b/doc/guide/admin/config.sdf
@@ -15,7 +15,7 @@ directory service for your local domain only. It does not interact
 with other directory servers in any way. This configuration is shown
 in Figure 3.1.
 
-!import "config_local.gif"; align="center"; title="Local service via slapd(8) configuration"
+!import "config_local.png"; align="center"; title="Local service via slapd(8) configuration"
 FT[align="Center"] Figure 3.1: Local service configuration.
 
 Use this configuration if you are just starting out (it's the one the
@@ -32,7 +32,7 @@ referrals to other servers capable of handling requests.  You may
 run this service (or services) yourself or use one provided to you.
 This configuration is shown in Figure 3.2.
 
-!import "config_ref.gif"; align="center"; title="Local service with referrals"
+!import "config_ref.png"; align="center"; title="Local service with referrals"
 FT[align="Center"] Figure 3.2: Local service with referrals 
 
 Use this configuration if you want to provide local service and
diff --git a/doc/guide/admin/config_dit.gif b/doc/guide/admin/config_dit.gif
deleted file mode 100644
index 2327d03c72b10f9edee0971d3a9d8771517511f4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4599
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

diff --git a/doc/guide/admin/config_dit.png b/doc/guide/admin/config_dit.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd51f296da616785f4a3a9b99c45409bfa0c60a7
GIT binary patch
literal 19735
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
QlJH0Fl#+Dn3BBw8591QSh5!Hn

literal 0
HcmV?d00001

diff --git a/doc/guide/admin/config_local.gif b/doc/guide/admin/config_local.gif
deleted file mode 100644
index 6690d46fa0bf4ac445af364e46ff7435bfcfbb92..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1910
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
DT3v~c

diff --git a/doc/guide/admin/config_local.png b/doc/guide/admin/config_local.png
new file mode 100644
index 0000000000000000000000000000000000000000..5337c7ffee4deb75235db038c47f50824845498a
GIT binary patch
literal 4172
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
RE^zpUu3t0KE=D>;{s%=k3*7(!

literal 0
HcmV?d00001

diff --git a/doc/guide/admin/config_ref.gif b/doc/guide/admin/config_ref.gif
deleted file mode 100644
index 9108d3a7d417c486dbb867f1e16f7c4700e5c6c9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3134
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
W<5SWn`4j5HHoPZ3%dc4lcK;vc;P5a2

diff --git a/doc/guide/admin/config_ref.png b/doc/guide/admin/config_ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..cca3dde77648e0a1616280fbb09ae672c12453c1
GIT binary patch
literal 7556
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

literal 0
HcmV?d00001

diff --git a/doc/guide/admin/config_x500fe.gif b/doc/guide/admin/config_x500fe.gif
deleted file mode 100644
index 916a26eae3241b5002231d5a03538e2a09e376e1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1667
zcmZ?wbhEHbRA<y-_`m=J{~7-O*8wp=BJCi7|NlYUQ7{?;BQFFv{xdLh$arj6aIl#}
zSS#klhJ}aQ1(dz!cx+sBv|GYB>&}Udi;wp!ICsf-Zd!73vPST#n3n<#r<?SWnG7t7
z7o3@{6L@cp=Y;fzxt7gbb6;Fuc6O0RKcDVN;pG?Sc};(I$8+ndtE&xF#YA6he(k@)
ze`}Jgw^)Yjdbf*3TO+pV-t09BKbE`WtM-lcS#vL)T~(xaWJ&htYq2lBKRLTOsGe`%
z=^J^M7uS4OyLMXOL-M*-Rqv%Sl^;V6vFrZ++B3n#`*PxSt-c<sl1In5qEE-hnCC~_
z?213^k{iAC?*1LYMax#+-um&rZ+29j#GjI<D^C9xv-hj5$~segc9Y$oJ60cCZq1$b
zf9dPLyMLbZ*l8?xKPcn#`E!lh%g>bm{(VdEV{+Tc`u$&iJpHOJ6WCj7dfA)fUb$T5
z^U9^y^3R+UO~_;pS`yQo87sc9?Jnnw+l}SC>{0Q;VeXfzZ?v{uPM)55G_jqvj$>wr
zfl;VZtJ*?|sa+?&W-QGAU-{xjhQ!Msk9)bhQl2z!`Fdkfw?N*D#BP73G>J)`ZCg|(
z{Mq<JshR84i}(_8Nlw*i@l{J6H-COQEg{eT-tpLqlc{bCI(2!sEonS3^<;8g)x51r
zO`2l6qGqP?Z4FInC`waH2$Hj09MQMPGk8(gxelf3ey+&JGv7Rolvw6?u|s9@D^siG
z^V|4Vi7#de`|tX4)wFLeSu69NN@-0Iw^|mpzW<fho3+aYU(1AwDM_oYmtXfod%E7K
zRas?QZ$;&1tvq!+WBI-^Zk;VZGjGW(zy53b#Lbp*yENCFZhQT9^ZQL(XRlnkF<Yl|
z`@P?qJ7zu9d{vjbDC_O4uU)M7w(gzxdflGzc|RuZv$!_PAW%n5{6@`}V_^?HemT9-
zuez}In%W$nd!7Y*?w4h!9`;JBS$6nL)oh~;vp=1F5G-;2jMnLCRdZ6)w=L=pKWA1R
zVH_cRTzjRTP(F{w^f;%zCA;sQtw}r;y!`g&%WrulXKYOl`nz(@jjPiWP8R6-C{44I
z*NMN-?o|8jbmpsT-}YU*`?jpp_mk(_dn-Tu+`GNJ>T&M(`@*xrERIgr&D*f3&;IWF
zl*_L7OrIX@y>0PuTJv?w3$xe0-Zbk?SlqA9<>q!)?l-xt-n{16&sTkZ6E}CD1B2p!
c?%)u|AQ#Ut1yel(PR1-b28K!&V3}eK0E8FKUjP6A

diff --git a/doc/guide/admin/config_x500ref.gif b/doc/guide/admin/config_x500ref.gif
deleted file mode 100644
index c986d865e14689a034b9f684e3854a09c9c16b8a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2395
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

diff --git a/doc/guide/admin/dbtools.sdf b/doc/guide/admin/dbtools.sdf
index 3de7710d30..61b2aec692 100644
--- a/doc/guide/admin/dbtools.sdf
+++ b/doc/guide/admin/dbtools.sdf
@@ -18,7 +18,7 @@ special utilities provided with slapd. This method is best if you
 have many thousands of entries to create, which would take an
 unacceptably long time using the LDAP method, or if you want to
 ensure the database is not accessed while it is being created. Note
-that not all database types support these utilitites.
+that not all database types support these utilities.
 
 
 H2: Creating a database over LDAP
diff --git a/doc/guide/admin/guide.book b/doc/guide/admin/guide.book
new file mode 100644
index 0000000000..200a227edd
--- /dev/null
+++ b/doc/guide/admin/guide.book
@@ -0,0 +1,3 @@
+#HTMLDOC 1.8.27
+-t pdf14 -f "OpenLDAP-Admin-Guide.pdf" --book --toclevels 3 --no-numbered --toctitle "Table of Contents" --title --titleimage "../images/LDAPwww.gif" --linkstyle plain --size Universal --left 1.00in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --header1 ... --footer ..1 --nup 1 --tocheader .t. --tocfooter ..i --duplex --portrait --color --no-pscommands --no-xrxcomments --compression=1 --jpeg=0 --fontsize 11.0 --fontspacing 1.2 --headingfont Helvetica --bodyfont Times --headfootsize 11.0 --headfootfont Helvetica --charset iso-8859-1 --links --embedfonts --pagemode outline --pagelayout single --firstpage p1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all  --owner-password ""  --user-password "" --browserwidth 680 --no-strict --no-overflow
+admin.html
diff --git a/doc/guide/admin/install.sdf b/doc/guide/admin/install.sdf
index 18e113f529..1d4e7b5ab0 100644
--- a/doc/guide/admin/install.sdf
+++ b/doc/guide/admin/install.sdf
@@ -21,7 +21,7 @@ directly from the project's {{TERM:FTP}} service at
 
 The project makes available two series of packages for {{general
 use}}.  The project makes {{releases}} as new features and bug fixes
-come available.  Though the project takes steps to improve stablity
+come available.  Though the project takes steps to improve stability
 of these releases, it is common for problems to arise only after
 {{release}}.  The {{stable}} release is the latest {{release}} which
 has demonstrated stability through general use.
@@ -63,16 +63,18 @@ installation instructions provided with it.
 
 H3: {{TERM[expand]TLS}}
 
-OpenLDAP clients and servers require installation of {{PRD:OpenSSL}}
+OpenLDAP clients and servers require installation of either {{PRD:OpenSSL}}
+or {{PRD:GnuTLS}}
 {{TERM:TLS}} libraries to provide {{TERM[expand]TLS}} services.  Though
 some operating systems may provide these libraries as part of the
-base system or as an optional software component, OpenSSL often
-requires separate installation.
+base system or as an optional software component, OpenSSL and GnuTLS often
+require separate installation.
 
 OpenSSL is available from {{URL: http://www.openssl.org/}}.
+GnuTLS is available from {{URL: http://www.gnu.org/software/gnutls/}}.
 
 OpenLDAP Software will not be fully LDAPv3 compliant unless OpenLDAP's
-{{EX:configure}} detects a usable OpenSSL installation.
+{{EX:configure}} detects a usable TLS library.
 
 
 H3: {{TERM[expand]SASL}}
diff --git a/doc/guide/admin/intro.sdf b/doc/guide/admin/intro.sdf
index 8d40e9d724..fe8f23bb09 100644
--- a/doc/guide/admin/intro.sdf
+++ b/doc/guide/admin/intro.sdf
@@ -57,8 +57,8 @@ support browsing and searching.
 
 While some consider the Internet {{TERM[expand]DNS}} (DNS) is an
 example of a globally distributed directory service, DNS is not
-browsable nor searchable.  It is more properly described as a
-globaly distributed {{lookup}} service.
+browseable nor searchable.  It is more properly described as a
+globally distributed {{lookup}} service.
 
 
 H2: What is LDAP?
@@ -96,7 +96,7 @@ units, people, printers, documents, or just about anything else
 you can think of.  Figure 1.1 shows an example LDAP directory tree
 using traditional naming.
 
-!import "intro_tree.gif"; align="center"; \
+!import "intro_tree.png"; align="center"; \
 	title="LDAP directory tree (traditional naming)"
 FT[align="Center"] Figure 1.1: LDAP directory tree (traditional naming)
 
@@ -106,7 +106,7 @@ for directory services to be located using the {{DNS}}.
 Figure 1.2 shows an example LDAP directory tree using domain-based
 naming.
 
-!import "intro_dctree.gif"; align="center"; \
+!import "intro_dctree.png"; align="center"; \
 	title="LDAP directory tree (Internet naming)"
 FT[align="Center"] Figure 1.2: LDAP directory tree (Internet naming)
 
@@ -154,6 +154,12 @@ LDAP also supports data security (integrity and confidentiality)
 services.
 
 
+H2: When should I use LDAP?
+
+
+H2: When should I not use LDAP?
+
+
 H2: How does LDAP work?
 
 LDAP utilizes a {{client-server model}}. One or more LDAP servers
@@ -205,22 +211,127 @@ H2: What is the difference between LDAPv2 and LDAPv3?
 LDAPv3 was developed in the late 1990's to replace LDAPv2.
 LDAPv3 adds the following features to LDAP:
 
- - Strong authentication and data security services via {{TERM:SASL}}
- - Certificate authentication and data security services via {{TERM:TLS}} (SSL)
- - Internationalization through the use of Unicode
- - Referrals and Continuations
- - Schema Discovery
- - Extensibility (controls, extended operations, and more)
+ * Strong authentication and data security services via {{TERM:SASL}}
+ * Certificate authentication and data security services via {{TERM:TLS}} (SSL)
+ * Internationalization through the use of Unicode
+ * Referrals and Continuations
+ * Schema Discovery
+ * Extensibility (controls, extended operations, and more)
 
 LDAPv2 is historic ({{REF:RFC3494}}).  As most {{so-called}} LDAPv2
 implementations (including {{slapd}}(8)) do not conform to the
-LDAPv2 technical specification, interoperatibility amongst
+LDAPv2 technical specification, interoperability amongst
 implementations claiming LDAPv2 support is limited.  As LDAPv2
 differs significantly from LDAPv3, deploying both LDAPv2 and LDAPv3
 simultaneously is quite problematic.  LDAPv2 should be avoided.
 LDAPv2 is disabled by default.
 
 
+H2: LDAP vs RDBMS
+
+This question is raised many times, in different forms. The most common, 
+however, is: {{Why doesn't OpenLDAP drop Berkeley DB and use a relational 
+database management system (RDBMS) instead?}} In general, expecting that the 
+sophisticated algorithms implemented by commercial-grade RDBMS would make 
+{{OpenLDAP}} be faster or somehow better and, at the same time, permitting 
+sharing of data with other applications.
+
+The short answer is that use of an embedded database and custom indexing system 
+allows OpenLDAP to provide greater performance and scalability without loss of 
+reliability. OpenLDAP, since release 2.1, in its main storage-oriented backends 
+(back-bdb and, since 2.2, back-hdb) uses Berkeley DB concurrent / transactional 
+database software. This is the same software used by leading commercial 
+directory software.
+
+Now for the long answer. We are all confronted all the time with the choice 
+RDBMSes vs. directories. It is a hard choice and no simple answer exists.
+
+It is tempting to think that having a RDBMS backend to the directory solves all 
+problems. However, it is a pig. This is because the data models are very 
+different. Representing directory data with a relational database is going to 
+require splitting data into multiple tables.
+
+Think for a moment about the person objectclass. Its definition requires 
+attribute types objectclass, sn and cn and allows attribute types userPassword, 
+telephoneNumber, seeAlso and description. All of these attributes are multivalued, 
+so a normalization requires putting each attribute type in a separate table.
+
+Now you have to decide on appropriate keys for those tables. The primary key 
+might be a combination of the DN, but this becomes rather inefficient on most 
+database implementations.
+
+The big problem now is that accessing data from one entry requires seeking on 
+different disk areas. On some applications this may be OK but in many 
+applications performance suffers.
+
+The only attribute types that can be put in the main table entry are those that 
+are mandatory and single-value. You may add also the optional single-valued 
+attributes and set them to NULL or something if not present.
+
+But wait, the entry can have multiple objectclasses and they are organized in 
+an inheritance hierarchy. An entry of objectclass organizationalPerson now has 
+the attributes from person plus a few others and some formerly optional attribute 
+types are now mandatory.
+
+What to do? Should we have different tables for the different objectclasses? 
+This way the person would have an entry on the person table, another on 
+organizationalPerson, etc. Or should we get rid of person and put everything on 
+the second table?
+
+But what do we do with a filter like (cn=*) where cn is an attribute type that 
+appears in many, many objectclasses. Should we search all possible tables for 
+matching entries? Not very attractive.
+
+Once this point is reached, three approaches come to mind. One is to do full 
+normalization so that each attribute type, no matter what, has its own separate 
+table. The simplistic approach where the DN is part of the primary key is 
+extremely wasteful, and calls for an approach where the entry has a unique 
+numeric id that is used instead for the keys and a main table that maps DNs to 
+ids. The approach, anyway, is very inefficient when several attribute types from 
+one or more entries are requested. Such a database, though cumbersomely, 
+can be managed from SQL applications.
+
+The second approach is to put the whole entry as a blob in a table shared by all 
+entries regardless of the objectclass and have additional tables that act as 
+indices for the first table. Index tables are not database indices, but are 
+fully managed by the LDAP server-side implementation. However, the database 
+becomes unusable from SQL. And, thus, a fully fledged database system provides 
+little or no advantage. The full generality of the database is unneeded. 
+Much better to use something light and fast, like Berkeley DB. 
+
+A completely different way to see this is to give up any hopes of implementing 
+the directory data model. In this case, LDAP is used as an access protocol to 
+data that provides only superficially the directory data model. For instance, 
+it may be read only or, where updates are allowed, restrictions are applied, 
+such as making single-value attribute types that would allow for multiple values. 
+Or the impossibility to add new objectclasses to an existing entry or remove 
+one of those present. The restrictions span the range from allowed restrictions 
+(that might be elsewhere the result of access control) to outright violations of 
+the data model. It can be, however, a method to provide LDAP access to preexisting 
+data that is used by other applications. But in the understanding that we don't
+really have a "directory".
+
+Existing commercial LDAP server implementations that use a relational database 
+are either from the first kind or the third. I don't know of any implementation 
+that uses a relational database to do inefficiently what BDB does efficiently.
+For those who are interested in "third way" (exposing EXISTING data from RDBMS 
+as LDAP tree, having some limitations compared to classic LDAP model, but making 
+it possible to interoperate between LDAP and SQL applications):
+
+OpenLDAP includes back-sql - the backend that makes it possible. It uses ODBC + 
+additional metainformation about translating LDAP queries to SQL queries in your 
+RDBMS schema, providing different levels of access - from read-only to full 
+access depending on RDBMS you use, and your schema.
+
+For more information on concept and limitations, see {{slapd-sql}}(5) man page, 
+or the {{SECT: Backends}} section. There are also several examples for several 
+RDBMSes in {{F:back-sql/rdbms_depend/*}} subdirectories. 
+
+TO REFERENCE:
+
+http://blogs.sun.com/treydrake/entry/ldap_vs_relational_database
+http://blogs.sun.com/treydrake/entry/ldap_vs_relational_database_part
+
 H2: What is slapd and what can it do?
 
 {{slapd}}(8) is an LDAP directory server that runs on many different
@@ -243,7 +354,7 @@ SASL}} software which supports a number of mechanisms including
 {{B:{{TERM[expand]TLS}}}}: {{slapd}} supports certificate-based
 authentication and data security (integrity and confidentiality)
 services through the use of TLS (or SSL).  {{slapd}}'s TLS
-implementation utilizes {{PRD:OpenSSL}} software.
+implementation can utilize either {{PRD:OpenSSL}} or {{PRD:GnuTLS}} software.
 
 {{B:Topology control}}: {{slapd}} can be configured to restrict
 access at the socket layer based upon network topology information.
@@ -283,8 +394,7 @@ well-defined {{TERM:C}} {{TERM:API}}, you can write your own
 customized modules which extend {{slapd}} in numerous ways.  Also,
 a number of {{programmable database}} modules are provided.  These
 allow you to expose external data sources to {{slapd}} using popular
-programming languages ({{PRD:Perl}}, {{shell}}, {{TERM:SQL}}, and
-{{PRD:TCL}}).
+programming languages ({{PRD:Perl}}, {{shell}}, and {{TERM:SQL}}.
 
 {{B:Threads}}: {{slapd}} is threaded for high performance.  A single
 multi-threaded {{slapd}} process handles all incoming requests using
@@ -294,8 +404,10 @@ required while providing high performance.
 {{B:Replication}}: {{slapd}} can be configured to maintain shadow
 copies of directory information.  This {{single-master/multiple-slave}}
 replication scheme is vital in high-volume environments where a
-single {{slapd}} just doesn't provide the necessary availability
-or reliability.  {{slapd}} includes support for {{LDAP Sync}}-based
+single {{slapd}} installation just doesn't provide the necessary availability
+or reliability.  For extremely demanding environments where a
+single point of failure is not acceptable, {{multi-master}} replication
+is also available.  {{slapd}} includes support for {{LDAP Sync}}-based
 replication.
 
 {{B:Proxy Cache}}: {{slapd}} can be configured as a caching
@@ -304,5 +416,7 @@ LDAP proxy service.
 {{B:Configuration}}: {{slapd}} is highly configurable through a
 single configuration file which allows you to change just about
 everything you'd ever want to change.  Configuration options have
-reasonable defaults, making your job much easier.
+reasonable defaults, making your job much easier. Configuration can
+also be performed dynamically using LDAP itself, which greatly
+improves manageability.
 
diff --git a/doc/guide/admin/intro_dctree.gif b/doc/guide/admin/intro_dctree.gif
deleted file mode 100644
index 5be4b171ac5a28e3b4e279aba0f0025b8b6815b9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6054
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

diff --git a/doc/guide/admin/intro_dctree.png b/doc/guide/admin/intro_dctree.png
new file mode 100644
index 0000000000000000000000000000000000000000..099588c5bc62158236f6d16218eb96cb3d54273b
GIT binary patch
literal 21788
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
A?EnA(

literal 0
HcmV?d00001

diff --git a/doc/guide/admin/intro_tree.gif b/doc/guide/admin/intro_tree.gif
deleted file mode 100644
index 376e28778fec5ae85bfdb2c9989c73d55c35d710..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6622
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
MhNU2GBM^}I9~A4)g8%>k

diff --git a/doc/guide/admin/intro_tree.png b/doc/guide/admin/intro_tree.png
new file mode 100644
index 0000000000000000000000000000000000000000..043b51e8130d2497e370101b6cf3307ebdb16831
GIT binary patch
literal 24714
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
Y*6LV`c=tJRrmqkPUmO{HI4C;pFB=3CdjJ3c

literal 0
HcmV?d00001

diff --git a/doc/guide/admin/maintenance.sdf b/doc/guide/admin/maintenance.sdf
new file mode 100644
index 0000000000..5bba1a5f5a
--- /dev/null
+++ b/doc/guide/admin/maintenance.sdf
@@ -0,0 +1,110 @@
+# $OpenLDAP$
+# Copyright 2007 The OpenLDAP Foundation, All Rights Reserved.
+# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
+
+H1: Maintenance
+
+System Administration is all about maintenance, so it is only fair that we 
+discuss how to correctly maintain an OpenLDAP deployment.
+
+
+H2: Directory Backups
+
+MORE
+
+You can use {{slapcat}}(8) to generate an LDIF file for each of your {{slapd}}(8) 
+back-bdb or back-hdb databases.
+
+>    slapcat -f slapd.conf -b "dc=example,dc=com"
+
+For back-bdb and back-hdb, this command may be ran while slapd(8) is running.
+
+MORE
+
+
+H2: Berkeley DB Logs
+
+Berkeley DB log files grow, and the administrator has to deal with it. The 
+procedure is known as log file archival or log file rotation. 
+
+Note: The actual log file rotation is handled by the Berkeley DB engine.
+
+Logs of current transactions need to be stored into files so that the database 
+can be recovered in the event of an application crash. Administrators can change 
+the size limit of a single log file (by default 10MB), and have old log files 
+removed automatically, by setting up DB environment (see below). The reason 
+Berkeley DB never deletes any log files by default is that the administrator 
+may wish to backup the log files before removal to make database recovery 
+possible even after a catastrophic failure, such as file system corruption.
+
+Log file names are {{F:log.XXXXXXXXXX}} (X is a digit). By default the log files 
+are located in the BDB backend directory. The {{F:db_archive}} tool knows what 
+log files are used in current transactions, and what are not. Administrators can 
+move unused log files to a backup media, and delete them. To have them removed 
+automatically, place set_flags {{DB_LOG_AUTOREMOVE}} directive in {{F:DB_CONFIG}}. 
+
+Note: If the log files are removed automatically, recovery after a catastrophic 
+failure is likely to be impossible.
+
+The files with names {{F:__db.001}}, {{F:__db.002}}, etc are just shared memory 
+regions (or whatever). These ARE NOT 'logs', they must be left alone. Don't be 
+afraid of them, they do not grow like logs do.
+
+To understand the {{F:db_archive}} interface, the reader should refer to 
+chapter 9 of the Berkeley DB guide. In particular, the following chapters are 
+recommended:
+
+* Database and log file archival
+* Log file removal
+* Recovery procedures
+* Hot failover
+
+Advanced installations can use special environment settings to fine-tune some 
+Berkeley DB options (change the log file limit, etc). This can be done by using 
+the {{F:DB_CONFIG}} file. This magic file can be created in BDB backend directory 
+set up by {{slapd.conf}}(5). More information on this file can be found in File 
+naming chapter. Specific directives can be found in C Interface, look for 
+{{DB_ENV->set_XXXX}} calls.
+
+Note: options set in {{F:DB_CONFIG}} file override options set by OpenLDAP. 
+Use them with extreme caution. Do not use them unless You know what You are doing.
+
+The advantages of {{F:DB_CONFIG}} usage can be the following:
+
+* to keep data files and log files on different mediums (i.e. disks) to improve 
+  performance and/or reliability;
+* to fine-tune some specific options (such as shared memory region sizes);
+* to set the log file limit (please read Log file limits before doing this).
+
+To figure out the best-practice BDB backup scenario, the reader is highly 
+recommended to read the whole Chapter 9: Berkeley DB Transactional Data Store Applications. 
+This chapter is a set of small pages with examples in C language. Non-programming 
+people can skip this examples without loss of knowledge.
+
+
+H2: Checkpointing
+
+MORE/TIDY
+
+If you put "checkpoint 1024 5" in slapd.conf (to checkpoint after 1024kb or 5 minutes, 
+for example), this does not checkpoint every 5 minutes as you may think. 
+The explanation from Howard is:
+
+'In OpenLDAP 2.1 and 2.2 the checkpoint directive acts as follows - *when there 
+is a write operation*, and more than <check> minutes have occurred since the 
+last checkpoint, perform the checkpoint. If more than <check> minutes pass after 
+a write without any other write operations occurring, no checkpoint is performed, 
+so it's possible to lose the last write that occurred.''
+
+In other words, a write operation occurring less than "check" minutes after the 
+last checkpoint will not be checkpointed until the next write occurs after "check" 
+minutes have passed since the checkpoint.
+
+This has been modified in 2.3 to indeed checkpoint every so often; in the meantime 
+a workaround is to invoke "db_checkpoint" from a cron script every so often, say 5 minutes. 
+
+H2: Migration
+
+Exporting to a new system......
+
+
diff --git a/doc/guide/admin/master.sdf b/doc/guide/admin/master.sdf
index 7d7b4b2471..f9dc9ee61a 100644
--- a/doc/guide/admin/master.sdf
+++ b/doc/guide/admin/master.sdf
@@ -48,6 +48,12 @@ PB:
 !include "dbtools.sdf"; chapter
 PB:
 
+!include "backends.sdf"; chapter
+PB:
+
+!include "overlays.sdf"; chapter
+PB:
+
 !include "schema.sdf"; chapter
 PB:
 
@@ -60,25 +66,32 @@ PB:
 !include "tls.sdf"; chapter
 PB:
 
-!include "monitoringslapd.sdf"; chapter
+!include "referrals.sdf"; chapter
 PB:
 
-#!include "tuning.sdf"; chapter
-#PB:
+!include "replication.sdf"; chapter
+PB:
 
-!include "referrals.sdf"; chapter
+!include "maintenance.sdf"; chapter
 PB:
 
-!include "replication.sdf"; chapter
+!include "monitoringslapd.sdf"; chapter
 PB:
 
-!include "syncrepl.sdf"; chapter
+!include "tuning.sdf"; chapter
 PB:
 
-!include "proxycache.sdf"; chapter
+!include "troubleshooting.sdf"; chapter
 PB:
 
 # Appendices 
+!include "appendix-changes.sdf"; appendix
+PB:
+
+# Config file examples
+!include "appendix-configs.sdf"; appendix
+PB:
+
 # Terms
 !include "glossary.sdf"; appendix
 PB:
diff --git a/doc/guide/admin/monitoringslapd.sdf b/doc/guide/admin/monitoringslapd.sdf
index cc2311b605..a21ebcaf5b 100644
--- a/doc/guide/admin/monitoringslapd.sdf
+++ b/doc/guide/admin/monitoringslapd.sdf
@@ -55,7 +55,7 @@ First, ensure {{core.schema}} schema configuration file is included
 by your {{slapd.conf}}(5) file.  The {{monitor}} backend requires
 it.
 
-Second, instanticate the {{monitor backend}} by adding a
+Second, instantiate the {{monitor backend}} by adding a
 {{database monitor}} directive below your existing database
 sections.  For instance:
 
@@ -64,7 +64,7 @@ sections.  For instance:
 Lastly, add additional global or database directives as needed.
 
 Like most other database backends, the monitor backend does honor
-slapd(8) access and other adminstrative controls.   As some monitor
+slapd(8) access and other administrative controls.   As some monitor
 information may be sensitive, it is generally recommend access to
 cn=monitor be restricted to directory administrators and their
 monitoring agents.  Adding an {{access}} directive immediately below
@@ -99,7 +99,7 @@ Note that unlike general purpose database backends, the database
 suffix is hardcoded.  It's always {{EX:cn=Monitor}}.  So no {{suffix}}
 directive should be provided.  Also note that general purpose
 database backends, the monitor backend cannot be instantiated
-multiple times.  That is, there can only be one (or zero) occurances
+multiple times.  That is, there can only be one (or zero) occurrences
 of {{EX:database monitor}} in the server's configuration.
 
 
@@ -498,3 +498,8 @@ Write waiters:
 >   entryDN: cn=Write,cn=Waiters,cn=Monitor
 >   subschemaSubentry: cn=Subschema
 >   hasSubordinates: FALSE
+
+Add new monitored things here and discuss, referencing man pages and present
+examples
+
+
diff --git a/doc/guide/admin/overlays.sdf b/doc/guide/admin/overlays.sdf
new file mode 100644
index 0000000000..b153978ece
--- /dev/null
+++ b/doc/guide/admin/overlays.sdf
@@ -0,0 +1,413 @@
+# $OpenLDAP$
+# Copyright 2007 The OpenLDAP Foundation, All Rights Reserved.
+# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
+
+H1: Overlays
+
+Overlays are software components that provide hooks to functions analogous to 
+those provided by backends, which can be stacked on top of the backend calls 
+and as callbacks on top of backend responses to alter their behavior. 
+
+Overlays may be compiled statically into slapd, or when module support
+is enabled, they may be dynamically loaded. Most of the overlays
+are only allowed to be configured on individual databases, but some
+may also be configured globally.
+
+Essentially they represent a means to:
+
+    * customize the behavior of existing backends without changing the backend 
+      code and without requiring one to write a new custom backend with 
+      complete functionality
+    * write functionality of general usefulness that can be applied to 
+      different backend types
+
+Overlays are usually documented by separate specific man pages in section 5; 
+the naming convention is
+
+>        slapo-<overlay name>
+
+Not all distributed overlays have a man page yet. Feel free to contribute one, 
+if you think you well understood the behavior of the component and the 
+implications of all the related configuration directives.
+
+Official overlays are located in
+
+>        servers/slapd/overlays/
+
+That directory also contains the file slapover.txt, which describes the 
+rationale of the overlay implementation, and may serve as guideline for the 
+development of custom overlays.
+
+Contribware overlays are located in
+
+>        contrib/slapd-modules/<overlay name>/
+
+along with other types of run-time loadable components; they are officially 
+distributed, but not maintained by the project.
+
+They can be stacked on the frontend as well; this means that they can be 
+executed after a request is parsed and validated, but right before the 
+appropriate database is selected. The main purpose is to affect operations 
+regardless of the database they will be handled by, and, in some cases, 
+to influence the selection of the database by massaging the request DN. 
+
+All the current overlays in 2.4 are listed and described in detail in the 
+following sections.
+
+
+H2: Access Logging
+
+
+H3: Overview
+
+This overlay can record accesses to a given backend database on another
+database.
+
+
+H3: Access Logging Configuration
+
+
+H2: Audit Logging
+
+This overlay records changes on a given backend database to an LDIF log
+file.
+   
+   
+H3: Overview
+
+
+H3: Audit Logging Configuration
+
+
+H2: Chaining
+
+
+H3: Overview
+
+The chain overlay provides basic chaining capability to the underlying 
+database.
+
+What is chaining? It indicates the capability of a DSA to follow referrals on 
+behalf of the client, so that distributed systems are viewed as a single 
+virtual DSA by clients that are otherwise unable to "chase" (i.e. follow) 
+referrals by themselves.
+
+The chain overlay is built on top of the ldap backend; it is compiled by 
+default when --enable-ldap.
+
+
+H3: Chaining Configuration
+
+
+H2: Constraints
+
+
+H3: Overview
+
+This overlay enforces a regular expression constraint on all values
+of specified attributes. It is used to enforce a more rigorous
+syntax when the underlying attribute syntax is too general.
+
+
+H3: Constraint Configuration
+   
+   
+H2: Dynamic Directory Services
+
+
+H3: Overview
+
+This overlay supports dynamic objects, which have a limited life after
+which they expire and are automatically deleted.
+   
+   
+H3: Dynamic Directory Service Configuration
+
+
+H2: Dynamic Groups
+
+
+H3: Overview
+
+This overlay extends the Compare operation to detect
+members of a dynamic group. This overlay is now deprecated
+as all of its functions are available using the
+{{SECT:Dynamic Lists}} overlay.
+
+
+H3: Dynamic Group Configuration
+
+
+H2: Dynamic Lists
+   
+   
+H3: Overview
+
+This overlay allows expansion of dynamic groups and more.
+
+
+H3: Dynamic List Configuration
+
+
+H2: Reverse Group Membership Maintenance
+
+
+H3: Member Of Configuration
+
+
+H2: The Proxy Cache Engine
+
+{{TERM:LDAP}} servers typically hold one or more subtrees of a
+{{TERM:DIT}}. Replica (or shadow) servers hold shadow copies of
+entries held by one or more master servers.  Changes are propagated
+from the master server to replica (slave) servers using LDAP Sync
+replication.  An LDAP cache is a special type of replica which holds
+entries corresponding to search filters instead of subtrees.
+
+H3: Overview
+
+The proxy cache extension of slapd is designed to improve the
+responsiveness of the ldap and meta backends. It handles a search
+request (query)
+by first determining whether it is contained in any cached search
+filter. Contained requests are answered from the proxy cache's local
+database. Other requests are passed on to the underlying ldap or
+meta backend and processed as usual.
+
+E.g. {{EX:(shoesize>=9)}} is contained in {{EX:(shoesize>=8)}} and
+{{EX:(sn=Richardson)}} is contained in {{EX:(sn=Richards*)}}
+
+Correct matching rules and syntaxes are used while comparing
+assertions for query containment. To simplify the query containment
+problem, a list of cacheable "templates" (defined below) is specified
+at configuration time. A query is cached or answered only if it
+belongs to one of these templates. The entries corresponding to
+cached queries are stored in the proxy cache local database while
+its associated meta information (filter, scope, base, attributes)
+is stored in main memory. 
+
+A template is a prototype for generating LDAP search requests.
+Templates are described by a prototype search filter and a list of
+attributes which are required in queries generated from the template.
+The representation for prototype filter is similar to {{REF:RFC4515}},
+except that the assertion values are missing. Examples of prototype
+filters are: (sn=),(&(sn=)(givenname=)) which are instantiated by
+search filters (sn=Doe) and (&(sn=Doe)(givenname=John)) respectively.
+
+The cache replacement policy removes the least recently used (LRU)
+query and entries belonging to only that query. Queries are allowed
+a maximum time to live (TTL) in the cache thus providing weak
+consistency. A background task periodically checks the cache for
+expired queries and removes them.
+
+The Proxy Cache paper
+({{URL:http://www.openldap.org/pub/kapurva/proxycaching.pdf}}) provides
+design and implementation details.
+
+
+H3: Proxy Cache Configuration
+
+The cache configuration specific directives described below must
+appear after a {{EX:overlay proxycache}} directive within a
+{{EX:"database meta"}} or {{EX:database ldap}} section of
+the server's {{slapd.conf}}(5) file.
+
+H4: Setting cache parameters
+
+> proxyCache <DB> <maxentries> <nattrsets> <entrylimit> <period>
+
+This directive enables proxy caching and sets general cache
+parameters.  The <DB> parameter specifies which underlying database
+is to be used to hold cached entries.  It should be set to
+{{EX:bdb}} or {{EX:hdb}}.  The <maxentries> parameter specifies the
+total number of entries which may be held in the cache.  The
+<nattrsets> parameter specifies the total number of attribute sets
+(as specified by the {{EX:proxyAttrSet}} directive) that may be
+defined.  The <entrylimit> parameter specifies the maximum number of
+entries in a cacheable query.  The <period> specifies the consistency
+check period (in seconds).  In each period, queries with expired
+TTLs are removed.
+
+H4: Defining attribute sets
+
+> proxyAttrset <index> <attrs...>
+
+Used to associate a set of attributes to an index. Each attribute
+set is associated with an index number from 0 to <numattrsets>-1.
+These indices are used by the proxyTemplate directive to define
+cacheable templates.
+
+H4: Specifying cacheable templates 
+
+> proxyTemplate <prototype_string> <attrset_index> <TTL>
+
+Specifies a cacheable template and the "time to live" (in sec) <TTL>
+for queries belonging to the template. A template is described by
+its prototype filter string and set of required attributes identified
+by <attrset_index>.
+
+
+H4: Example
+
+An example {{slapd.conf}}(5) database section for a caching server
+which proxies for the {{EX:"dc=example,dc=com"}} subtree held
+at server {{EX:ldap.example.com}}.
+ 
+>	database 	ldap
+>	suffix 		"dc=example,dc=com" 
+>	rootdn 		"dc=example,dc=com" 
+>	uri    		ldap://ldap.example.com/dc=example%2cdc=com
+>	overlay proxycache
+>	proxycache    bdb 100000 1 1000 100
+>	proxyAttrset  0 mail postaladdress telephonenumber 
+>	proxyTemplate (sn=) 0 3600
+>	proxyTemplate (&(sn=)(givenName=)) 0 3600
+>	proxyTemplate (&(departmentNumber=)(secretary=*)) 0 3600
+>
+>	cachesize 20
+>	directory ./testrun/db.2.a
+>	index       objectClass eq
+>	index       cn,sn,uid,mail  pres,eq,sub
+
+
+H5: Cacheable Queries
+
+A LDAP search query is cacheable when its filter matches one of the
+templates as defined in the "proxyTemplate" statements and when it references
+only the attributes specified in the corresponding attribute set. 
+In the example above the attribute set number 0 defines that only the
+attributes: {{EX:mail postaladdress telephonenumber}} are cached for the following
+proxyTemplates.
+
+H5: Examples:
+
+>	Filter: (&(sn=Richard*)(givenName=jack)) 
+>	Attrs: mail telephoneNumber
+
+    is cacheable, because it matches the template {{EX:(&(sn=)(givenName=))}} and its
+    attributes are contained in proxyAttrset 0.
+
+>	Filter: (&(sn=Richard*)(telephoneNumber))
+>	Attrs: givenName 
+
+    is not cacheable, because the filter does not match the template,
+    nor is the attribute givenName stored in the cache
+
+>	Filter: (|(sn=Richard*)(givenName=jack))
+>	Attrs: mail telephoneNumber
+
+    is not cacheable, because the filter does not match the template ( logical
+    OR "|" condition instead of logical AND "&" )
+                           
+                           
+H2: Password Policies
+
+
+H3: Overview
+
+This overlay provides a variety of password control mechanisms,
+e.g. password aging, password reuse and duplication control, mandatory
+password resets, etc.
+
+
+H3: Password Policy Configuration
+
+
+H2: Referential Integrity
+
+
+H3: Overview
+
+This overlay can be used with a backend database such as slapd-bdb (5)
+to maintain the cohesiveness of a schema which utilizes reference
+attributes.
+
+
+H3: Referential Integrity Configuration
+
+
+H2: Return Code
+
+
+H3: Overview
+
+This overlay is useful to test the behavior of clients when
+server-generated erroneous and/or unusual responses occur.
+
+
+H3: Return Code Configuration
+
+
+H2: Rewrite/Remap
+            
+            
+H3: Overview
+
+It performs basic DN/data rewrite and
+objectClass/attributeType mapping.
+
+
+H3: Rewrite/Remap Configuration
+
+
+H2: Sync Provider
+
+
+H3: Overview
+
+This overlay implements the provider-side support for syncrepl
+replication, including persistent search functionality
+
+
+H3: Sync Provider Configuration
+
+
+H2: Translucent Proxy
+
+
+H3: Overview
+
+This overlay can be used with a backend database such as slapd-bdb (5)
+to create a "translucent proxy".
+
+Content of entries retrieved from a remote LDAP server can be partially
+overridden by the database.
+
+
+H3: Translucent Proxy Configuration
+
+
+H2: Attribute Uniqueness
+
+
+H3: Overview
+
+This overlay can be used with a backend database such as slapd-bdb (5)
+to enforce the uniqueness of some or all attributes within a subtree.
+
+
+H3: Attribute Uniqueness Configuration
+
+
+H2: Value Sorting
+
+
+H3: Overview
+
+This overlay can be used to enforce a specific order for the values
+of an attribute when it is returned in a search.
+
+
+H3: Value Sorting Configuration
+
+
+H2: Overlay Stacking
+
+
+H3: Overview
+
+
+H3: Example Scenarios
+
+
+H4: Samba
diff --git a/doc/guide/admin/preface.sdf b/doc/guide/admin/preface.sdf
index c3d7f320b7..83db7c7c13 100644
--- a/doc/guide/admin/preface.sdf
+++ b/doc/guide/admin/preface.sdf
@@ -9,7 +9,7 @@ P1: Preface
 # document's copyright
 P2[notoc] Copyright
 
-Copyright 1998-2006, The {{ORG[expand]OLF}}, {{All Rights Reserved}}.
+Copyright 1998-2007, The {{ORG[expand]OLF}}, {{All Rights Reserved}}.
 
 Copyright 1992-1996, Regents of the {{ORG[expand]UM}}, {{All Rights Reserved}}.
 
@@ -71,5 +71,5 @@ This document was produced using the {{TERM[expand]SDF}} ({{TERM:SDF}})
 documentation system
 ({{URL:http://search.cpan.org/src/IANC/sdf-2.001/doc/catalog.html}})
 developed by {{Ian Clatworthy}}.  Tools for SDF are available from
-{{ORG:CPAN}} ({{URL:http://search.cpan.org/search?query=SDF}}).
+{{ORG:CPAN}} ({{URL:http://search.cpan.org/search?query=SDF&mode=dist}}).
 
diff --git a/doc/guide/admin/proxycache.sdf b/doc/guide/admin/proxycache.sdf
deleted file mode 100644
index 0d4dcab72b..0000000000
--- a/doc/guide/admin/proxycache.sdf
+++ /dev/null
@@ -1,148 +0,0 @@
-# $OpenLDAP$
-# Copyright 2003-2007 The OpenLDAP Foundation, All Rights Reserved.
-# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
-
-H1: The Proxy Cache Engine
-
-{{TERM:LDAP}} servers typically hold one or more subtrees of a
-{{TERM:DIT}}. Replica (or shadow) servers hold shadow copies of
-entries held by one or more master servers.  Changes are propagated
-from the master server to replica (slave) servers using LDAP Sync
-replication.  An LDAP cache is a special type of replica which holds
-entries corresponding to search filters instead of subtrees.
-
-H2: Overview
-
-The proxy cache extension of slapd is designed to improve the
-responseiveness of the ldap and meta backends. It handles a search
-request (query)
-by first determining whether it is contained in any cached search
-filter. Contained requests are answered from the proxy cache's local
-database. Other requests are passed on to the underlying ldap or
-meta backend and processed as usual.
-
-E.g. {{EX:(shoesize>=9)}} is contained in {{EX:(shoesize>=8)}} and
-{{EX:(sn=Richardson)}} is contained in {{EX:(sn=Richards*)}}
-
-Correct matching rules and syntaxes are used while comparing
-assertions for query containment. To simplify the query containment
-problem, a list of cacheable "templates" (defined below) is specified
-at configuration time. A query is cached or answered only if it
-belongs to one of these templates. The entries corresponding to
-cached queries are stored in the proxy cache local database while
-its associated meta information (filter, scope, base, attributes)
-is stored in main memory. 
-
-A template is a prototype for generating LDAP search requests.
-Templates are described by a prototype search filter and a list of
-attributes which are required in queries generated from the template.
-The representation for prototype filter is similar to {{REF:RFC4515}},
-except that the assertion values are missing. Examples of prototype
-filters are: (sn=),(&(sn=)(givenname=)) which are instantiated by
-search filters (sn=Doe) and (&(sn=Doe)(givenname=John)) respectively.
-
-The cache replacement policy removes the least recently used (LRU)
-query and entries belonging to only that query. Queries are allowed
-a maximum time to live (TTL) in the cache thus providing weak
-consistency. A background task periodically checks the cache for
-expired queries and removes them.
-
-The Proxy Cache paper
-({{URL:http://www.openldap.org/pub/kapurva/proxycaching.pdf}}) provides
-design and implementation details.
-
-
-H2: Proxy Cache Configuration
-
-The cache configuration specific directives described below must
-appear after a {{EX:overlay proxycache}} directive within a
-{{EX:"database meta"}} or {{EX:database ldap}} section of
-the server's {{slapd.conf}}(5) file.
-
-H3: Setting cache parameters
-
-> proxyCache <DB> <maxentries> <nattrsets> <entrylimit> <period>
-
-This directive enables proxy caching and sets general cache
-parameters.  The <DB> parameter specifies which underlying database
-is to be used to hold cached entries.  It should be set to
-{{EX:bdb}} or {{EX:hdb}}.  The <maxentries> parameter specifies the
-total number of entries which may be held in the cache.  The
-<nattrsets> parameter specifies the total number of attribute sets
-(as specified by the {{EX:proxyAttrSet}} directive) that may be
-defined.  The <entrylimit> parameter specifies the maximum number of
-entries in a cachable query.  The <period> specifies the consistency
-check period (in seconds).  In each period, queries with expired
-TTLs are removed.
-
-H3: Defining attribute sets
-
-> proxyAttrset <index> <attrs...>
-
-Used to associate a set of attributes to an index. Each attribute
-set is associated with an index number from 0 to <numattrsets>-1.
-These indices are used by the proxyTemplate directive to define
-cacheable templates.
-
-H3: Specifying cacheable templates 
-
-> proxyTemplate <prototype_string> <attrset_index> <TTL>
-
-Specifies a cacheable template and the "time to live" (in sec) <TTL>
-for queries belonging to the template. A template is described by
-its prototype filter string and set of required attributes identified
-by <attrset_index>.
-
-
-H3: Example
-
-An example {{slapd.conf}}(5) database section for a caching server
-which proxies for the {{EX:"dc=example,dc=com"}} subtree held
-at server {{EX:ldap.example.com}}.
- 
->	database 	ldap
->	suffix 		"dc=example,dc=com" 
->	rootdn 		"dc=example,dc=com" 
->	uri    		ldap://ldap.example.com/dc=example%2cdc=com
->	overlay proxycache
->	proxycache    bdb 100000 1 1000 100
->	proxyAttrset  0 mail postaladdress telephonenumber 
->	proxyTemplate (sn=) 0 3600
->	proxyTemplate (&(sn=)(givenName=)) 0 3600
->	proxyTemplate (&(departmentNumber=)(secretary=*)) 0 3600
->
->	cachesize 20
->	directory ./testrun/db.2.a
->	index       objectClass eq
->	index       cn,sn,uid,mail  pres,eq,sub
-
-
-H4: Cacheable Queries
-
-A LDAP search query is cacheable when its filter matches one of the
-templates as defined in the "proxyTemplate" statements and when it references
-only the attributes specified in the corresponding attribute set. 
-In the example above the attribute set number 0 defines that only the
-attributes: {{EX:mail postaladdress telephonenumber}} are cached for the following
-proxyTemplates.
-
-H4: Examples:
-
->	Filter: (&(sn=Richard*)(givenName=jack)) 
->	Attrs: mail telephoneNumber
-
-    is cacheable, because it matches the template {{EX:(&(sn=)(givenName=))}} and its
-    attributes are contained in proxyAttrset 0.
-
->	Filter: (&(sn=Richard*)(telephoneNumber))
->	Attrs: givenName 
-
-    is not cacheable, because the filter does not match the template,
-    nor is the attribute givenName stored in the cache
-
->	Filter: (|(sn=Richard*)(givenName=jack))
->	Attrs: mail telephoneNumber
-
-    is not cacheable, because the filter does not match the template ( logical
-    OR "|" condition instead of logical AND "&" )
-
diff --git a/doc/guide/admin/referrals.sdf b/doc/guide/admin/referrals.sdf
index 0b41a2a355..8756553cb8 100644
--- a/doc/guide/admin/referrals.sdf
+++ b/doc/guide/admin/referrals.sdf
@@ -132,3 +132,10 @@ or with {{ldapsearch}}(1):
 Note: the {{EX:ref}} attribute is operational and must be explicitly
 requested when desired in search results.
 
+Note: the use of referrals to construct a Distributed Directory Service is
+extremely clumsy and not well supported by common clients. If an existing
+installation has already been built using referrals, the use of the
+{{chain}} overlay to hide the referrals will greatly improve the usability
+of the Directory system. A better approach would be to use explicitly
+defined local and proxy databases in {{subordinate}} configurations to
+provide a seamless view of the Distributed Directory.
diff --git a/doc/guide/admin/replication.gif b/doc/guide/admin/replication.gif
deleted file mode 100644
index 70814033e541e4f7b828f7777aceadb923268931..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3538
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

diff --git a/doc/guide/admin/replication.sdf b/doc/guide/admin/replication.sdf
index 5f1ba20335..0df0beab28 100644
--- a/doc/guide/admin/replication.sdf
+++ b/doc/guide/admin/replication.sdf
@@ -1,356 +1,579 @@
 # $OpenLDAP$
 # Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
 # COPYING RESTRICTIONS APPLY, see COPYRIGHT.
-H1: Replication with slurpd
 
-Note: this section is provided for historical reasons.  {{slurpd}}(8)
-is deprecated in favor of LDAP Sync based replication, commonly
-referred to as {{syncrepl}}.  Syncrepl is discussed in
-{{SECT:LDAP Sync Replication}} section of this document.
+H1: Replication
 
-In certain configurations, a single {{slapd}}(8) instance may be
-insufficient to handle the number of clients requiring
-directory service via LDAP. It may become necessary to
-run more than one slapd instance.  At many sites,
-for instance, there are multiple slapd servers: one
-master and one or more slaves.  {{TERM:DNS}} can be setup such that
-a lookup of {{EX:ldap.example.com}} returns the {{TERM:IP}} addresses
-of these servers, distributing the load among them (or
-just the slaves). This master/slave arrangement provides
-a simple and effective way to increase capacity, availability
-and reliability.
+Replicated directories are a fundamental requirement for delivering a 
+resilient enterprise deployment.
+
+OpenLDAP has various configuration options for creating a replicated 
+directory. The following sections will discuss these.
+
+H2: Replication Strategies
+
+
+H3: Push Based
+
+
+H5: Replacing Slurpd
+
+Slurpd replication has been deprecated in favor of Syncrepl replication and 
+has been completely removed from 2.4.
+
+{{Why was it replaced?}}
+
+The slurpd daemon was the original replication mechanism inherited from 
+UMich's LDAP and operates in push mode: the master pushes changes to the 
+slaves. It has been replaced for many reasons, in brief:
+
+ * It is not reliable
+ * It is extremely sensitive to the ordering of records in the replog
+ * It can easily go out of sync, at which point manual intervention is 
+   required to resync the slave database with the master directory
+ * It isn't very tolerant of unavailable servers. If a slave goes down 
+   for a long time, the replog may grow to a size that's too large for 
+   slurpd to process
+
+{{What was it replaced with?}}
 
-{{slurpd}}(8) provides the capability for a master slapd to
-propagate changes to slave slapd instances,
-implementing the master/slave replication scheme
-described above.  slurpd runs on the same host as the
-master slapd instance.
+Syncrepl.
 
+{{Why is Syncrepl better?}}
 
+ * Syncrepl is self-synchronizing; you can start with a database in any 
+   state from totally empty to fully synced and it will automatically do 
+   the right thing to achieve and maintain synchronization
+ * Syncrepl can operate in either direction
+ * Data updates can be minimal or maximal
 
-H2: Overview
+{{How do I implement a pushed based replication system using Syncrepl?}}
 
-{{slurpd}}(8) provides replication services "in band". That is, it
-uses the LDAP protocol to update a slave database from
-the master. Perhaps the easiest way to illustrate this is
-with an example. In this example, we trace the propagation
-of an LDAP modify operation from its initiation by the LDAP
-client to its distribution to the slave slapd instance.
+The easiest way is to point an LDAP backend ({{SECT: Backends}} and {{slapd-ldap(8)}}) 
+to your slave directory and setup Syncrepl to point to your Master database.
 
+REFERENCE test045/048 for better explanation of above.
 
-{{B: Sample replication scenario:}}
+If you imagine Syncrepl pulling down changes from the Master server, and then
+pushing those changes out to your slave servers via {{slapd-ldap(8)}}. This is 
+called proxy mode (elaborate/confirm?).
 
-^ The LDAP client submits an LDAP modify operation to
-the slave slapd.
+DIAGRAM HERE
 
-+ The slave slapd returns a referral to the LDAP
-client referring the client to the master slapd.
+BETTER EXAMPLE here from test045/048 for different push/multiproxy examples.
 
-+ The LDAP client submits the LDAP modify operation to
-the master slapd.
+Here's an example:
 
-+ The master slapd performs the modify operation,
-writes out the change to its replication log file and returns
-a success code to the client. 
 
-+ The slurpd process notices that a new entry has
-been appended to the replication log file, reads the
-replication log entry, and sends the change to the slave
-slapd via LDAP. 
+>	include		./schema/core.schema
+>	include		./schema/cosine.schema
+>	include		./schema/inetorgperson.schema
+>	include		./schema/openldap.schema
+>	include		./schema/nis.schema
+>	
+>	pidfile		/home/ghenry/openldap/ldap/tests/testrun/slapd.3.pid
+>	argsfile	/home/ghenry/openldap/ldap/tests/testrun/slapd.3.args
+>	
+>	modulepath	../servers/slapd/back-bdb/
+>	moduleload	back_bdb.la
+>	modulepath  ../servers/slapd/back-monitor/
+>	moduleload  back_monitor.la
+>	modulepath  ../servers/slapd/overlays/
+>	moduleload  syncprov.la
+>	modulepath  ../servers/slapd/back-ldap/
+>	moduleload  back_ldap.la
+>	
+>	# We don't need any access to this DSA
+>	restrict	all
+>	
+>	#######################################################################
+>	# consumer proxy database definitions
+>	#######################################################################
+>	
+>	database	ldap
+>	suffix		"dc=example,dc=com"
+>	rootdn		"cn=Whoever"
+>	uri		ldap://localhost:9012/
+>	
+>	lastmod		on
+>	
+>	# HACK: use the RootDN of the monitor database as UpdateDN so ACLs apply
+>	# without the need to write the UpdateDN before starting replication
+>	acl-bind	bindmethod=simple
+>			binddn="cn=Monitor"
+>			credentials=monitor
+>	
+>	# HACK: use the RootDN of the monitor database as UpdateDN so ACLs apply
+>	# without the need to write the UpdateDN before starting replication
+>	syncrepl	rid=1
+>			provider=ldap://localhost:9011/
+>			binddn="cn=Manager,dc=example,dc=com"
+>			bindmethod=simple
+>			credentials=secret
+>			searchbase="dc=example,dc=com"
+>			filter="(objectClass=*)"
+>			attrs="*,structuralObjectClass,entryUUID,entryCSN,creatorsName,createTimestamp,modifiersName,modifyTimestamp"
+>			schemachecking=off
+>			scope=sub
+>			type=refreshAndPersist
+>			retry="5 5 300 5"
+>	
+>	overlay		syncprov
+>	
+>	database	monitor
+
+DETAILED EXPLANATION OF ABOVE LIKE IN OTHER SECTIONS (line numbers?)
+
+
+ANOTHER DIAGRAM HERE
+
+As you can see, you can let your imagination go wild using Syncrepl and 
+{{slapd-ldap(8)}} tailoring your replication to fit your specific network 
+topology.
+
+H3: Pull Based
+
+
+H4: syncrepl replication
+
+
+H4: delta-syncrepl replication
+
+
+H2: Replication Types
+
+
+H3: syncrepl replication
+
+
+H3: delta-syncrepl replication
+
+
+H3: N-Way Multi-Master
+
+http://www.connexitor.com/blog/pivot/entry.php?id=105#body
+http://www.openldap.org/lists/openldap-software/200702/msg00006.html
+http://www.openldap.org/lists/openldap-software/200602/msg00064.html
+
+
+H3: MirrorMode
+
+MirrorMode is a hybrid configuration that provides all of the consistency
+guarantees of single-master replication while also providing the high
+availability of multi-master. In MirrorMode two masters are set up to
+replicate from each other (as a multi-master configuration) but an
+external frontend is employed to direct all writes to only one of
+the two servers. The second master will only be used for writes if
+the first master crashes, at which point the frontend will switch to
+directing all writes to the second master. When a crashed master is
+repaired and restarted it will automatically catch up to any changes
+on the running master and resync.
+
+H2: LDAP Sync Replication
+
+The {{TERM:LDAP Sync}} Replication engine, {{TERM:syncrepl}} for
+short, is a consumer-side replication engine that enables the
+consumer {{TERM:LDAP}} server to maintain a shadow copy of a
+{{TERM:DIT}} fragment. A syncrepl engine resides at the consumer-side
+as one of the {{slapd}}(8) threads. It creates and maintains a
+consumer replica by connecting to the replication provider to perform
+the initial DIT content load followed either by periodic content
+polling or by timely updates upon content changes.
+
+Syncrepl uses the LDAP Content Synchronization (or LDAP Sync for
+short) protocol as the replica synchronization protocol.  It provides
+a stateful replication which supports both pull-based and push-based
+synchronization and does not mandate the use of a history store.
+
+Syncrepl keeps track of the status of the replication content by
+maintaining and exchanging synchronization cookies. Because the
+syncrepl consumer and provider maintain their content status, the
+consumer can poll the provider content to perform incremental
+synchronization by asking for the entries required to make the
+consumer replica up-to-date with the provider content. Syncrepl
+also enables convenient management of replicas by maintaining replica
+status.  The consumer replica can be constructed from a consumer-side
+or a provider-side backup at any synchronization status. Syncrepl
+can automatically resynchronize the consumer replica up-to-date
+with the current provider content.
+
+Syncrepl supports both pull-based and push-based synchronization.
+In its basic refreshOnly synchronization mode, the provider uses
+pull-based synchronization where the consumer servers need not be
+tracked and no history information is maintained.  The information
+required for the provider to process periodic polling requests is
+contained in the synchronization cookie of the request itself.  To
+optimize the pull-based synchronization, syncrepl utilizes the
+present phase of the LDAP Sync protocol as well as its delete phase,
+instead of falling back on frequent full reloads. To further optimize
+the pull-based synchronization, the provider can maintain a per-scope
+session log as a history store. In its refreshAndPersist mode of
+synchronization, the provider uses a push-based synchronization.
+The provider keeps track of the consumer servers that have requested
+a persistent search and sends them necessary updates as the provider
+replication content gets modified.
+
+With syncrepl, a consumer server can create a replica without
+changing the provider's configurations and without restarting the
+provider server, if the consumer server has appropriate access
+privileges for the DIT fragment to be replicated. The consumer
+server can stop the replication also without the need for provider-side
+changes and restart.
+
+Syncrepl supports both partial and sparse replications.  The shadow
+DIT fragment is defined by a general search criteria consisting of
+base, scope, filter, and attribute list.  The replica content is
+also subject to the access privileges of the bind identity of the
+syncrepl replication connection.
+
+
+H3: The LDAP Content Synchronization Protocol
+
+The LDAP Sync protocol allows a client to maintain a synchronized
+copy of a DIT fragment. The LDAP Sync operation is defined as a set
+of controls and other protocol elements which extend the LDAP search
+operation. This section introduces the LDAP Content Sync protocol
+only briefly.  For more information, refer to {{REF:RFC4533}}.
+
+The LDAP Sync protocol supports both polling and listening for
+changes by defining two respective synchronization operations:
+{{refreshOnly}} and {{refreshAndPersist}}.  Polling is implemented
+by the {{refreshOnly}} operation.  The client copy is synchronized
+to the server copy at the time of polling.  The server finishes the
+search operation by returning {{SearchResultDone}} at the end of
+the search operation as in the normal search.  The listening is
+implemented by the {{refreshAndPersist}} operation.  Instead of
+finishing the search after returning all entries currently matching
+the search criteria, the synchronization search remains persistent
+in the server. Subsequent updates to the synchronization content
+in the server cause additional entry updates to be sent to the
+client.
+
+The {{refreshOnly}} operation and the refresh stage of the
+{{refreshAndPersist}} operation can be performed with a present
+phase or a delete phase.
+
+In the present phase, the server sends the client the entries updated
+within the search scope since the last synchronization. The server
+sends all requested attributes, be it changed or not, of the updated
+entries.  For each unchanged entry which remains in the scope, the
+server sends a present message consisting only of the name of the
+entry and the synchronization control representing state present.
+The present message does not contain any attributes of the entry.
+After the client receives all update and present entries, it can
+reliably determine the new client copy by adding the entries added
+to the server, by replacing the entries modified at the server, and
+by deleting entries in the client copy which have not been updated
+nor specified as being present at the server.
+
+The transmission of the updated entries in the delete phase is the
+same as in the present phase. The server sends all the requested
+attributes of the entries updated within the search scope since the
+last synchronization to the client. In the delete phase, however,
+the server sends a delete message for each entry deleted from the
+search scope, instead of sending present messages.  The delete
+message consists only of the name of the entry and the synchronization
+control representing state delete.  The new client copy can be
+determined by adding, modifying, and removing entries according to
+the synchronization control attached to the {{SearchResultEntry}}
+message.
+
+In the case that the LDAP Sync server maintains a history store and
+can determine which entries are scoped out of the client copy since
+the last synchronization time, the server can use the delete phase.
+If the server does not maintain any history store, cannot determine
+the scoped-out entries from the history store, or the history store
+does not cover the outdated synchronization state of the client,
+the server should use the present phase.  The use of the present
+phase is much more efficient than a full content reload in terms
+of the synchronization traffic.  To reduce the synchronization
+traffic further, the LDAP Sync protocol also provides several
+optimizations such as the transmission of the normalized {{EX:entryUUID}}s
+and the transmission of multiple {{EX:entryUUIDs}} in a single
+{{syncIdSet}} message.
+
+At the end of the {{refreshOnly}} synchronization, the server sends
+a synchronization cookie to the client as a state indicator of the
+client copy after the synchronization is completed.  The client
+will present the received cookie when it requests the next incremental
+synchronization to the server.
+
+When {{refreshAndPersist}} synchronization is used, the server sends
+a synchronization cookie at the end of the refresh stage by sending
+a Sync Info message with TRUE refreshDone.  It also sends a
+synchronization cookie by attaching it to {{SearchResultEntry}}
+generated in the persist stage of the synchronization search. During
+the persist stage, the server can also send a Sync Info message
+containing the synchronization cookie at any time the server wants
+to update the client-side state indicator.  The server also updates
+a synchronization indicator of the client at the end of the persist
+stage.
+
+In the LDAP Sync protocol, entries are uniquely identified by the
+{{EX:entryUUID}} attribute value. It can function as a reliable
+identifier of the entry. The DN of the entry, on the other hand,
+can be changed over time and hence cannot be considered as the
+reliable identifier.  The {{EX:entryUUID}} is attached to each
+{{SearchResultEntry}} or {{SearchResultReference}} as a part of the
+synchronization control.
+
+
+H3: Syncrepl Details
+
+The syncrepl engine utilizes both the {{refreshOnly}} and the
+{{refreshAndPersist}} operations of the LDAP Sync protocol.  If a
+syncrepl specification is included in a database definition,
+{{slapd}}(8) launches a syncrepl engine as a {{slapd}}(8) thread
+and schedules its execution. If the {{refreshOnly}} operation is
+specified, the syncrepl engine will be rescheduled at the interval
+time after a synchronization operation is completed.  If the
+{{refreshAndPersist}} operation is specified, the engine will remain
+active and process the persistent synchronization messages from the
+provider.
+
+The syncrepl engine utilizes both the present phase and the delete
+phase of the refresh synchronization. It is possible to configure
+a per-scope session log in the provider server which stores the
+{{EX:entryUUID}}s of a finite number of entries deleted from a
+replication content.  Multiple replicas of single provider content
+share the same per-scope session log. The syncrepl engine uses the
+delete phase if the session log is present and the state of the
+consumer server is recent enough that no session log entries are
+truncated after the last synchronization of the client.  The syncrepl
+engine uses the present phase if no session log is configured for
+the replication content or if the consumer replica is too outdated
+to be covered by the session log.  The current design of the session
+log store is memory based, so the information contained in the
+session log is not persistent over multiple provider invocations.
+It is not currently supported to access the session log store by
+using LDAP operations. It is also not currently supported to impose
+access control to the session log.
+
+As a further optimization, even in the case the synchronization
+search is not associated with any session log, no entries will be
+transmitted to the consumer server when there has been no update
+in the replication context.
+
+The syncrepl engine, which is a consumer-side replication engine,
+can work with any backends. The LDAP Sync provider can be configured
+as an overlay on any backend, but works best with the {{back-bdb}}
+or {{back-hdb}} backend.
+
+The LDAP Sync provider maintains a {{EX:contextCSN}} for each
+database as the current synchronization state indicator of the
+provider content.  It is the largest {{EX:entryCSN}} in the provider
+context such that no transactions for an entry having smaller
+{{EX:entryCSN}} value remains outstanding.  The {{EX:contextCSN}}
+could not just be set to the largest issued {{EX:entryCSN}} because
+{{EX:entryCSN}} is obtained before a transaction starts and
+transactions are not committed in the issue order.
+
+The provider stores the {{EX:contextCSN}} of a context in the
+{{EX:contextCSN}} attribute of the context suffix entry. The attribute
+is not written to the database after every update operation though;
+instead it is maintained primarily in memory. At database start
+time the provider reads the last saved {{EX:contextCSN}} into memory
+and uses the in-memory copy exclusively thereafter. By default,
+changes to the {{EX:contextCSN}} as a result of database updates
+will not be written to the database until the server is cleanly
+shut down. A checkpoint facility exists to cause the contextCSN to
+be written out more frequently if desired.
+
+Note that at startup time, if the provider is unable to read a
+{{EX:contextCSN}} from the suffix entry, it will scan the entire
+database to determine the value, and this scan may take quite a
+long time on a large database. When a {{EX:contextCSN}} value is
+read, the database will still be scanned for any {{EX:entryCSN}}
+values greater than it, to make sure the {{EX:contextCSN}} value
+truly reflects the greatest committed {{EX:entryCSN}} in the database.
+On databases which support inequality indexing, setting an eq index
+on the {{EX:entryCSN}} attribute and configuring {{contextCSN}}
+checkpoints will greatly speed up this scanning step.
+
+If no {{EX:contextCSN}} can be determined by reading and scanning
+the database, a new value will be generated. Also, if scanning the
+database yielded a greater {{EX:entryCSN}} than was previously
+recorded in the suffix entry's {{EX:contextCSN}} attribute, a
+checkpoint will be immediately written with the new value.
+
+The consumer also stores its replica state, which is the provider's
+{{EX:contextCSN}} received as a synchronization cookie, in the
+{{EX:contextCSN}} attribute of the suffix entry.  The replica state
+maintained by a consumer server is used as the synchronization state
+indicator when it performs subsequent incremental synchronization
+with the provider server. It is also used as a provider-side
+synchronization state indicator when it functions as a secondary
+provider server in a cascading replication configuration.  Since
+the consumer and provider state information are maintained in the
+same location within their respective databases, any consumer can
+be promoted to a provider (and vice versa) without any special
+actions.
+
+Because a general search filter can be used in the syncrepl
+specification, some entries in the context may be omitted from the
+synchronization content.  The syncrepl engine creates a glue entry
+to fill in the holes in the replica context if any part of the
+replica content is subordinate to the holes. The glue entries will
+not be returned in the search result unless {{ManageDsaIT}} control
+is provided.
+
+Also as a consequence of the search filter used in the syncrepl
+specification, it is possible for a modification to remove an entry
+from the replication scope even though the entry has not been deleted
+on the provider. Logically the entry must be deleted on the consumer
+but in {{refreshOnly}} mode the provider cannot detect and propagate
+this change without the use of the session log.
+
+
+H3: Configuring Syncrepl
+
+Because syncrepl is a consumer-side replication engine, the syncrepl
+specification is defined in {{slapd.conf}}(5) of the consumer
+server, not in the provider server's configuration file.  The initial
+loading of the replica content can be performed either by starting
+the syncrepl engine with no synchronization cookie or by populating
+the consumer replica by adding an {{TERM:LDIF}} file dumped as a
+backup at the provider.
+
+When loading from a backup, it is not required to perform the initial
+loading from the up-to-date backup of the provider content. The
+syncrepl engine will automatically synchronize the initial consumer
+replica to the current provider content. As a result, it is not
+required to stop the provider server in order to avoid the replica
+inconsistency caused by the updates to the provider content during
+the content backup and loading process.
+
+When replicating a large scale directory, especially in a bandwidth
+constrained environment, it is advised to load the consumer replica
+from a backup instead of performing a full initial load using
+syncrepl.
+
+
+H4: Set up the provider slapd
+
+The provider is implemented as an overlay, so the overlay itself
+must first be configured in {{slapd.conf}}(5) before it can be
+used. The provider has only two configuration directives, for setting
+checkpoints on the {{EX:contextCSN}} and for configuring the session
+log.  Because the LDAP Sync search is subject to access control,
+proper access control privileges should be set up for the replicated
+content.
+
+The {{EX:contextCSN}} checkpoint is configured by the
+
+>	syncprov-checkpoint <ops> <minutes>
+
+directive. Checkpoints are only tested after successful write
+operations.  If {{<ops>}} operations or more than {{<minutes>}}
+time has passed since the last checkpoint, a new checkpoint is
+performed.
+
+The session log is configured by the
+
+>	syncprov-sessionlog <size>
+
+directive, where {{<size>}} is the maximum number of session log
+entries the session log can record. When a session log is configured,
+it is automatically used for all LDAP Sync searches within the
+database.
+
+Note that using the session log requires searching on the {{entryUUID}}
+attribute. Setting an eq index on this attribute will greatly benefit
+the performance of the session log on the provider.
+
+A more complete example of the {{slapd.conf}}(5) content is thus:
+
+>	database bdb
+>	suffix dc=Example,dc=com
+>	rootdn dc=Example,dc=com
+>	directory /var/ldap/db
+>	index objectclass,entryCSN,entryUUID eq
+>
+>	overlay syncprov
+>	syncprov-checkpoint 100 10
+>	syncprov-sessionlog 100
+
+
+H4: Set up the consumer slapd
+
+The syncrepl replication is specified in the database section of
+{{slapd.conf}}(5) for the replica context.  The syncrepl engine
+is backend independent and the directive can be defined with any
+database type.
+
+>	database hdb
+>	suffix dc=Example,dc=com
+>	rootdn dc=Example,dc=com
+>	directory /var/ldap/db
+>	index objectclass,entryCSN,entryUUID eq
+>
+>	syncrepl rid=123
+>		provider=ldap://provider.example.com:389
+>		type=refreshOnly
+>		interval=01:00:00:00
+>		searchbase="dc=example,dc=com"
+>		filter="(objectClass=organizationalPerson)"
+>		scope=sub
+>		attrs="cn,sn,ou,telephoneNumber,title,l"
+>		schemachecking=off
+>		bindmethod=simple
+>		binddn="cn=syncuser,dc=example,dc=com"
+>		credentials=secret
+
+In this example, the consumer will connect to the provider {{slapd}}(8)
+at port 389 of {{FILE:ldap://provider.example.com}} to perform a
+polling ({{refreshOnly}}) mode of synchronization once a day.  It
+will bind as {{EX:cn=syncuser,dc=example,dc=com}} using simple
+authentication with password "secret".  Note that the access control
+privilege of {{EX:cn=syncuser,dc=example,dc=com}} should be set
+appropriately in the provider to retrieve the desired replication
+content. Also the search limits must be high enough on the provider
+to allow the syncuser to retrieve a complete copy of the requested
+content.  The consumer uses the rootdn to write to its database so
+it always has full permissions to write all content.
+
+The synchronization search in the above example will search for the
+entries whose objectClass is organizationalPerson in the entire
+subtree rooted at {{EX:dc=example,dc=com}}. The requested attributes
+are {{EX:cn}}, {{EX:sn}}, {{EX:ou}}, {{EX:telephoneNumber}},
+{{EX:title}}, and {{EX:l}}. The schema checking is turned off, so
+that the consumer {{slapd}}(8) will not enforce entry schema
+checking when it process updates from the provider {{slapd}}(8).
+
+For more detailed information on the syncrepl directive, see the
+{{SECT:syncrepl}} section of {{SECT:The slapd Configuration File}}
+chapter of this admin guide.
+
+
+H4: Start the provider and the consumer slapd
+
+The provider {{slapd}}(8) is not required to be restarted.
+{{contextCSN}} is automatically generated as needed: it might be
+originally contained in the {{TERM:LDIF}} file, generated by
+{{slapadd}} (8), generated upon changes in the context, or generated
+when the first LDAP Sync search arrives at the provider.  If an
+LDIF file is being loaded which did not previously contain the
+{{contextCSN}}, the {{-w}} option should be used with {{slapadd}}
+(8) to cause it to be generated. This will allow the server to
+startup a little quicker the first time it runs.
+
+When starting a consumer {{slapd}}(8), it is possible to provide
+a synchronization cookie as the {{-c cookie}} command line option
+in order to start the synchronization from a specific state.  The
+cookie is a comma separated list of name=value pairs. Currently
+supported syncrepl cookie fields are {{csn=<csn>}} and {{rid=<rid>}}.
+{{<csn>}} represents the current synchronization state of the
+consumer replica.  {{<rid>}} identifies a consumer replica locally
+within the consumer server. It is used to relate the cookie to the
+syncrepl definition in {{slapd.conf}}(5) which has the matching
+replica identifier.  The {{<rid>}} must have no more than 3 decimal
+digits.  The command line cookie overrides the synchronization
+cookie stored in the consumer replica database.
+
+
+H2: N-Way Multi-Master
+
+
+H2: MirrorMode
 
-+ The slave slapd performs the modify operation and
-returns a success code to the slurpd process. 
-
-
-Note: {{ldapmodify}}(1) and other clients distributed as part of
-OpenLDAP Software do not support automatic referral chasing
-(for security reasons).
-
-
-
-H2: Replication Logs
-
-When slapd is configured to generate a replication logfile, it
-writes out a file containing {{TERM:LDIF}} change records.  The
-replication log gives the replication site(s), a timestamp, the DN
-of the entry being modified, and a series of lines which specify
-the changes to make. In the example below, Barbara ({{EX:uid=bjensen}})
-has replaced the {{EX:description}} value.  The change is to be
-propagated to the slapd instance running on {{EX:slave.example.net}}
-Changes to various operational attributes, such as {{EX:modifiersName}}
-and {{EX:modifyTimestamp}}, are included in the change record and
-will be propagated to the slave slapd.
-
->	replica: slave.example.com:389
->	time: 809618633
->	dn: uid=bjensen,dc=example,dc=com
->	changetype: modify
->	replace: multiLineDescription
->	description: A dreamer...
->	-
->	replace: modifiersName
->	modifiersName: uid=bjensen,dc=example,dc=com
->	-
->	replace: modifyTimestamp
->	modifyTimestamp: 20000805073308Z
->	-
-
-The modifications to {{EX:modifiersName}} and {{EX:modifyTimestamp}}
-operational attributes were added by the master {{slapd}}.
-
-
-
-H2: Command-Line Options
-
-This section details commonly used {{slurpd}}(8) command-line options.
-
->	-d <level> | ?
-
-This option sets the slurpd debug level to {{EX: <level>}}. When
-level is a `?' character, the various debugging levels are printed
-and slurpd exits, regardless of any other options you give it.
-Current debugging levels (a subset of slapd's debugging levels) are
-
-!block table; colaligns="RL"; align=Center; \
-	title="Table 13.1: Debugging Levels"
-Level	Description
-4	heavy trace debugging
-64	configuration file processing
-65535	enable all debugging
-!endblock
-
-Debugging levels are additive. That is, if you want heavy trace
-debugging and want to watch the config file being processed, you
-would set level to the sum of those two levels (in this case, 68).
-
->	-f <filename>
-
-This option specifies an alternate slapd configuration file.  Slurpd
-does not have its own configuration file. Instead, all configuration
-information is read from the slapd configuration file.
-
->	-r <filename>
-
-This option specifies an alternate slapd replication log file.
-Under normal circumstances, slurpd reads the name of the slapd
-replication log file from the slapd configuration file. However,
-you can override this with the -r flag, to cause slurpd to process
-a different replication log file. See the {{SECT:Advanced slurpd
-Operation}} section for a discussion of how you might use this
-option.
-
->	-o
-
-Operate in "one-shot" mode. Under normal circumstances, when slurpd
-finishes processing a replication log, it remains active and
-periodically checks to see if new entries have been added to the
-replication log.  In one-shot mode, by comparison, slurpd processes
-a replication log and exits immediately. If the -o option is given,
-the replication log file must be explicitly specified with the -r
-option.  See the {{SECT:One-shot mode and reject files}} section
-for  a discussion of this mode.
-
->	-t <directory>
-
-Specify an alternate directory for slurpd's temporary copies of
-replication logs. The default location is {{F:/usr/tmp}}.
-
-
-H2: Configuring slurpd and a slave slapd instance
-
-To bring up a replica slapd instance, you must configure the master
-and slave slapd instances for replication, then shut down the master
-slapd so you can copy the database. Finally, you bring up the master
-slapd instance, the slave slapd instance, and the slurpd instance.
-These steps are detailed in the following sections. You can set up
-as many slave slapd instances as you wish.
-
-
-H3: Set up the master {{slapd}}
-
-The following section assumes you have a properly working {{slapd}}(8)
-instance. To configure your working {{slapd}}(8) server as a
-replication master, you need to make the following changes to your
-{{slapd.conf}}(5).
-
-^ Add a {{EX:replica}} directive for each replica. The {{EX:binddn=}}
-parameter should match the {{EX:updatedn}} option in the corresponding
-slave slapd configuration file, and should name an entry with write
-permission to the slave database (e.g., an entry allowed access via
-{{EX:access}} directives in the slave slapd configuration file).
-This DN generally {{should not}} be the same as the master's
-{{EX:rootdn}}.
-
-+ Add a {{EX:replogfile}} directive, which tells slapd where to log
-changes. This file will be read by slurpd.
-
-
-H3: Set up the slave {{slapd}}
-
-Install the slapd software on the host which is to be the slave
-slapd server. The configuration of the slave server should be
-identical to that of the master, with the following exceptions:
-
-^ Do not include a {{EX:replica}} directive. While it is possible
-to create "chains" of replicas, in most cases this is inappropriate.
-
-+ Do not include a {{EX:replogfile}} directive.
-
-+ Do include an {{EX:updatedn}} line. The DN given should match the
-DN given in the {{EX:binddn=}} parameter of the corresponding
-{{EX:replica=}} directive in the master slapd config file.  The
-{{EX:updatedn}} generally {{should not}} be the same as the
-{{EX:rootdn}} of the master database.
-
-+ Make sure the DN given in the {{EX:updatedn}} directive has
-permission to write the database (e.g., it is is allowed {{EX:access}}
-by one or more access directives).
-
-+ Use the {{EX:updateref}} directive to define the URL the slave
-should return if an update request is received.
-
-
-H3: Shut down the master server
-
-In order to ensure that the slave starts with an exact copy of the
-master's data, you must shut down the master slapd. Do this by
-sending the master slapd process an interrupt signal with
-{{EX:kill -INT <pid>}}, where {{EX:<pid>}} is the process-id of the master
-slapd process.
-
-If you like, you may restart the master slapd in read-only mode
-while you are replicating the database. During this time, the master
-slapd will return an "unwilling to perform" error to clients that
-attempt to modify data.
-
-
-H3: Copy the master slapd's database to the slave
-
-Copy the master's database(s) to the slave. For {{TERM:BDB}} and
-{{TERM:HDB}} databases, you must copy all database files located
-in the database {{EX:directory}} specified in {{slapd.conf}}(5).
-In general, you should copy each file found in the database {{EX:
-directory}} unless you know it is not used by {{slapd}}(8).
-
-Note: This copy process assumes homogeneous servers with identically
-configured OpenLDAP installations. Alternatively, you may use
-{{slapcat}} to output the master's database in LDIF format and use
-the LDIF with {{slapadd}} to populate the slave. Using LDIF avoids
-any potential incompatibilities due to differing server architectures
-or software configurations.  See the {{SECT:Database Creation and
-Maintenance Tools}} chapter for details on these tools.
-
-
-H3: Configure the master slapd for replication
-
-To configure slapd to generate a replication logfile, you add a
-"{{EX: replica}}" configuration option to the master slapd's config
-file. For example, if we wish to propagate changes to the slapd
-instance running on host {{EX:slave.example.com}}:
-
->	replica uri=ldap://slave.example.com:389
->		binddn="cn=Replicator,dc=example,dc=com"
->		bindmethod=simple credentials=secret
-
-In this example, changes will be sent to port 389 (the standard
-LDAP port) on host slave.example.com. The slurpd process will bind
-to the slave slapd as "{{EX:cn=Replicator,dc=example,dc=com}}" using
-simple authentication with password "{{EX:secret}}".
-
-If we wish to perform the same replication using ldaps on port 636:  
-
->	replica uri=ldaps://slave.example.com:636
->		binddn="cn=Replicator,dc=example,dc=com"
->		bindmethod=simple credentials=secret
-
-The host option is deprecated in favor of uri, but the following 
-replica configuration is still supported:
-
->	replica host=slave.example.com:389
->		binddn="cn=Replicator,dc=example,dc=com"
->		bindmethod=simple credentials=secret
-
-Note that the DN given by the {{EX:binddn=}} directive must exist
-in the slave slapd's database (or be the rootdn specified in the
-slapd config file) in order for the bind operation to succeed.  The
-DN should also be listed as the {{EX:updatedn}} for the database
-in the slave's slapd.conf(5).  It is generally recommended that
-this DN be different than the {{EX:rootdn}} of the master database.
-
-Note: The use of strong authentication and transport security is
-highly recommended.
-
-
-H3: Restart the master slapd and start the slave slapd
-
-Restart the master slapd process. To check that it is
-generating replication logs, perform a modification of any
-entry in the database, and check that data has been
-written to the log file.
-
-
-H3: Start slurpd
-
-Start the slurpd process. Slurpd should immediately send
-the test modification you made to the slave slapd. Watch
-the slave slapd's logfile to be sure that the modification
-was sent.
-
->	slurpd -f <masterslapdconfigfile>
-
-
-
-H2: Advanced slurpd Operation
-
-H3: Replication errors
-
-When slurpd propagates a change to a slave slapd and receives an
-error return code, it writes the reason for the error and the
-replication record to a reject file. The reject file is located in
-the same directory as the per-replica replication logfile, and has
-the same name, but with the string "{{F:.rej}}" appended. For
-example, for a replica running on host {{EX:slave.example.com}},
-port 389, the reject file, if it exists, will be named
-
->	/usr/local/var/openldap/replog.slave.example.com:389.rej
-
-A sample rejection log entry follows:
-
->	ERROR: No such attribute
->	replica: slave.example.com:389
->	time: 809618633
->	dn: uid=bjensen,dc=example,dc=com
->	changetype: modify
->	replace: description
->	description: A dreamer...
->	-
->	replace: modifiersName
->	modifiersName: uid=bjensen,dc=example,dc=com
->	-
->	replace: modifyTimestamp
->	modifyTimestamp: 20000805073308Z
->	-
-
-Note that this is precisely the same format as the original replication
-log entry, but with an {{EX:ERROR}} line prepended to the entry.
-
-
-
-H3: One-shot mode and reject files
-
-It is possible to use slurpd to process a rejection log with its
-"one-shot mode." In normal operation, slurpd watches for more
-replication records to be appended to the replication log file. In
-one-shot mode, by contrast, slurpd processes a single log file and
-exits. Slurpd ignores {{EX:ERROR}} lines at the beginning of
-replication log entries, so it's not necessary to edit them out
-before feeding it the rejection log.
-
-To use one-shot mode, specify the name of the rejection log on the
-command line as the argument to the -r flag, and specify one-shot
-mode with the -o flag. For example, to process the rejection log
-file {{F:/usr/local/var/openldap/replog.slave.example.com:389}} and
-exit, use the command
-
->	slurpd -r /usr/tmp/replog.slave.example.com:389 -o
 
diff --git a/doc/guide/admin/runningslapd.sdf b/doc/guide/admin/runningslapd.sdf
index c96eaf0686..54a4145c80 100644
--- a/doc/guide/admin/runningslapd.sdf
+++ b/doc/guide/admin/runningslapd.sdf
@@ -104,9 +104,9 @@ H2: Starting slapd
 
 In general, slapd is run like this:
 
->	/usr/local/etc/libexec/slapd [<option>]*
+>	/usr/local/libexec/slapd [<option>]*
 
-where {{F:/usr/local/etc/libexec}} is determined by {{EX:configure}}
+where {{F:/usr/local/libexec}} is determined by {{EX:configure}}
 and <option> is one of the options described above (or in {{slapd}}(8)).
 Unless you have specified a debugging level (including level {{EX:0}}),
 slapd will automatically fork and detach itself from its controlling
diff --git a/doc/guide/admin/sasl.sdf b/doc/guide/admin/sasl.sdf
index a67298e11a..5f30dc6bc2 100644
--- a/doc/guide/admin/sasl.sdf
+++ b/doc/guide/admin/sasl.sdf
@@ -1,3 +1,4 @@
+# $OpenLDAP$
 # Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
 # COPYING RESTRICTIONS APPLY, see COPYRIGHT.
 
@@ -352,7 +353,7 @@ allows zero or more repeats of the immediately preceding character
 or pattern, and terms in parenthesis are remembered for the replacement
 pattern.
 
-The replacement pattern will produce either a DN or URL refering
+The replacement pattern will produce either a DN or URL referring
 to the user.  Anything from the authentication request DN that
 matched a string in parenthesis in the search pattern is stored in
 the variable "$1". That variable "$1" can appear in the replacement
@@ -542,7 +543,7 @@ database could then be only allowed by that DN, and in order to
 become that DN, users must first authenticate as one of the persons
 on the list. This allows for better auditing of who made changes
 to the LDAP database.  If people were allowed to authenticate
-directly to the priviliged account, possibly through the {{EX:rootpw}}
+directly to the privileged account, possibly through the {{EX:rootpw}}
 {{slapd.conf}}(5) directive or through a {{EX:userPassword}}
 attribute, then auditing becomes more difficult.
 
@@ -576,7 +577,7 @@ or
 
 In the first form, the <username> is from the same namespace as
 the authentication identities above. It is the user's username as
-it is refered to by the underlying authentication mechanism.
+it is referred to by the underlying authentication mechanism.
 Authorization identities of this form are converted into a DN format
 by the same function that the authentication process used, producing
 an {{authorization request DN}} of the form
@@ -617,7 +618,7 @@ authentication DN entry, and if none of the {{EX:authzTo}} rules
 specify the authorization is permitted, the {{EX:authzFrom}}
 rules in the authorization DN entry are then checked. If neither
 case specifies that the request be honored, the request is denied.
-Since the default behaviour is to deny authorization requests, rules
+Since the default behavior is to deny authorization requests, rules
 only specify that a request be allowed; there are no negative rules
 telling what authorizations to deny.
 
@@ -661,7 +662,7 @@ comparison can be evaluated much faster than an LDAP search for
 Also note that the values in an authorization rule must be one of
 the two forms: an LDAP URL or a DN (with or without regular expression
 characters). Anything that does not begin with "{{EX:ldap://}}" is
-taken as a DN. It is not permissable to enter another authorization
+taken as a DN. It is not permissible to enter another authorization
 identity of the form "{{EX:u:<username>}}" as an authorization rule.
 
 
@@ -679,14 +680,14 @@ should be allowed to perform the proxy authorization.
 By default, processing of proxy authorization rules is disabled.
 The {{EX:authz-policy}} directive must be set in the
 {{slapd.conf}}(5) file to enable authorization. This directive can
-be set to {{EX:none}} for no rules (the default), {{EX:from}} for
-source rules, {{EX:to}} for destination rules, or {{EX:both}} for
+be set to {{EX:none}} for no rules (the default), {{EX:to}} for
+source rules, {{EX:from}} for destination rules, or {{EX:both}} for
 both source and destination rules.
 
-Destination rules are extremely powerful. If ordinary users have
+Source rules are extremely powerful. If ordinary users have
 access to write the {{EX:authzTo}} attribute in their own
 entries, then they can write rules that would allow them to authorize
-as anyone else.  As such, when using destination rules, the
+as anyone else.  As such, when using source rules, the
 {{EX:authzTo}} attribute should be protected with an ACL that
 only allows privileged users to set its values.
 
diff --git a/doc/guide/admin/schema.sdf b/doc/guide/admin/schema.sdf
index d27f6a50b2..543aaf7167 100644
--- a/doc/guide/admin/schema.sdf
+++ b/doc/guide/admin/schema.sdf
@@ -5,7 +5,7 @@
 H1: Schema Specification
 
 This chapter describes how to extend the user schema used by
-{{slapd}}(8).  The chapter assumes the reader is familar with the
+{{slapd}}(8).  The chapter assumes the reader is familiar with the
 {{TERM:LDAP}}/{{TERM:X.500}} information model.
 
 The first section, {{SECT:Distributed Schema Files}} details optional
@@ -72,7 +72,7 @@ matching rules and system schema, but this requires some programming
 and hence is not discussed here.
 
 There are five steps to defining new schema:
-^	obtain Object Identifer
+^	obtain Object Identifier
 +	choose a name prefix
 +	create local schema file
 +	define custom attribute types (if necessary)
@@ -102,28 +102,18 @@ OID		Assignment
 !endblock
 
 You are, of course, free to design a hierarchy suitable to your
-organizational needs under your organization's OID.  No matter what
-hierarchy you choose, you should maintain a registry of assignments
-you make.  This can be a simple flat file or something more
-sophisticated such as the {{OpenLDAP OID Registry}}
-({{URL:http://www.openldap.org/faq/index.cgi?file=197}}).
+organizational needs under your organization's OID. No matter what hierarchy you choose, you should maintain a registry of assignments you make.  This can be a simple flat file or something more sophisticated such as the {{OpenLDAP OID Registry}} ({{URL:http://www.openldap.org/faq/index.cgi?file=197}}).
 
-For more information about Object Identifers (and a listing service)
+For more information about Object Identifiers (and a listing service)
 see {{URL:http://www.alvestrand.no/harald/objectid/}}.
 
 .{{Under no circumstances should you hijack OID namespace!}}
 
-To obtain a registered OID at {{no cost}}, apply for an OID under
-the {{ORG[expand]IANA}} (ORG:IANA) maintained {{Private Enterprise}}
-arc.  Any private enterprise (organization) may request an OID to
-be assigned under this arc.  Just fill out the IANA form
-at {{URL: http://www.iana.org/cgi-bin/enterprise.pl}} and your
-official OID will be sent to you usually within a few days.  Your
-base OID will be something like {{EX:1.3.6.1.4.1.X}} where {{EX:X}}
-is an integer.
-
-Note: Don't let the "MIB/SNMP" statement on the IANA page confuse
-you.  OIDs obtained using this form may be used for any purpose
+To obtain a registered OID at {{no cost}}, apply for a OID
+under the {{ORG[expand]IANA}} (ORG:IANA) maintained {{Private Enterprise}} arc.  
+Any private enterprise (organization) may request a {{TERM[expand]PEN}} (PEN) to be assigned under this arc. Just fill out the IANA form at {{URL: http://pen.iana.org/pen/PenApplication.page}} and your official PEN will be sent to you usually within a few days. Your base OID will be something like {{EX:1.3.6.1.4.1.X}} where {{EX:X}} is an integer.
+
+Note: PENs obtained using this form may be used for any purpose
 including identifying LDAP schema elements.
 
 Alternatively, OID name space may be available from a national
@@ -140,7 +130,7 @@ prefixed with "x-" to place in the "private use" name space.
 The name should be both descriptive and not likely to clash with
 names of other schema elements.  In particular, any name you choose
 should not clash with present or future Standard Track names (this
-is assured if you registered names or use names begining with "x-").
+is assured if you registered names or use names beginning with "x-").
 
 It is noted that you can obtain your own registered name
 prefix so as to avoid having to register your names individually.
@@ -248,7 +238,7 @@ distinguishedName	1.3.6.1.4.1.1466.115.121.1.12	LDAP {{TERM:DN}}
 integer			1.3.6.1.4.1.1466.115.121.1.27	integer
 numericString		1.3.6.1.4.1.1466.115.121.1.36	numeric string
 OID			1.3.6.1.4.1.1466.115.121.1.38	object identifier
-octetString		1.3.6.1.4.1.1466.115.121.1.40	arbitary octets
+octetString		1.3.6.1.4.1.1466.115.121.1.40	arbitrary octets
 !endblock
 
 > 
diff --git a/doc/guide/admin/security.sdf b/doc/guide/admin/security.sdf
index 5665c3c5ff..8616d5dc37 100644
--- a/doc/guide/admin/security.sdf
+++ b/doc/guide/admin/security.sdf
@@ -1,3 +1,4 @@
+# $OpenLDAP$
 # Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
 # COPYING RESTRICTIONS APPLY, see COPYRIGHT.
 
@@ -142,7 +143,7 @@ this mechanism should generally remain disabled.
 A successful user/password authenticated bind results in a user
 authorization identity, the provided name, being associated with
 the session.  User/password authenticated bind is enabled by default.
-However, as this mechanism itself offers no evesdropping protection
+However, as this mechanism itself offers no eavesdropping protection
 (e.g., the password is set in the clear), it is recommended that
 it be used only in tightly controlled systems or when the LDAP
 session is protected by other means (e.g., TLS, {{TERM:IPsec}}).
diff --git a/doc/guide/admin/slapdconf2.sdf b/doc/guide/admin/slapdconf2.sdf
index cbf61398d2..8b80c0014e 100644
--- a/doc/guide/admin/slapdconf2.sdf
+++ b/doc/guide/admin/slapdconf2.sdf
@@ -32,11 +32,6 @@ Note: some of the backends and of the distributed overlays
 do not support runtime configuration yet.  In those cases,
 the old style {{slapd.conf}}(5) file must be used.
 
-Note: the current version of {{slurpd}} has not been updated for
-compatibility with this new configuration engine. If you must use
-slurpd for replication at your site, you will have to maintain an
-old-style {{slapd.conf}} file for slurpd to use.
-
 
 H2: Configuration Layout
 
@@ -46,7 +41,7 @@ carry global configuration options, schema definitions, backend and
 database definitions, and assorted other items. A sample config tree
 is shown in Figure 5.1.
 
-!import "config_dit.gif"; align="center"; title="Sample configuration tree"
+!import "config_dit.png"; align="center"; title="Sample configuration tree"
 FT[align="Center"] Figure 5.1: Sample configuration tree.
 
 Other objects may be part of the configuration but were omitted from
@@ -403,7 +398,7 @@ H4: olcAccess: to <what> [ by <who> [<accesslevel>] [<control>] ]+
 
 This directive grants access (specified by <accesslevel>) to a
 set of entries and/or attributes (specified by <what>) by one or
-more requesters (specified by <who>).
+more requestors (specified by <who>).
 See the {{SECT:Access Control}} section of this chapter for a
 summary of basic usage.
 
@@ -431,74 +426,6 @@ perform" error.
 >	olcReadonly: FALSE
 
 
-H4: olcReplica
-
->	olcReplica: uri=ldap[s]://<hostname>[:<port>] | host=<hostname>[:<port>]
->		[bindmethod={simple|sasl}]
->		["binddn=<DN>"]
->		[saslmech=<mech>]
->		[authcid=<identity>]
->		[authzid=<identity>]
->		[credentials=<password>]
-
-This directive specifies a replication site for this database for
-use with slurpd. The
-{{EX:uri=}} parameter specifies a scheme, a host and optionally a port where
-the slave slapd instance can be found. Either a domain name
-or IP address may be used for <hostname>. If <port> is not
-given, the standard LDAP port number (389 or 636) is used.
-
-{{EX:host}} is deprecated in favor of the {{EX:uri}} parameter.
-
-{{EX:uri}} allows the replica LDAP server to be specified as an LDAP 
-URI such as {{EX:ldap://slave.example.com:389}} or
-{{EX:ldaps://slave.example.com:636}}.
-
-The {{EX:binddn=}} parameter gives the DN to bind as for updates
-to the slave slapd. It should be a DN which has read/write access
-to the slave slapd's database.  It must also match the {{EX:updatedn}}
-directive in the slave slapd's config file.  Generally, this DN
-{{should not}} be the same as the {{EX:rootdn}} of the master
-database.  Since DNs are likely to contain embedded spaces, the
-entire {{EX:"binddn=<DN>"}} string should be enclosed in double
-quotes.
-
-The {{EX:bindmethod}} is {{EX:simple}} or {{EX:sasl}},
-depending on whether simple password-based authentication
-or {{TERM:SASL}} authentication is to be used when connecting
-to the slave slapd.
-
-Simple authentication should not be used unless adequate data
-integrity and confidentiality protections are in place (e.g. TLS
-or {{TERM:IPsec}}).  Simple authentication requires specification
-of {{EX:binddn}} and {{EX:credentials}} parameters.
-
-SASL authentication is generally recommended.  SASL authentication
-requires specification of a mechanism using the {{EX:saslmech}} parameter.
-Depending on the mechanism, an authentication identity and/or
-credentials can be specified using {{EX:authcid}} and {{EX:credentials}}
-respectively.  The {{EX:authzid}} parameter may be used to specify
-an authorization identity.
-
-See the chapter entitled {{SECT:Replication with slurpd}} for more
-information on how to use this directive.
-
-
-H4: olcReplogfile: <filename>
-
-This directive specifies the name of the replication log file to
-which slapd will log changes. The replication log is typically
-written by {{slapd}}(8) and read by {{slurpd}}(8). Normally, this
-directive is only used if {{slurpd}}(8) is being used to replicate
-the database.  However, you can also use it to generate a transaction
-log, if {{slurpd}}(8) is not running. In this case, you will need to
-periodically truncate the file, since it will grow indefinitely
-otherwise.
-
-See the chapter entitled {{SECT:Replication with slurpd}} for more
-information on how to use this directive.
-
-
 H4: olcRootDN: <DN>
 
 This directive specifies the DN that is not subject to
@@ -743,24 +670,6 @@ exceeded timelimit will be returned.
 >	olcTimeLimit: 3600
 
 
-H4: olcUpdateDN: <DN>
-
-This directive is only applicable in a slave slapd. It specifies
-the DN allowed to make changes to the replica.  This may be the DN
-{{slurpd}}(8) binds as when making changes to the replica or the DN
-associated with a SASL identity.
-
-Entry-based Example:
-
->	olcUpdateDN: "cn=Update Daemon,dc=example,dc=com"
-
-SASL-based Example:
-
->	olcUpdateDN: "uid=slurpd,cn=example.com,cn=digest-md5,cn=auth"
-
-See the {{SECT:Replication with slurpd}} chapter for more information
-on how to use this directive.
-
 H4: olcUpdateref: <URL>
 
 This directive is only applicable in a slave slapd. It
@@ -825,7 +734,7 @@ This directive specifies how often to checkpoint the BDB transaction log.
 A checkpoint operation flushes the database buffers to disk and writes a
 checkpoint record in the log.
 The checkpoint will occur if either <kbyte> data has been written or
-<min> minutes have passed since the last checkpont. Both arguments default
+<min> minutes have passed since the last checkpoint. Both arguments default
 to zero, in which case they are ignored. When the <min> argument is
 non-zero, an internal task will run every <min> minutes to perform the
 checkpoint. See the Berkeley DB reference guide for more details.
@@ -842,7 +751,7 @@ This attribute specifies a configuration directive to be placed in the
 no such file exists yet, the {{EX:DB_CONFIG}} file will be created and the
 settings in this attribute will be written to it. If the file exists,
 its contents will be read and displayed in this attribute. The attribute
-is multi-valued, to accomodate multiple configuration directives. No default
+is multi-valued, to accommodate multiple configuration directives. No default
 is provided, but it is essential to use proper settings here to get the
 best server performance.
 
@@ -872,7 +781,7 @@ cleanup procedure removes them. See the Berkeley DB documentation for the
 
 Ideally the BDB cache must be
 at least as large as the working set of the database, the log buffer size
-should be large enough to accomodate most transactions without overflowing,
+should be large enough to accommodate most transactions without overflowing,
 and the log directory must be on a separate physical disk from the main
 database files. And both the database directory and the log directory
 should be separate from disks used for regular system activities such as
@@ -989,7 +898,7 @@ created database index files should have.
 H4: olcDbSearchStack: <integer>
 
 Specify the depth of the stack used for search filter evaluation.
-Search filters are evaluated on a stack to accomodate nested {{EX:AND}} /
+Search filters are evaluated on a stack to accommodate nested {{EX:AND}} /
 {{EX:OR}} clauses. An individual stack is allocated for each server thread.
 The depth of the stack determines how complex a filter can be evaluated
 without requiring any additional memory allocation. Filters that are
@@ -1325,7 +1234,7 @@ the access directives and the {{EX:by <who>}} clauses.  It also
 shows the use of an attribute selector to grant access to a specific
 attribute and various {{EX:<who>}} selectors.
 
->	olcAccess: to dn.subtree="dc=example,dc=com" attr=homePhone
+>	olcAccess: to dn.subtree="dc=example,dc=com" attrs=homePhone
 >		by self write
 >		by dn.children=dc=example,dc=com" search
 >		by peername.regex=IP:10\..+ read
@@ -1351,7 +1260,7 @@ create a group and allow people to add and remove only
 their own DN from the member attribute, you could accomplish
 it with an access directive like this:
 
->	olcAccess: to attr=member,entry
+>	olcAccess: to attrs=member,entry
 > 		by dnattr=member selfwrite
 
 The dnattr {{EX:<who>}} selector says that the access applies to
@@ -1375,7 +1284,7 @@ tags are maintained automatically by slapd and do not need to be specified
 when originally defining the values. For example, when you create the
 settings
 
->	olcAccess: to attr=member,entry
+>	olcAccess: to attrs=member,entry
 > 		by dnattr=member selfwrite
 >	olcAccess: to dn.children="dc=example,dc=com"
 > 		by * search
@@ -1384,7 +1293,7 @@ settings
 
 when you read them back using slapcat or ldapsearch they will contain
 
->	olcAccess: {0}to attr=member,entry
+>	olcAccess: {0}to attrs=member,entry
 > 		by dnattr=member selfwrite
 >	olcAccess: {1}to dn.children="dc=example,dc=com"
 > 		by * search
@@ -1423,7 +1332,7 @@ This example deletes whatever rule is in value #1 of the {{EX:olcAccess}}
 attribute (regardless of its value) and adds a new value that is
 explicitly inserted as value #1. The result will be
 
->	olcAccess: {0}to attr=member,entry
+>	olcAccess: {0}to attrs=member,entry
 > 		by dnattr=member selfwrite
 >	olcAccess: {1}to dn.children="dc=example,dc=com"
 > 		by * write
@@ -1513,7 +1422,7 @@ E: 29.	olcRootPW: secret
 E: 30.	olcDbIndex: uid pres,eq
 E: 31.	olcDbIndex: cn,sn,uid pres,eq,approx,sub
 E: 32.	olcDbIndex: objectClass eq
-E: 33.	olcAccess: to attr=userPassword
+E: 33.	olcAccess: to attrs=userPassword
 E: 34.	  by self write
 E: 35.	  by anonymous auth
 E: 36.	  by dn.base="cn=Admin,dc=example,dc=com" write
@@ -1550,16 +1459,16 @@ Line 42 is a blank line, indicating the end of this entry.
 The next section of the example configuration file defines another
 BDB database. This one handles queries involving the
 {{EX:dc=example,dc=net}} subtree but is managed by the same entity
-as the first database.  Note that without line 51, the read access
+as the first database.  Note that without line 52, the read access
 would be allowed due to the global access rule at line 19.
 
-E: 42.	# BDB definition for example.net
-E: 43.	dn: olcDatabase=bdb,cn=config
-E: 44.	objectClass: olcDatabaseConfig
-E: 45.	objectClass: olcBdbConfig
-E: 46.	olcDatabase: bdb
-E: 47.	olcSuffix: "dc=example,dc=net"
-E: 48.	olcDbDirectory: /usr/local/var/openldap-data-net
-E: 49.	olcRootDN: "cn=Manager,dc=example,dc=com"
-E: 50.	olcDbIndex: objectClass eq
-E: 51.	olcAccess: to * by users read
+E: 43.	# BDB definition for example.net
+E: 44.	dn: olcDatabase=bdb,cn=config
+E: 45.	objectClass: olcDatabaseConfig
+E: 46.	objectClass: olcBdbConfig
+E: 47.	olcDatabase: bdb
+E: 48.	olcSuffix: "dc=example,dc=net"
+E: 49.	olcDbDirectory: /usr/local/var/openldap-data-net
+E: 50.	olcRootDN: "cn=Manager,dc=example,dc=com"
+E: 51.	olcDbIndex: objectClass eq
+E: 52.	olcAccess: to * by users read
diff --git a/doc/guide/admin/slapdconfig.sdf b/doc/guide/admin/slapdconfig.sdf
index 64f5493e21..0e19d779ac 100644
--- a/doc/guide/admin/slapdconfig.sdf
+++ b/doc/guide/admin/slapdconfig.sdf
@@ -91,7 +91,7 @@ H4: access to <what> [ by <who> [<accesslevel>] [<control>] ]+
 
 This directive grants access (specified by <accesslevel>) to a set
 of entries and/or attributes (specified by <what>) by one or more
-requesters (specified by <who>).  See the {{SECT:The access
+requestors (specified by <who>).  See the {{SECT:The access
 Configuration Directive}} section of this chapter for a summary of
 basic usage.
 
@@ -284,69 +284,6 @@ perform" error.
 
 >	readonly off
 
-H4: replica
-
->	replica uri=ldap[s]://<hostname>[:<port>] | host=<hostname>[:<port>]
->		[bindmethod={simple|sasl}]
->		["binddn=<DN>"]
->		[saslmech=<mech>]
->		[authcid=<identity>]
->		[authzid=<identity>]
->		[credentials=<password>]
-
-This directive specifies a replication site for this database. The
-{{EX:uri=}} parameter specifies a scheme, a host and optionally a port where
-the slave slapd instance can be found. Either a domain name
-or IP address may be used for <hostname>. If <port> is not
-given, the standard LDAP port number (389 or 636) is used.
-
-{{EX:host}} is deprecated in favor of the {{EX:uri}} parameter.
-
-{{EX:uri}} allows the replica LDAP server to be specified as an LDAP 
-URI such as {{EX:ldap://slave.example.com:389}} or
-{{EX:ldaps://slave.example.com:636}}.
-
-The {{EX:binddn=}} parameter gives the DN to bind as for updates
-to the slave slapd. It should be a DN which has read/write access
-to the slave slapd's database.  It must also match the {{EX:updatedn}}
-directive in the slave slapd's config file.  Generally, this DN
-{{should not}} be the same as the {{EX:rootdn}} of the master
-database.  Since DNs are likely to contain embedded spaces, the
-entire {{EX:"binddn=<DN>"}} string should be enclosed in double
-quotes.
-
-The {{EX:bindmethod}} is {{EX:simple}} or {{EX:sasl}}, depending
-on whether simple password-based authentication or {{TERM:SASL}}
-authentication is to be used when connecting to the slave slapd.
-
-Simple authentication should not be used unless adequate data
-integrity and confidentiality protections are in place (e.g. TLS
-or {{TERM:IPsec}}).  Simple authentication requires specification of
-{{EX:binddn}} and {{EX:credentials}} parameters.
-
-SASL authentication is generally recommended.  SASL authentication
-requires specification of a mechanism using the {{EX:saslmech}} parameter.
-Depending on the mechanism, an authentication identity and/or
-credentials can be specified using {{EX:authcid}} and {{EX:credentials}}
-respectively.  The {{EX:authzid}} parameter may be used to specify
-an authorization identity.
-
-See the chapter entitled {{SECT:Replication with slurpd}} for more
-information on how to use this directive.
-
-H4: replogfile <filename>
-
-This directive specifies the name of the replication log file to
-which slapd will log changes. The replication log is typically
-written by slapd and read by slurpd. Normally, this directive is
-only used if slurpd is being used to replicate the database.
-However, you can also use it to generate a transaction log, if
-slurpd is not running. In this case, you will need to periodically
-truncate the file, since it will grow indefinitely otherwise.
-
-See the chapter entitled {{SECT:Replication with slurpd}} for more
-information on how to use this directive.
-
 
 H4: rootdn <DN>
 
@@ -535,26 +472,6 @@ See the {{SECT:LDAP Sync Replication}} chapter of the admin guide
 for more information on how to use this directive.
 
 
-H4: updatedn <DN>
-
-This directive is only applicable in a {{slave}} (or {{shadow}})
-{{slapd(8)}} instance.  It specifies the DN allowed to make changes to
-the replica.  This may be the DN
-{{slurpd}}(8) binds as when making changes to the replica or the DN
-associated with a SASL identity.
-
-
-Entry-based Example:
-
->	updatedn "cn=Update Daemon,dc=example,dc=com"
-
-SASL-based Example:
-
->	updatedn "uid=slurpd,cn=example.com,cn=digest-md5,cn=auth"
-
-See the {{SECT:Replication with slurpd}} chapter for more information
-on how to use this directive.
-
 H4: updateref <URL>
 
 This directive is only applicable in a {{slave}} (or {{shadow}})
@@ -871,7 +788,7 @@ the access directives and the {{EX:by <who>}} clauses.  It also
 shows the use of an attribute selector to grant access to a specific
 attribute and various {{EX:<who>}} selectors.
 
->	access to dn.subtree="dc=example,dc=com" attr=homePhone
+>	access to dn.subtree="dc=example,dc=com" attrs=homePhone
 >		by self write
 >		by dn.children="dc=example,dc=com" search
 >		by peername.regex=IP:10\..+ read
@@ -897,7 +814,7 @@ create a group and allow people to add and remove only
 their own DN from the member attribute, you could accomplish
 it with an access directive like this:
 
->	access to attr=member,entry
+>	access to attrs=member,entry
 > 		by dnattr=member selfwrite
 
 The dnattr {{EX:<who>}} selector says that the access applies to
@@ -952,28 +869,20 @@ E:  7.	suffix "dc=example,dc=com"
 E:  8.	directory /usr/local/var/openldap-data
 E:  9.	rootdn "cn=Manager,dc=example,dc=com"
 E: 10.	rootpw secret
-E: 11.	# replication directives
-E: 12.	replogfile /usr/local/var/openldap/slapd.replog
-E: 13.	replica uri=ldap://slave1.example.com:389
-E: 14.		binddn="cn=Replicator,dc=example,dc=com"
-E: 15.		bindmethod=simple credentials=secret
-E: 16.	replica uri=ldaps://slave2.example.com:636
-E: 17.		binddn="cn=Replicator,dc=example,dc=com"
-E: 18.		bindmethod=simple credentials=secret
-E: 19.	# indexed attribute definitions
-E: 20.	index uid pres,eq
-E: 21.	index cn,sn,uid pres,eq,approx,sub
-E: 22.	index objectClass eq
-E: 23.	# database access control definitions
-E: 24.	access to attr=userPassword
-E: 25.		by self write
-E: 26.		by anonymous auth
-E: 27.		by dn.base="cn=Admin,dc=example,dc=com" write
-E: 28.		by * none
-E: 29.	access to *
-E: 30.		by self write
-E: 31.		by dn.base="cn=Admin,dc=example,dc=com" write
-E: 32.		by * read
+E: 11.	# indexed attribute definitions
+E: 12.	index uid pres,eq
+E: 13.	index cn,sn,uid pres,eq,approx,sub
+E: 14.	index objectClass eq
+E: 15.	# database access control definitions
+E: 16.	access to attrs=userPassword
+E: 17.		by self write
+E: 18.		by anonymous auth
+E: 19.		by dn.base="cn=Admin,dc=example,dc=com" write
+E: 20.		by * none
+E: 21.	access to *
+E: 22.		by self write
+E: 23.		by dn.base="cn=Admin,dc=example,dc=com" write
+E: 24.		by * read
 
 Line 5 is a comment. The start of the database definition is marked
 by the database keyword on line 6. Line 7 specifies the DN suffix
@@ -984,19 +893,10 @@ Lines 9 and 10 identify the database {{super-user}} entry and associated
 password. This entry is not subject to access control or size or
 time limit restrictions.
 
-Lines 11 through 18 are for replication. Line 12 specifies the
-replication log file (where changes to the database are logged -
-this file is written by slapd and read by slurpd). Lines 13 through
-15 specify the hostname and port for a replicated host, the DN to
-bind as when performing updates, the bind method (simple) and the
-credentials (password) for the binddn. Lines 16 through 18 specify
-a second replication site.  See the {{SECT:Replication with slurpd}}
-chapter for more information on these directives.
-
-Lines 20 through 22 indicate the indices to maintain for various
+Lines 12 through 14 indicate the indices to maintain for various
 attributes.
 
-Lines 24 through 32 specify access control for entries in this
+Lines 16 through 24 specify access control for entries in this
 database.  As this is the first database, the controls also apply
 to entries not held in any database (such as the Root DSE).  For
 all applicable entries, the {{EX:userPassword}} attribute is writable
diff --git a/doc/guide/admin/syncrepl.sdf b/doc/guide/admin/syncrepl.sdf
deleted file mode 100644
index 8907bdd200..0000000000
--- a/doc/guide/admin/syncrepl.sdf
+++ /dev/null
@@ -1,404 +0,0 @@
-# $OpenLDAP$
-# Copyright 2003-2007 The OpenLDAP Foundation, All Rights Reserved.
-# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
-
-H1: LDAP Sync Replication
-
-The {{TERM:LDAP Sync}} Replication engine, {{TERM:syncrepl}} for
-short, is a consumer-side replication engine that enables the
-consumer {{TERM:LDAP}} server to maintain a shadow copy of a
-{{TERM:DIT}} fragment. A syncrepl engine resides at the consumer-side
-as one of the {{slapd}}(8) threads. It creates and maintains a
-consumer replica by connecting to the replication provider to perform
-the initial DIT content load followed either by periodic content
-polling or by timely updates upon content changes.
-
-Syncrepl uses the LDAP Content Synchronization (or LDAP Sync for
-short) protocol as the replica synchronization protocol.  It provides
-a stateful replication which supports both pull-based and push-based
-synchronization and does not mandate the use of a history store.
-
-Syncrepl keeps track of the status of the replication content by
-maintaining and exchanging synchronization cookies. Because the
-syncrepl consumer and provider maintain their content status, the
-consumer can poll the provider content to perform incremental
-synchronization by asking for the entries required to make the
-consumer replica up-to-date with the provider content. Syncrepl
-also enables convenient management of replicas by maintaining replica
-status.  The consumer replica can be constructed from a consumer-side
-or a provider-side backup at any synchronization status. Syncrepl
-can automatically resynchronize the consumer replica up-to-date
-with the current provider content.
-
-Syncrepl supports both pull-based and push-based synchronization.
-In its basic refreshOnly synchronization mode, the provider uses
-pull-based synchronization where the consumer servers need not be
-tracked and no history information is maintained.  The information
-required for the provider to process periodic polling requests is
-contained in the synchronization cookie of the request itself.  To
-optimize the pull-based synchronization, syncrepl utilizes the
-present phase of the LDAP Sync protocol as well as its delete phase,
-instead of falling back on frequent full reloads. To further optimize
-the pull-based synchronization, the provider can maintain a per-scope
-session log as a history store. In its refreshAndPersist mode of
-synchronization, the provider uses a push-based synchronization.
-The provider keeps track of the consumer servers that have requested
-a persistent search and sends them necessary updates as the provider
-replication content gets modified.
-
-With syncrepl, a consumer server can create a replica without
-changing the provider's configurations and without restarting the
-provider server, if the consumer server has appropriate access
-privileges for the DIT fragment to be replicated. The consumer
-server can stop the replication also without the need for provider-side
-changes and restart.
-
-Syncrepl supports both partial and sparse replications.  The shadow
-DIT fragment is defined by a general search criteria consisting of
-base, scope, filter, and attribute list.  The replica content is
-also subject to the access privileges of the bind identity of the
-syncrepl replication connection.
-
-
-H2: The LDAP Content Synchronization Protocol
-
-The LDAP Sync protocol allows a client to maintain a synchronized
-copy of a DIT fragment. The LDAP Sync operation is defined as a set
-of controls and other protocol elements which extend the LDAP search
-operation. This section introduces the LDAP Content Sync protocol
-only briefly.  For more information, refer to {{REF:RFC4533}}.
-
-The LDAP Sync protocol supports both polling and listening for
-changes by defining two respective synchronization operations:
-{{refreshOnly}} and {{refreshAndPersist}}.  Polling is implemented
-by the {{refreshOnly}} operation.  The client copy is synchronized
-to the server copy at the time of polling.  The server finishes the
-search operation by returning {{SearchResultDone}} at the end of
-the search operation as in the normal search.  The listening is
-implemented by the {{refreshAndPersist}} operation.  Instead of
-finishing the search after returning all entries currently matching
-the search criteria, the synchronization search remains persistent
-in the server. Subsequent updates to the synchronization content
-in the server cause additional entry updates to be sent to the
-client.
-
-The {{refreshOnly}} operation and the refresh stage of the
-{{refreshAndPersist}} operation can be performed with a present
-phase or a delete phase.
-
-In the present phase, the server sends the client the entries updated
-within the search scope since the last synchronization. The server
-sends all requested attributes, be it changed or not, of the updated
-entries.  For each unchanged entry which remains in the scope, the
-server sends a present message consisting only of the name of the
-entry and the synchronization control representing state present.
-The present message does not contain any attributes of the entry.
-After the client receives all update and present entries, it can
-reliably determine the new client copy by adding the entries added
-to the server, by replacing the entries modified at the server, and
-by deleting entries in the client copy which have not been updated
-nor specified as being present at the server.
-
-The transmission of the updated entries in the delete phase is the
-same as in the present phase. The server sends all the requested
-attributes of the entries updated within the search scope since the
-last synchronization to the client. In the delete phase, however,
-the server sends a delete message for each entry deleted from the
-search scope, instead of sending present messages.  The delete
-message consists only of the name of the entry and the synchronization
-control representing state delete.  The new client copy can be
-determined by adding, modifying, and removing entries according to
-the synchronization control attached to the {{SearchResultEntry}}
-message.
-
-In the case that the LDAP Sync server maintains a history store and
-can determine which entries are scoped out of the client copy since
-the last synchronization time, the server can use the delete phase.
-If the server does not maintain any history store, cannot determine
-the scoped-out entries from the history store, or the history store
-does not cover the outdated synchronization state of the client,
-the server should use the present phase.  The use of the present
-phase is much more efficient than a full content reload in terms
-of the synchronization traffic.  To reduce the synchronization
-traffic further, the LDAP Sync protocol also provides several
-optimizations such as the transmission of the normalized {{EX:entryUUID}}s
-and the transmission of multiple {{EX:entryUUIDs}} in a single
-{{syncIdSet}} message.
-
-At the end of the {{refreshOnly}} synchronization, the server sends
-a synchronization cookie to the client as a state indicator of the
-client copy after the synchronization is completed.  The client
-will present the received cookie when it requests the next incremental
-synchronization to the server.
-
-When {{refreshAndPersist}} synchronization is used, the server sends
-a synchronization cookie at the end of the refresh stage by sending
-a Sync Info message with TRUE refreshDone.  It also sends a
-synchronization cookie by attaching it to {{SearchResultEntry}}
-generated in the persist stage of the synchronization search. During
-the persist stage, the server can also send a Sync Info message
-containing the synchronization cookie at any time the server wants
-to update the client-side state indicator.  The server also updates
-a synchronization indicator of the client at the end of the persist
-stage.
-
-In the LDAP Sync protocol, entries are uniquely identified by the
-{{EX:entryUUID}} attribute value. It can function as a reliable
-identifier of the entry. The DN of the entry, on the other hand,
-can be changed over time and hence cannot be considered as the
-reliable identifier.  The {{EX:entryUUID}} is attached to each
-{{SearchResultEntry}} or {{SearchResultReference}} as a part of the
-synchronization control.
-
-
-H2: Syncrepl Details
-
-The syncrepl engine utilizes both the {{refreshOnly}} and the
-{{refreshAndPersist}} operations of the LDAP Sync protocol.  If a
-syncrepl specification is included in a database definition,
-{{slapd}}(8) launches a syncrepl engine as a {{slapd}}(8) thread
-and schedules its execution. If the {{refreshOnly}} operation is
-specified, the syncrepl engine will be rescheduled at the interval
-time after a synchronization operation is completed.  If the
-{{refreshAndPersist}} operation is specified, the engine will remain
-active and process the persistent synchronization messages from the
-provider.
-
-The syncrepl engine utilizes both the present phase and the delete
-phase of the refresh synchronization. It is possible to configure
-a per-scope session log in the provider server which stores the
-{{EX:entryUUID}}s of a finite number of entries deleted from a
-replication content.  Multiple replicas of single provider content
-share the same per-scope session log. The syncrepl engine uses the
-delete phase if the session log is present and the state of the
-consumer server is recent enough that no session log entries are
-truncated after the last synchronization of the client.  The syncrepl
-engine uses the present phase if no session log is configured for
-the replication content or if the consumer replica is too outdated
-to be covered by the session log.  The current design of the session
-log store is memory based, so the information contained in the
-session log is not persistent over multiple provider invocations.
-It is not currently supported to access the session log store by
-using LDAP operations. It is also not currently supported to impose
-access control to the session log.
-
-As a further optimization, even in the case the synchronization
-search is not associated with any session log, no entries will be
-transmitted to the consumer server when there has been no update
-in the replication context.
-
-The syncrepl engine, which is a consumer-side replication engine,
-can work with any backends. The LDAP Sync provider can be configured
-as an overlay on any backend, but works best with the {{back-bdb}}
-or {{back-hdb}} backend.
-
-The LDAP Sync provider maintains a {{EX:contextCSN}} for each
-database as the current synchronization state indicator of the
-provider content.  It is the largest {{EX:entryCSN}} in the provider
-context such that no transactions for an entry having smaller
-{{EX:entryCSN}} value remains outstanding.  The {{EX:contextCSN}}
-could not just be set to the largest issued {{EX:entryCSN}} because
-{{EX:entryCSN}} is obtained before a transaction starts and
-transactions are not committed in the issue order.
-
-The provider stores the {{EX:contextCSN}} of a context in the
-{{EX:contextCSN}} attribute of the context suffix entry. The attribute
-is not written to the database after every update operation though;
-instead it is maintained primarily in memory. At database start
-time the provider reads the last saved {{EX:contextCSN}} into memory
-and uses the in-memory copy exclusively thereafter. By default,
-changes to the {{EX:contextCSN}} as a result of database updates
-will not be written to the database until the server is cleanly
-shut down. A checkpoint facility exists to cause the contextCSN to
-be written out more frequently if desired.
-
-Note that at startup time, if the provider is unable to read a
-{{EX:contextCSN}} from the suffix entry, it will scan the entire
-database to determine the value, and this scan may take quite a
-long time on a large database. When a {{EX:contextCSN}} value is
-read, the database will still be scanned for any {{EX:entryCSN}}
-values greater than it, to make sure the {{EX:contextCSN}} value
-truly reflects the greatest committed {{EX:entryCSN}} in the database.
-On databases which support inequality indexing, setting an eq index
-on the {{EX:entryCSN}} attribute and configuring {{contextCSN}}
-checkpoints will greatly speed up this scanning step.
-
-If no {{EX:contextCSN}} can be determined by reading and scanning
-the database, a new value will be generated. Also, if scanning the
-database yielded a greater {{EX:entryCSN}} than was previously
-recorded in the suffix entry's {{EX:contextCSN}} attribute, a
-checkpoint will be immediately written with the new value.
-
-The consumer also stores its replica state, which is the provider's
-{{EX:contextCSN}} received as a synchronization cookie, in the
-{{EX:contextCSN}} attribute of the suffix entry.  The replica state
-maintained by a consumer server is used as the synchronization state
-indicator when it performs subsequent incremental synchronization
-with the provider server. It is also used as a provider-side
-synchronization state indicator when it functions as a secondary
-provider server in a cascading replication configuration.  Since
-the consumer and provider state information are maintained in the
-same location within their respective databases, any consumer can
-be promoted to a provider (and vice versa) without any special
-actions.
-
-Because a general search filter can be used in the syncrepl
-specification, some entries in the context may be omitted from the
-synchronization content.  The syncrepl engine creates a glue entry
-to fill in the holes in the replica context if any part of the
-replica content is subordinate to the holes. The glue entries will
-not be returned in the search result unless {{ManageDsaIT}} control
-is provided.
-
-Also as a consequence of the search filter used in the syncrepl
-specification, it is possible for a modification to remove an entry
-from the replication scope even though the entry has not been deleted
-on the provider. Logically the entry must be deleted on the consumer
-but in {{refreshOnly}} mode the provider cannot detect and propagate
-this change without the use of the session log.
-
-
-H2: Configuring Syncrepl
-
-Because syncrepl is a consumer-side replication engine, the syncrepl
-specification is defined in {{slapd.conf}}(5) of the consumer
-server, not in the provider server's configuration file.  The initial
-loading of the replica content can be performed either by starting
-the syncrepl engine with no synchronization cookie or by populating
-the consumer replica by adding an {{TERM:LDIF}} file dumped as a
-backup at the provider.
-
-When loading from a backup, it is not required to perform the initial
-loading from the up-to-date backup of the provider content. The
-syncrepl engine will automatically synchronize the initial consumer
-replica to the current provider content. As a result, it is not
-required to stop the provider server in order to avoid the replica
-inconsistency caused by the updates to the provider content during
-the content backup and loading process.
-
-When replicating a large scale directory, especially in a bandwidth
-constrained environment, it is advised to load the consumer replica
-from a backup instead of performing a full initial load using
-syncrepl.
-
-
-H3: Set up the provider slapd
-
-The provider is implemented as an overlay, so the overlay itself
-must first be configured in {{slapd.conf}}(5) before it can be
-used. The provider has only two configuration directives, for setting
-checkpoints on the {{EX:contextCSN}} and for configuring the session
-log.  Because the LDAP Sync search is subject to access control,
-proper access control privileges should be set up for the replicated
-content.
-
-The {{EX:contextCSN}} checkpoint is configured by the
-
->	syncprov-checkpoint <ops> <minutes>
-
-directive. Checkpoints are only tested after successful write
-operations.  If {{<ops>}} operations or more than {{<minutes>}}
-time has passed since the last checkpoint, a new checkpoint is
-performed.
-
-The session log is configured by the
-
->	syncprov-sessionlog <size>
-
-directive, where {{<size>}} is the maximum number of session log
-entries the session log can record. When a session log is configured,
-it is automatically used for all LDAP Sync searches within the
-database.
-
-Note that using the session log requires searching on the {{entryUUID}}
-attribute. Setting an eq index on this attribute will greatly benefit
-the performance of the session log on the provider.
-
-A more complete example of the {{slapd.conf}}(5) content is thus:
-
->	database bdb
->	suffix dc=Example,dc=com
->	rootdn dc=Example,dc=com
->	directory /var/ldap/db
->	index objectclass,entryCSN,entryUUID eq
->
->	overlay syncprov
->	syncprov-checkpoint 100 10
->	syncprov-sessionlog 100
-
-
-H3: Set up the consumer slapd
-
-The syncrepl replication is specified in the database section of
-{{slapd.conf}}(5) for the replica context.  The syncrepl engine
-is backend independent and the directive can be defined with any
-database type.
-
->	database hdb
->	suffix dc=Example,dc=com
->	rootdn dc=Example,dc=com
->	directory /var/ldap/db
->	index objectclass,entryCSN,entryUUID eq
->
->	syncrepl rid=123
->		provider=ldap://provider.example.com:389
->		type=refreshOnly
->		interval=01:00:00:00
->		searchbase="dc=example,dc=com"
->		filter="(objectClass=organizationalPerson)"
->		scope=sub
->		attrs="cn,sn,ou,telephoneNumber,title,l"
->		schemachecking=off
->		bindmethod=simple
->		binddn="cn=syncuser,dc=example,dc=com"
->		credentials=secret
-
-In this example, the consumer will connect to the provider {{slapd}}(8)
-at port 389 of {{FILE:ldap://provider.example.com}} to perform a
-polling ({{refreshOnly}}) mode of synchronization once a day.  It
-will bind as {{EX:cn=syncuser,dc=example,dc=com}} using simple
-authentication with password "secret".  Note that the access control
-privilege of {{EX:cn=syncuser,dc=example,dc=com}} should be set
-appropriately in the provider to retrieve the desired replication
-content. Also the search limits must be high enough on the provider
-to allow the syncuser to retrieve a complete copy of the requested
-content.  The consumer uses the rootdn to write to its database so
-it always has full permissions to write all content.
-
-The synchronization search in the above example will search for the
-entries whose objectClass is organizationalPerson in the entire
-subtree rooted at {{EX:dc=example,dc=com}}. The requested attributes
-are {{EX:cn}}, {{EX:sn}}, {{EX:ou}}, {{EX:telephoneNumber}},
-{{EX:title}}, and {{EX:l}}. The schema checking is turned off, so
-that the consumer {{slapd}}(8) will not enforce entry schema
-checking when it process updates from the provider {{slapd}}(8).
-
-For more detailed information on the syncrepl directive, see the
-{{SECT:syncrepl}} section of {{SECT:The slapd Configuration File}}
-chapter of this admin guide.
-
-
-H3: Start the provider and the consumer slapd
-
-The provider {{slapd}}(8) is not required to be restarted.
-{{contextCSN}} is automatically generated as needed: it might be
-originally contained in the {{TERM:LDIF}} file, generated by
-{{slapadd}} (8), generated upon changes in the context, or generated
-when the first LDAP Sync search arrives at the provider.  If an
-LDIF file is being loaded which did not previously contain the
-{{contextCSN}}, the {{-w}} option should be used with {{slapadd}}
-(8) to cause it to be generated. This will allow the server to
-startup a little quicker the first time it runs.
-
-When starting a consumer {{slapd}}(8), it is possible to provide
-a synchronization cookie as the {{-c cookie}} command line option
-in order to start the synchronization from a specific state.  The
-cookie is a comma separated list of name=value pairs. Currently
-supported syncrepl cookie fields are {{csn=<csn>}} and {{rid=<rid>}}.
-{{<csn>}} represents the current synchronization state of the
-consumer replica.  {{<rid>}} identifies a consumer replica locally
-within the consumer server. It is used to relate the cookie to the
-syncrepl definition in {{slapd.conf}}(5) which has the matching
-replica identifier.  The {{<rid>}} must have no more than 3 decimal
-digits.  The command line cookie overrides the synchronization
-cookie stored in the consumer replica database.
diff --git a/doc/guide/admin/title.sdf b/doc/guide/admin/title.sdf
index 066cec4825..74e47cee72 100644
--- a/doc/guide/admin/title.sdf
+++ b/doc/guide/admin/title.sdf
@@ -1,5 +1,5 @@
 # $OpenLDAP$
-# Copyright 1999--2005, The OpenLDAP Foundation, All Rights Reserved.
+# Copyright 1999-2007, The OpenLDAP Foundation, All Rights Reserved.
 # COPYING RESTRICTIONS APPLY, see COPYRIGHT.
 #
 # Document: OpenLDAP Administrator's Guide
diff --git a/doc/guide/admin/tls.sdf b/doc/guide/admin/tls.sdf
index 9c4cf58e90..78725a6951 100644
--- a/doc/guide/admin/tls.sdf
+++ b/doc/guide/admin/tls.sdf
@@ -1,3 +1,4 @@
+# $OpenLDAP$
 # Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
 # COPYING RESTRICTIONS APPLY, see COPYRIGHT.
 
@@ -9,6 +10,8 @@ integrity and confidentiality protections and to support
 LDAP authentication using the {{TERM:SASL}} {{TERM:EXTERNAL}} mechanism. 
 TLS is defined in {{REF:RFC4346}}.
 
+Note: For generating certifcates, please reference {{URL:http://www.openldap.org/faq/data/cache/185.html}}
+
 H2: TLS Certificates
 
 TLS uses {{TERM:X.509}} certificates to carry client and server
@@ -178,7 +181,7 @@ be configured on a system-wide basis, they may all be overridden by
 individual users in their {{.ldaprc}} files.
 
 The LDAP Start TLS operation is used in LDAP to initiate TLS
-negotatation.  All OpenLDAP command line tools support a {{EX:-Z}}
+negotiation.  All OpenLDAP command line tools support a {{EX:-Z}}
 and {{EX:-ZZ}} flag to indicate whether a Start TLS operation is to
 be issued.  The latter flag indicates that the tool is to cease
 processing if TLS cannot be started while the former allows the
diff --git a/doc/guide/admin/troubleshooting.sdf b/doc/guide/admin/troubleshooting.sdf
new file mode 100644
index 0000000000..18544c7fa4
--- /dev/null
+++ b/doc/guide/admin/troubleshooting.sdf
@@ -0,0 +1,89 @@
+# $OpenLDAP$
+# Copyright 2007 The OpenLDAP Foundation, All Rights Reserved.
+# COPYING RESTRICTIONS APPLY, see COPYRIGHT.
+
+H1: Troubleshooting
+
+If you're having trouble using OpenLDAP, get onto the
+OpenLDAP-Software mailing list. 
+
+Browse the list archives at {{URL:http://www.openldap.org/lists/}} 
+
+Chances are the problem has been solved and explained in detail many times before.
+
+H2: User or Software errors?
+
+More often than not, an error is caused by a configuration problem or a misunderstanding
+of what you are trying to implement and/or achieve. 
+
+Sometimes you may encounter an actual OpenLDAP bug, in which case please visit 
+our Issue Tracking system {{URL:http://www.openldap.org/its/}} and report it there, 
+providing as much information as possible.
+
+Note: Our Issue Tracking system is {{B:NOT}} for OpenLDAP {{B:Support}}, please join our
+mailing Lists: {{URL:http://www.openldap.org/lists/}} for that
+
+We will now attempt to discuss common user errors
+
+H2: Checklist
+
+The following checklist can help track down your problem. Please try to use if {{B:before}}
+posting to the list, or in the rare circumstances of reporting a bug.
+
+.{{S: }}
+^{{B: Use the {{slaptest}} tool to verify configurations before starting {{slapd}}}}
+
+.{{S: }}
++{{B: Verify that {{slapd}} is listening to the specified port(s) (389 and 636, generally) before trying the {{ldapsearch}}}}
+
+.{{S: }}
++{{B: Can you issue an {{ldapsearch}}?}}
+
+.{{S: }}
++{{B: If not, have you enabled complex ACLs without fully understanding them?}}
+
+.{{S: }}
++{{B: Do you have a system wide LDAP setting pointing to the wrong LDAP Directory?}}
+
+.{{S: }}
++{{B: Are you using TLS?}}
+
+.{{S: }}
++{{B: Have your certificates expired?}}
+
+
+H2: 3rd party software error
+
+The OpenLDAP Project only supports OpenLDAP software. 
+
+You may however seek commercial support ({{URL:http://www.openldap.org/support/}}) or join 
+the general LDAP forum for non-commercial discussions and information relating to LDAP at: 
+{{URL:http://www.umich.edu/~dirsvcs/ldap/mailinglist.html}}
+
+
+H2: How to contact the OpenLDAP Project
+
+* Mailing Lists: {{URL:http://www.openldap.org/lists/}}
+* Project: {{URL: http://www.openldap.org/project/}}
+* Issue Tracking: {{URL:http://www.openldap.org/its/}}
+
+
+H2: How to present your problem
+
+
+H2: Debugging {{slapd}}(8)
+
+After reading through the above sections and before e-mailing the OpenLDAP lists, you
+might want to try out some of the following to track down the cause of your problems:
+
+* Loglevel 256 is generally a good first loglevel to try for getting 
+  information useful to list members on issues
+* Running {{slapd -d -1}} can often track down fairly simple issues, such as 
+  missing schemas and incorrect file permissions for the {{slapd}} user to things like certs
+
+H2: Commercial Support
+
+The firms listed at {{URL:http://www.openldap.org/support/}} offer technical support services catering to OpenLDAP community. 
+
+The listing of any given firm should not be viewed as an endorsement or recommendation of any kind, nor as otherwise indicating 
+there exists a business relationship or an affiliation between any listed firm and the OpenLDAP Foundation or the OpenLDAP Project or its contributors.
diff --git a/doc/guide/admin/tuning.sdf b/doc/guide/admin/tuning.sdf
index af73744755..54dd7e6951 100644
--- a/doc/guide/admin/tuning.sdf
+++ b/doc/guide/admin/tuning.sdf
@@ -2,89 +2,344 @@
 # Copyright 1999-2007 The OpenLDAP Foundation, All Rights Reserved.
 # COPYING RESTRICTIONS APPLY, see COPYRIGHT.
 
-H1: Performance Tuning
+H1: Tuning
 
-Note: this chapter needs to be updated to discuss BDB tuning.
+This is perhaps one of the most important chapters in the guide, because if 
+you have not tuned {{slapd}}(8) correctly or grasped how to design your
+directory and environment, you can expect very poor performance.
 
-There are several things you can do to tune the performance of
-slapd for your system. Most of them have to do with the LDBM
-backend. LDBM uses an index mechanism to store and retrieve
-information in slapd. Each entry is assigned a unique ID, used to
-refer to the entry in the indexes. A search for entries with a
-surname of "Jensen", for example, would look up the index entry
-"=JENSEN" in the surname index. The data returned is a list of
-IDs of entries having that value for the surname attribute. We
-have found several things to be useful in improving the
-performance of this indexing scheme, especially on modify
-operations.
+Reading, understanding and experimenting using the instructions and information
+in the following sections, will enable you to fully understand how to tailor 
+your directory server to your specific requirements.
 
+It should be noted that the following information has been collected over time
+from our community based FAQ. So obviously the benefit of this real world experience
+and advice should be of great value to the reader.
 
 
-H2: The allIDs threshold
+H2: Performance Factors
 
-Some index entries become so large as to be useless. For
-example, if every entry in your database is a person entry, the
-"=PERSON" index entry in the objectclass index contains every
-entry. This returns very little useful information, and can cause
-significant delays, especially on updates. To alleviate this
-problem, we have introduced the idea of an allIDs index entry.
+Various factors can play a part in how your directory performs on your chosen 
+hardware and environment. We will attempt to discuss these here.
 
-The allIDs entry stands for a real index entry containing the IDs
-of every entry in the database, but it takes up very little space,
-never needs updating, and can be manipulated quickly and
-efficiently. The trade-off is that it does not prune the set of
-candidate entries at all during a search. This must be done
-using other, more "high-powered" index entries.
 
-You can set the minimum number of IDs that an index entry may
-contain before it turns into an allIDs block by changing the
-{{EX: SLAPD_LDBM_MIN_MAXIDS}} variable in the
-{{EX: include/ldapconfig.h}} file. The actual number is determined at
-runtime by the LDBM backend, depending on the block size of
-the underlying device (i.e., the number you provide is rounded up
-to the nearest multiple of a block size).
+H3: Memory
 
+Scale your cache to use available memory and increase system memory if you can.
 
+More info here.
 
-H2: The entry cache
 
-The LDBM backend can be configured to keep a cache of
-entries in memory. Since the LDBM database spends much of its
-time reading entries from the id2entry file into memory, this cache
-can greatly speed performance. The trade-off is that the cache
-uses some extra memory. The default cache size is 1000
-entries. See the discussion of the cachesize option in Section
-5.2.3 on LDBM configuration.
+H3: Disks
 
+Use fast subsystems. Put each database and logs on separate disks.
 
+Example showing config settings
 
-H2: The DB cache
 
-The LDBM backend uses a number of disk-based index files. If
-the underlying hash or B-tree package supports in-memory
-caching of these files, performance can be greatly improved,
-especially on modifies. The size of this in-memory file cache is
-given by the dbcachesize option, discussed in more detail in
-section 5.2.3 on LDBM configuration. The default {{EX: dbcachesize}} is
-100K.
+H3: Network Topology
 
+http://www.openldap.org/faq/data/cache/363.html
 
+Drawing here.
 
-H2: Maintain the right indices
 
-Finally, one of the best performance tune-ups you can do is to
-make sure you are maintaining the right indices. Too few indices
-can lead to poor search performance. Too many indices can
-lead to poor update performance. For example, the LDBM
-backend would be perfectly happy to maintain substring and
-approximate indices for the {{EX: objectclass attribute}}, but this would
-not be useful and would just slow down update operations. If
-your database has many entries and is handling queries for
-substring equality on the surname attribute, you should make
-sure to maintain a surname substring index so these queries are
-answered quickly.
+H3: Directory Layout Design
 
-So, take a look at the index lines in your slapd configuration file to
-ensure that only those indices that make sense and are needed
-are being maintained.
+Reference to other sections and good/bad drawing here.
 
+
+H3: Expected Usage
+
+Discussion.
+
+
+H2: Indexes
+
+H3: Understanding how a search works
+
+If you're searching on a filter that has been indexed, then the search reads 
+the index and pulls exactly the entries that are referenced by the index. 
+If the filter term has not been indexed, then the search must read every single
+ entry in the target scope and test to see if each entry matches the filter. 
+Obviously indexing can save a lot of work when it's used correctly.
+
+H3: What to index
+
+You should create indices to match the actual filter terms used in
+search queries. 
+
+>        index cn,sn,givenname,mail eq
+
+Each attribute index can be tuned further by selecting the set of index types to generate. For example, substring and approximate search for organizations (o) may make little sense (and isn't like done very often). And searching for {{userPassword}} likely makes no sense what so ever.
+
+General rule: don't go overboard with indexes. Unused indexes must be maintained and hence can only slow things down. 
+
+See {{slapd.conf}}(8) and {{slapdindex}}(8) for more information
+
+
+H3: Presence indexing
+
+If your client application uses presence filters and if the
+target attribute exists on the majority of entries in your target scope, then
+all of those entries are going to be read anyway, because they are valid
+members of the result set. In a subtree where 100% of the
+entries are going to contain the same attributes, the presence index does
+absolutely NOTHING to benefit the search, because 100% of the entries match
+that presence filter. 
+
+So the resource cost of generating the index is a
+complete waste of CPU time, disk, and memory. Don't do it unless you know
+that it will be used, and that the attribute in question occurs very
+infrequently in the target data. 
+
+Almost no applications use presence filters in their search queries. Presence
+indexing is pointless when the target attribute exists on the majority of
+entries in the database. In most LDAP deployments, presence indexing should
+not be done, it's just wasted overhead.
+
+See the {{Logging}} section below on what to watch our for if you have a frequently searched
+for attribute that is unindexed.
+
+
+H2: Logging
+
+H3: What log level to use
+
+The default of {{loglevel 256}} is really the best bet. There's a corollary to 
+this when problems *do* arise, don't try to trace them using syslog. 
+Use the debug flag instead, and capture slapd's stderr output. syslog is too 
+slow for debug tracing, and it's inherently lossy - it will throw away messages when it
+can't keep up.
+
+Contrary to popular belief, {{loglevel 0}} is not ideal for production as you 
+won't be able to track when problems first arise.
+
+H3: What to watch out for
+
+The most common message you'll see that you should pay attention to is:
+
+>  "<= bdb_equality_candidates: (foo) index_param failed (18)"
+
+That means that some application tried to use an equality filter ({{foo=<somevalue>}}) 
+and attribute {{foo}} does not have an equality index. If you see a lot of these
+messages, you should add the index. If you see one every month or so, it may
+be acceptable to ignore it.
+
+The default syslog level is 256 which logs the basic parameters of each
+request; it usually produces 1-3 lines of output. On Solaris and systems that
+only provide synchronous syslog, you may want to turn it off completely, but
+usually you want to leave it enabled so that you'll be able to see index
+messages whenever they arise. On Linux you can configure syslogd to run
+asynchronously, in which case the performance hit for moderate syslog traffic
+pretty much disappears.
+
+H3: Improving throughput
+
+You can improve logging performance on some systems by configuring syslog not 
+to sync the file system with every write ({{man syslogd/syslog.conf}}). In Linux, 
+you can prepend the log file name with a "-" in {{syslog.conf}}. For example, 
+if you are using the default LOCAL4 logging you could try:
+
+>   # LDAP logs
+>   LOCAL4.*         -/var/log/ldap
+
+For syslog-ng, add or modify the following line in {{syslog-ng.conf}}:
+
+   options { sync(n); };
+
+where n is the number of lines which will be buffered before a write.
+
+
+H2: BDB/HDB Database Caching
+
+We all know what caching is, don't we? 
+
+In brief, "A cache is a block of memory for temporary storage of data likely 
+to be used again" - {{URL:http://en.wikipedia.org/wiki/Cache}}
+
+There are 3 types of caches, BerkeleyDB's own cache, {{slapd}}(8) 
+entry cache and {{TERM:IDL}} (IDL) cache.
+
+
+H3: Berkeley DB Cache
+
+BerkeleyDB's own data cache operates on page-sized blocks of raw data.
+
+Note that while the {{TERM:BDB}} cache is just raw chunks of memory and 
+configured as a memory size, the {{slapd}}(8) entry cache holds parsed entries, 
+and the size of each entry is variable. 
+
+There is also an IDL cache which is used for Index Data Lookups. 
+If you can fit all of your database into slapd's entry cache, and all of your 
+index lookups fit in the IDL cache, that will provide the maximum throughput. 
+
+If not, but you can fit the entire database into the BDB cache, then you 
+should do that and shrink the slapd entry cache as appropriate. 
+
+Failing that, you should balance the BDB cache against the entry cache.
+
+It is worth noting that it is not absolutely necessary to configure a BerkeleyDB 
+cache equal in size to your entire database. All that you need is a cache 
+that's large enough for your "working set." 
+
+That means, large enough to hold all of the most frequently accessed data, 
+plus a few less-frequently accessed items.
+
+ORACLE LINKS HERE
+
+H4: Calculating Cachesize
+
+The back-bdb database lives in two main files, {{F:dn2id.bdb}} and {{F:id2entry.bdb}}. 
+These are B-tree databases. We have never documented the back-bdb internal 
+layout before, because it didn't seem like something anyone should have to worry 
+about, nor was it necessarily cast in stone. But here's how it works today, 
+in OpenLDAP 2.4.
+
+A B-tree is a balanced tree; it stores data in its leaf nodes and bookkeeping 
+data in its interior nodes (If you don't know what tree data structures look
+ like in general, Google for some references, because that's getting far too 
+elementary for the purposes of this discussion).
+
+For decent performance, you need enough cache memory to contain all the nodes 
+along the path from the root of the tree down to the particular data item 
+you're accessing. That's enough cache for a single search. For the general case, 
+you want enough cache to contain all the internal nodes in the database. 
+
+>   db_stat -d
+
+will tell you how many internal pages are present in a database. You should 
+check this number for both dn2id and id2entry.
+
+Also note that {{id2entry}} always uses 16KB per "page", while {{dn2id}} uses whatever 
+the underlying filesystem uses, typically 4 or 8KB. To avoid thrashing the, 
+your cache must be at least as large as the number of internal pages in both 
+the {{dn2id}} and {{id2entry}} databases, plus some extra space to accommodate the actual 
+leaf data pages.
+
+For example, in my OpenLDAP 2.4 test database, I have an input LDIF file that's 
+about 360MB. With the back-hdb backend this creates a {{dn2id.bdb}} that's 68MB, 
+and an {{id2entry}} that's 800MB. db_stat tells me that {{dn2id}} uses 4KB pages, has 
+433 internal pages, and 6378 leaf pages. The id2entry uses 16KB pages, has 52 
+internal pages, and 45912 leaf pages. In order to efficiently retrieve any 
+single entry in this database, the cache should be at least
+
+>   (433+1) * 4KB + (52+1) * 16KB in size: 1736KB + 848KB =~ 2.5MB.
+
+This doesn't take into account other library overhead, so this is even lower 
+than the barest minimum. The default cache size, when nothing is configured, 
+is only 256KB. 
+
+This 2.5MB number also doesn't take indexing into account. Each indexed attribute 
+uses another database file of its own, using a Hash structure. 
+
+Unlike the B-trees, where you only need to touch one data page to find an entry 
+of interest, doing an index lookup generally touches multiple keys, and the 
+point of a hash structure is that the keys are evenly distributed across the 
+data space. That means there's no convenient compact subset of the database that 
+you can keep in the cache to insure quick operation, you can pretty much expect 
+references to be scattered across the whole thing. My strategy here would be to 
+provide enough cache for at least 50% of all of the hash data. 
+
+>   (Number of hash buckets + number of overflow pages + number of duplicate pages) * page size / 2.
+
+The objectClass index for my example database is 5.9MB and uses 3 hash buckets 
+and 656 duplicate pages. So:
+
+>   ( 3 + 656 ) * 4KB / 2 =~ 1.3MB.
+
+With only this index enabled, I'd figure at least a 4MB cache for this backend. 
+(Of course you're using a single cache shared among all of the database files, 
+so the cache pages will most likely get used for something other than what you 
+accounted for, but this gives you a fighting chance.)
+
+With this 4MB cache I can slapcat this entire database on my 1.3GHz PIII in 
+1 minute, 40 seconds. With the cache doubled to 8MB, it still takes the same 1:40s. 
+Once you've got enough cache to fit the B-tree internal pages, increasing it 
+further won't have any effect until the cache really is large enough to hold 
+100% of the data pages. I don't have enough free RAM to hold all the 800MB 
+id2entry data, so 4MB is good enough.
+
+With back-bdb and back-hdb you can use "db_stat -m" to check how well the 
+database cache is performing. 
+
+
+H3: {{slapd}}(8) Entry Cache
+
+The {{slapd}}(8) entry cache operates on decoded entries. The rationale - entries 
+in the entry cache can be used directly, giving the fastest response. If an entry 
+isn't in the entry cache but can be extracted from the BDB page cache, that will 
+avoid an I/O but it will still require parsing, so this will be slower. 
+
+If the entry is in neither cache then BDB will have to flush some of its current 
+cached pages and bring in the needed pages, resulting in a couple of expensive 
+I/Os as well as parsing.
+
+As far as balancing the entry cache vs the BDB cache - parsed entries in memory 
+are generally about twice as large as they are on disk. 
+
+As we have already mentioned, not having a proper database cache size will 
+cause performance issues. These issues are not an indication of corruption 
+occurring in the database. It is merely the fact that the cache is thrashing 
+itself that causes performance/response time to slowdown. 
+
+
+MOVE BELOW AROUND:
+
+
+If you want to setup the cache size, please read:
+
+ (Xref) How do I configure the BDB backend?
+ (Xref) What are the DB_CONFIG configuration directives?
+ http://www.sleepycat.com/docs/utility/db_recover.html
+
+A default config can be found in the answer:
+
+ (Xref) What are the DB_CONFIG configuration directives?
+
+just change the set_lg_dir to point to your .log directory or comment that line.
+
+Quick guide:
+* Create a DB_CONFIG file in your ldap home directory (/var/lib/ldap/DB_CONFIG) with the correct "set_cachesize" value
+* stop your ldap server and run db_recover -h /var/lib/ldap
+* start your ldap server and check the new cache size with:
+
+  db_stat -h /var/lib/ldap -m | head -n 2
+
+* this procedure is only needed if you use OpenLDAP 2.2 with the BDB or HDB backends; In OpenLDAP 2.3 DB recovery is performed automatically whenever the DB_CONFIG file is changed or when an unclean shutdown is detected.
+
+
+--On Tuesday, February 22, 2005 12:15 PM -0500 Dusty Doris <openldap@mail.doris.cc> wrote:
+
+    Few questions, if you change the cachesize and idlecachesize entries, do
+    you have to do anything special aside from restarting slapd, such as run
+    slapindex or db_recover?
+
+
+    Also, is there any way to tell how much memory these caches are taking up
+    to make sure they are not set too large?  What happens if you set your
+    cachesize too large and you don't have enough available memory to store
+    these?  Will that cause an issue with openldap, or will it just not cache
+    those entries that would make it exceed its available memory.  Will it
+    just use some sort of FIFO on those caches?
+
+
+It will consume the memory resources of your system, and likely cause issues.
+
+    Finally, what do most people try to achieve with these values?  Would the
+    goal be to make these as big as the directory?  So, if I have 400,000 dn's
+    in my directory, would it be safe to set these at 400000 or would
+    something like 20,000 be good enough to get a nice performance increase?
+
+
+I try to cache the most actively used entries. Unless you expect all 400,000 entries of your DB to be accessed regularly, there is no need to cache that many entries. My entry cache is set to 20,000 (out of a little over 400,000 entries).
+
+The idlcache has to do with how many unique result sets of searches you want to store in memory. Setting up this cache will allow your most frequently placed searches to get results much faster, but I doubt you want to try and cache the results of every search that hits your system. ;)
+
+--Quanah
+
+
+H3: {{TERM:IDL}} Cache
+
+
+http://www.openldap.org/faq/data/cache/1076.html
diff --git a/doc/guide/plain.sdf b/doc/guide/plain.sdf
index 57c59b4c9a..4e8c538589 100644
--- a/doc/guide/plain.sdf
+++ b/doc/guide/plain.sdf
@@ -13,7 +13,7 @@
 !macro HTML_FOOTER
 {{INLINE:<FONT COLOR="#808080" FACE="Arial,Verdana,Helvetica" SIZE="1">}}
 {{INLINE:<B>________________<BR><SMALL>}}
-[[c]]  Copyright 2005,
+[[c]]  Copyright 2007,
 {{INLINE:<A HREF="/foundation/">OpenLDAP Foundation</A>}},
 {{EMAIL: info@OpenLDAP.org}}
 {{INLINE:</SMALL><BR></B></FONT>}}
diff --git a/doc/guide/preamble.sdf b/doc/guide/preamble.sdf
index 4bdff5c537..46562992da 100644
--- a/doc/guide/preamble.sdf
+++ b/doc/guide/preamble.sdf
@@ -132,7 +132,7 @@ CVS|http://www.cvshome.org/
 Cyrus|http://cyrusimap.web.cmu.edu/generalinfo.html
 Cyrus SASL|http://asg.web.cmu.edu/sasl/sasl-library.html
 GNU|http://www.gnu.org/software/
-GDBM|http://www.gnu.org/software/gdbm/
+GnuTLS|http://www.gnu.org/software/gnutls/
 Heimdal|http://www.pdc.kth.se/heimdal/
 JLDAP|http://www.openldap.org/jldap/
 MIT Kerberos|http://web.mit.edu/kerberos/www/
@@ -142,7 +142,6 @@ OpenLDAP ITS|http://www.openldap.org/its/
 OpenLDAP Software|http://www.openldap.org/software/
 OpenSSL|http://www.openssl.org/
 Perl|http://www.perl.org/
-TCL|http://www.tcl.tk/
 SDF|http://search.cpan.org/src/IANC/sdf-2.001/doc/catalog.html
 UMLDAP|http://www.umich.edu/~dirsvcs/ldap/ldap.html
 !endblock
@@ -209,6 +208,7 @@ IDNA|Internationalized Domain Names in Applications
 IDN|Internationalized Domain Name
 ID|Identification
 ID|Identifier
+IDL|Index Data Lookups
 IP|Internet Protocol
 IPC|Inter-process communication
 IPsec|Internet Protocol Security
@@ -232,6 +232,7 @@ OSI|Open Systems Interconnect
 OTP|One Time Password
 PDU|Protocol Data Unit
 PEM|Privacy Enhanced eMail
+PEN|Private Enterprise Number
 PKCS|Public Key Cryptosystem
 PKI|Public Key Infrastructure
 PKIX|Public Key Infrastructure (X.509)
diff --git a/doc/guide/release/copyright.sdf b/doc/guide/release/copyright.sdf
index 204015082b..2050f462a6 100644
--- a/doc/guide/release/copyright.sdf
+++ b/doc/guide/release/copyright.sdf
@@ -55,9 +55,11 @@ Public License}}.
 
 
 !block nofill
-Portions [[copyright]] 1999-2005 Howard Y.H. Chu.
-Portions [[copyright]] 1999-2005 Symas Corporation.
+Portions [[copyright]] 1999-2007 Howard Y.H. Chu.
+Portions [[copyright]] 1999-2007 Symas Corporation.
 Portions [[copyright]] 1998-2003 Hallvard B. Furuseth.
+Portions [[copyright]] 2007 Gavin Henry
+Portions [[copyright]] 2007 Suretec Systems
 {{All rights reserved.}}
 !endblock
 
-- 
GitLab